Я пробую Мандрилла. Это выглядит мило. Я зарегистрировался с учетной записью и получил ключ API. Скачал обертку Mandrill PHP из
https://bitbucket.org/mailchimp/mandrill-api-php
В этом посте, похоже, был довольно хороший пример электронного письма о Mandrill, и я попробовал его:
Простая функция PHP для отправки электронной почты с Mandrill
Получил эту ошибку:
API call to templates/add failed: Problem with the SSL CA cert (path? access rights?)
Я следовал инструкциям этих С.О. сообщения:
ошибка при отправке электронной почты с использованием Mandrill (php)
HTTPS и SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата, CA в порядке
Схватил файл .pem с http://curl.haxx.se/docs/caextract.html
и удостоверился, что curl API указал на этот файл внутри API Mandrill
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt ($ch, CURLOPT_CAINFO, "pathto/cacert.pem");
Файл .pem доступен для чтения. Нет сумасшедших разрешений ситуаций.
Нет помощи. То же самое дело:
API call to templates/add failed: Problem with the SSL CA cert (path? access rights?)
Погуглив вокруг, я следовал шагам CentOS 6.0 здесь:
http://kb.kerio.com/product/kerio-connect/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html
А также шаги здесь:
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
Та же ошибка В качестве последней попытки я установил curl, чтобы полностью игнорировать ssl-step. Это, конечно, не рекомендуется, но я просто хотел чувствовать твердую почву под ногами. Я вернулся в Mandrill.php и дал этому шанс.
curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0);
Опять та же ошибка. Мне было интересно, если кто-то еще может пролить свет на это для меня. Я исчерпал Google. (Это дало мне recaptcha, потому что я использовал это слишком много). Спасибо за ваше время!
(Система: CentOS 6.5, PHP 5.3)
Странно, что у вас есть эта проблема в Linux (хотя известная проблема в Windows).
Единственное, о чем я могу подумать, это то, что вы пытаетесь загрузить .pem по умолчанию через ваш php.ini-файл, проверьте curl.cainfo
и предоставить абсолютный путь к cacert.pem
-файл. Это должно сделать так, чтобы вам не пришлось использовать CURLOPT_CAINFO
— а может быть, даст лучший результат?
Половина не по теме; если вам не нужны все функции, предоставляемые API, вы также можете использовать SMTP-соединение (с ним всегда легче работать).
Других решений пока нет …