当前位置: 首页 > 知识库问答 >
问题:

Mandrill PHP无法获取本地颁发者SSL证书

公孙宇
2023-03-14

我已经在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个答案

桓风史
2023-03-14

这里有一个改变,解决了我的问题。在Mandrill.php在调用curl_init()之后添加这两行:

curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);

使用Mandrill(php)发送电子邮件时出错的一个答案建议了这种方法

施华奥
2023-03-14

您不需要关闭curl SSL选项,而是可以从下载cacert.pem文件http://curl.haxx.se/docs/caextract.html 然后将其包含在php.ini文件curl.cainfo=“/exact/location/to/cacert.pem”

或者简单地更改Mandrill.php文件中的行以使用它,如下所示。

curl_setopt ($this->ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
curl_setopt ($this->ch, CURLOPT_CAINFO, __DIR__ . "/cacert.pem")

链接到邮报http://tutewall.com/ssl-certificate-problem-unable-to-get-local-issuer-certificate/

 类似资料:
  • 我正在Windows7上运行PHP版本5.6.3作为XAMPP的一部分。 当我尝试使用Mandrill API时,我得到以下错误: 未捕获异常“Mandrill_HttpError”,消息为“API调用消息/send-template失败:SSL证书问题:无法获取本地颁发者证书” 我已经尝试了在StackOverflow上读到的所有内容,包括向php.ini文件添加以下内容: 当然可以从http:

  • 问题内容: 我正在Windows 7上将PHP版本5.6.3作为XAMPP的一部分运行。 当我尝试使用Mandrill API时,出现以下错误: 消息“ API调用消息/发送模板失败”的未捕获异常“ Mandrill_HttpError”:SSL证书问题:无法获取本地颁发者证书 我已经尝试了我在StackOverflow上阅读的所有内容,包括将以下内容添加到php.ini文件中: 当然,还可以从h

  • 我正在Windows服务器2016上的wamp上使用洋红色社区版2.2。每当我尝试登录以通过系统同步您的Magento市场购买时 “SSL 证书问题:无法获取本地颁发者证书” 我尝试了这个论坛中其他一些线程中提供的解决方案来下载cacert。pem并在php.ini中执行以下设置 curl . cainfo = " C:\ wamp 64 \ bin \ PHP \ PHP 7 . 1 . 9 \

  • 问题内容: 我在本地开发环境上使用WAMP,并尝试从信用卡中扣款,但收到错误消息: cURL错误60:SSL证书问题:无法获取本地颁发者证书 我在Google上进行了很多搜索,很多人建议我下载此文件:cacert.pem,将其放在某个位置,然后在php.ini中引用它。这是我的php.ini中的部分: 但是,即使多次重新启动服务器并更改了路径后,我仍然收到相同的错误消息。 我使用来自Apache模

  • 我在Google上搜索了很多,很多人建议我下载这个文件:cacert.pem,把它放在某个地方,并在我的php.ini中引用它。这是我的php.ini中的部分: 然而,即使在重新启动服务器几次并更改路径后,我也会得到相同的错误消息。 我使用Apache模块中的WAMP并启用ssl_module。在PGP扩展中,我启用了php_curl。 这是我正在运行的代码:

  • 我有一个问题...我在Gitlab中的代码,Azure运营模式下的管道。我使用经典编辑器。当我启动管道时,我有错误"致命:无法访问'致命:无法访问'https://my.repos.example:***. git/': SSL证书问题:无法获得本地颁发者证书"请帮帮我!