我在Windows Apache服务器上安装了Mandrill PHP API . 当尝试使用以下代码发送电子邮件时,我收到错误:
Mandrill_HttpError - 对消息/发送模板的API调用失败:SSL证书问题:无法获取本地颁发者证书
我不清楚Mandrill如何连接到我的本地发行人证书 . 我的Web服务器确实有一个有效的证书,可以成功显示HTTPS页面 .
有任何想法吗?
$mandrill = new Mandrill('MyMandrillAPIKey');
$message = array(
'subject' => 'Test message',
'from_email' => 'MyEmailAddress',
'html' => '<p>this is a test message with Mandrill\'s PHP wrapper!.</p>',
'to' => array(array('email' => 'MyEmailAddress', 'name' => 'David Splat')),
'merge_vars' => array(array(
'rcpt' => 'MyEmailAddress',
'vars' =>
array(
array(
'name' => 'FIRSTNAME',
'content' => $fName),
array(
'name' => 'LASTNAME',
'content' => $lName)
))));
$template_name = 'MyTemplateName';
$template_content = array(
array(
'name' => 'main',
'content' => 'Hi *|FIRSTNAME|* *|LASTNAME|*, thanks for signing up.'),
array(
'name' => 'footer',
'content' => 'Copyright 2014.')
);
print_r($mandrill->messages->sendTemplate($template_name, $template_content, $message));
} catch(Mandrill_Error $e) {
// Mandrill errors are thrown as exceptions
echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
throw $e;
}
2 回答
您不需要关闭curl SSL选项,而是可以从http://curl.haxx.se/docs/caextract.html下载cacert.pem文件,然后将其包含在php.ini文件中
curl.cainfo="/exact/location/to/cacert.pem"
或者只是更改Mandrill.php文件中的行以使用它,如下所示 .
link to the post http://tutewall.com/ssl-certificate-problem-unable-to-get-local-issuer-certificate/
这是一个解决我的问题的变化 . 在Mandrill.php中,在调用curl_init()之后添加以下两行:
error in send email using Mandrill (php)的答案之一提出了这种方法