ошибка отправки электронной почты с помощью Mandrill (php)

Я использую mandrill api в первый раз. Я использую следующий код. У меня есть Mandrill API Key со мной.

<?php try { $mandrill = new Mandrill('YOUR_API_KEY'); $message = array( 'html' => '<p>Example HTML content</p>', 'text' => 'Example text content', 'subject' => 'example subject', 'from_email' => 'message.from_email@example.com', 'from_name' => 'Example Name', 'to' => array( array( 'email' => 'recipient.email@example.com', 'name' => 'Recipient Name' ) ), 'headers' => array('Reply-To' => 'message.reply@example.com'), 'important' => false, 'track_opens' => null, 'track_clicks' => null, 'auto_text' => null, 'auto_html' => null, 'inline_css' => null, 'url_strip_qs' => null, 'preserve_recipients' => null, 'view_content_link' => null, 'bcc_address' => 'message.bcc_address@example.com', 'tracking_domain' => null, 'signing_domain' => null, 'return_path_domain' => null, 'merge' => true, 'global_merge_vars' => array( array( 'name' => 'merge1', 'content' => 'merge1 content' ) ), 'merge_vars' => array( array( 'rcpt' => 'recipient.email@example.com', 'vars' => array( array( 'name' => 'merge2', 'content' => 'merge2 content' ) ) ) ), 'tags' => array('password-resets'), 'subaccount' => 'customer-123', 'google_analytics_domains' => array('example.com'), 'google_analytics_campaign' => 'message.from_email@example.com', 'metadata' => array('website' => 'www.example.com'), 'recipient_metadata' => array( array( 'rcpt' => 'recipient.email@example.com', 'values' => array('user_id' => 123456) ) ), 'attachments' => array( array( 'type' => 'text/plain', 'name' => 'myfile.txt', 'content' => 'ZXhhbXBsZSBmaWxl' ) ), 'images' => array( array( 'type' => 'image/png', 'name' => 'IMAGECID', 'content' => 'ZXhhbXBsZSBmaWxl' ) ) ); $async = false; $ip_pool = 'Main Pool'; $send_at = 'example send_at'; $result = $mandrill->messages->send($message, $async, $ip_pool, $send_at); print_r($result); } catch(Mandrill_Error $e) { echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage(); throw $e; } ?> 

Используя этот код, я получаю ошибку как:

Возникла ошибка mandrill: Mandrill_HttpError – вызов API для отправки сообщений / отправки недействителен: проверка сертификата проверяет местоположения: CAfile: /usr/local/share/certs/ca-root-nss.crt CApath: none

Почему я получаю эту ошибку?

Solutions Collecting From Web of "ошибка отправки электронной почты с помощью Mandrill (php)"

ошибка указывает, что у вас нет требуемого SSL-сертификата, установленного локально, для проверки SSL-соединения с API-интерфейсом Mandrill. Вы можете получить комплект сертификатов через диспетчер пакетов для своей операционной системы или загрузить пакет, который распространяется вместе с Mozilla: http://curl.haxx.se/docs/caextract.html, а затем сохранить их локально.

В этом файле: mandrill-api-php \ src \ Mandrill.php

На строке 58, где инициализируется завиток:

 $this->ch = curl_init(); 

Вам нужно добавить два варианта решения проблемы:

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

Или у вас есть эта опция: HTTPS и SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не выполнена, CA в порядке

После загрузки cacert.pem из http://curl.haxx.se/docs/caextract.html и размещения его на моем сервере я смог исправить эту проблему (сохраняя при этом все):

 $mandrill = new Mandrill(MANDRILL_API_KEY); // Fix CA issue curl_setopt($mandrill->ch, CURLOPT_SSL_VERIFYHOST, true); curl_setopt($mandrill->ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($mandrill->ch, CURLOPT_CAINFO, 'PATH_TO/cacert.pem'); 

Свойство curl в классе Mandrill является общедоступным, поэтому нет необходимости добавлять хаки в библиотеку.