Mandrill PHP cannot get SSL certificate for local issuer

I installed the Mandrill API on my Windows Apache server. When I try to send an email using the code below, I get an error:

Mandrill_HttpError - API call / send pattern failed: SSL certificate problem: local issuer certificate could not be obtained

I don’t understand how Mandrill connects to my local issuer certificate. My web server does have a valid certificate and can successfully display HTTPS pages.

Any ideas?

$mandrill = new Mandrill('MyMandrillAPIKey'); $message = array( 'subject' => 'Test message', 'from_email' => 'MyEmailAddress', 'html' => '<p>this is a test message with Mandrill\ 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; } 
+6
source share
2 answers

You do not need to disable the curl SSL parameter, instead you can download the cacert.pem file from http://curl.haxx.se/docs/caextract.html and then enable this either in the php.ini file curl.cainfo="/exact/location/to/cacert.pem"

or just change the lines in the Mandrill.php file to use it as shown below.

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

link to the post http://tutewall.com/ssl-certificate-problem-unable-to-get-local-issuer-certificate/

+15
source

This is what changed my problem. In Mandrill.php, add these two lines after calling curl_init ():

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

This approach was suggested by one of the answers when sending email using Mandrill (php)

+7
source

Source: https://habr.com/ru/post/977939/


All Articles