У меня проблема с отправкой почты с использованием версии Swiftmailer, поставляемой с PS1.6
Swift Ошибка: не удалось установить SMTP-соединение [ssl: //mail.wineofthemonth.co.za: 465]: fsockopen вернул номер ошибки 0 и строку ошибки \ '\'
Это связано с тем, что начиная с PHP 5.6 для опции verify_peer по умолчанию установлено значение true.
Теперь я обнаружилразличные инструкции о том, как установить для проверки peer значение false:
$https['ssl']['verify_peer'] = FALSE;
$https['ssl']['verify_peer_name'] = FALSE;
Проблема в том, что нет места, чтобы установить это в версии Swiftmailer, которая используется в Prestashop.
Итакмой вопрос, где в классе / mail.php или где-либо еще я установил бы в verify_peer значение false?
Вот строка в mail.php, которая, я думаю, относится к этому:
$connection = new Swift_Connection_SMTP(
$configuration['PS_MAIL_SERVER'],
$configuration['PS_MAIL_SMTP_PORT'],
$configuration['PS_MAIL_SMTP_ENCRYPTION'] == 'ssl' ? Swift_Connection_SMTP::ENC_SSL : (($configuration['PS_MAIL_SMTP_ENCRYPTION'] == 'tls' ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_OFF))
);
Существует также метод sendMailtest, который может дать больше ясности:
public static function sendMailTest($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort = 25, $smtpEncryption)
{
$result = false;
try {
if ($smtpChecked)
{
$smtp = new Swift_Connection_SMTP($smtpServer, $smtpPort, ($smtpEncryption == 'off') ?
Swift_Connection_SMTP::ENC_OFF : (($smtpEncryption == 'tls') ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_SSL));
$smtp->setUsername($smtpLogin);
$smtp->setpassword($smtpPassword);
$smtp->setTimeout(5);
$swift = new Swift($smtp, Configuration::get('PS_MAIL_DOMAIN'));
}
else
$swift = new Swift(new Swift_Connection_NativeMail(), Configuration::get('PS_MAIL_DOMAIN'));
$message = new Swift_Message($subject, $content, $type);
if ($swift->send($message, $to, $from))
$result = true;
$swift->disconnect();
} catch (Swift_ConnectionException $e) {
$result = $e->getMessage();
} catch (Swift_Message_MimeException $e) {
$result = $e->getMessage();
}
return $result;
}
В качестве альтернативы, где в любом файле conf или ini я могу установить false для параметра verify_peer?