Sendgrid PHP 使用未定义常量 CURL_SSLVERSION_TLSv1_2
Sendgrid PHP Use of undefined constant CURL_SSLVERSION_TLSv1_2
我正在使用 Sendgrid API 通过 PHP 通过 HTTP 发送电子邮件。这是我的代码:
<?php
$url = 'https://api.sendgrid.com/';
$user = 'USER';
$pass = 'PASSWORD';
$params = array(
'api_user' => $user,
'api_key' => $pass,
'to' => 'TARGET',
'subject' => 'Kami Menanti Anda',
'from' => 'noreply@kompetisiindonesia.com',
);
$params['html'] = 'html message';
$params['text'] = $params['html'];
$request = $url.'api/mail.send.json';
// Generate curl request
$session = curl_init($request);
// Tell curl to use HTTP POST
curl_setopt ($session, CURLOPT_POST, true);
// Tell curl that this is the body of the POST
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
// Tell curl not to return headers, but do return the response
curl_setopt($session, CURLOPT_HEADER, false);
// Tell PHP not to use SSLv3 (instead opting for TLS)
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// obtain response
$response = curl_exec($session);
curl_close($session);
// print everything out
print_r($response);
但我收到此错误消息:
Notice: Use of undefined constant CURL_SSLVERSION_TLSv1_2 - assumed
'CURL_SSLVERSION_TLSv1_2' in
/opt/lampp/htdocs/oprek/sendgrid/sendviahttp.php on line 28
有人知道发生了什么事吗?
您的计算机上似乎安装了过时版本的 CURL。
CURL_SSLVERSION_TLSv1_2 (integer) Available since PHP 5.5.19 and 5.6.3
根据您的情况,您可以尝试使用代表常量的整数。在我们的例子中(CentOS6,使用 IUS PHP 5.3.23),常量不存在,但下面的工作正常..
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/");
curl_setopt($ch, CURLOPT_SSLVERSION, 6);
var_dump(curl_exec($ch));
if ( ! defined('CURL_SSLVERSION_TLSv1_2')) {
define('CURL_SSLVERSION_TLSv1_2', 6);
}
在前面加上上面的代码
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
此外,检查您的代码 运行 所在的名称空间。如果您有 TYPO3-command-controller,它的代码将 运行 在 \TYPO3 - 名称空间中。在常规命名空间中定义的常量必须在前面加上反斜杠,才能正确计算。
我正在使用 Sendgrid API 通过 PHP 通过 HTTP 发送电子邮件。这是我的代码:
<?php
$url = 'https://api.sendgrid.com/';
$user = 'USER';
$pass = 'PASSWORD';
$params = array(
'api_user' => $user,
'api_key' => $pass,
'to' => 'TARGET',
'subject' => 'Kami Menanti Anda',
'from' => 'noreply@kompetisiindonesia.com',
);
$params['html'] = 'html message';
$params['text'] = $params['html'];
$request = $url.'api/mail.send.json';
// Generate curl request
$session = curl_init($request);
// Tell curl to use HTTP POST
curl_setopt ($session, CURLOPT_POST, true);
// Tell curl that this is the body of the POST
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
// Tell curl not to return headers, but do return the response
curl_setopt($session, CURLOPT_HEADER, false);
// Tell PHP not to use SSLv3 (instead opting for TLS)
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// obtain response
$response = curl_exec($session);
curl_close($session);
// print everything out
print_r($response);
但我收到此错误消息:
Notice: Use of undefined constant CURL_SSLVERSION_TLSv1_2 - assumed 'CURL_SSLVERSION_TLSv1_2' in /opt/lampp/htdocs/oprek/sendgrid/sendviahttp.php on line 28
有人知道发生了什么事吗?
您的计算机上似乎安装了过时版本的 CURL。
CURL_SSLVERSION_TLSv1_2 (integer) Available since PHP 5.5.19 and 5.6.3
根据您的情况,您可以尝试使用代表常量的整数。在我们的例子中(CentOS6,使用 IUS PHP 5.3.23),常量不存在,但下面的工作正常..
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/");
curl_setopt($ch, CURLOPT_SSLVERSION, 6);
var_dump(curl_exec($ch));
if ( ! defined('CURL_SSLVERSION_TLSv1_2')) {
define('CURL_SSLVERSION_TLSv1_2', 6);
}
在前面加上上面的代码
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
此外,检查您的代码 运行 所在的名称空间。如果您有 TYPO3-command-controller,它的代码将 运行 在 \TYPO3 - 名称空间中。在常规命名空间中定义的常量必须在前面加上反斜杠,才能正确计算。