Итак, я создал приложение, которое должно отправлять электронную почту, когда пользователь выполняет действия.На моем локальном сервере (wamp).Отправка этих писем не была проблемой.
Я купил общий хостинг linux (индийский сервер) от bigrock.
Изначально я протестировал функцию почтовой рассылки на своем хостинге.т. е. идентификаторы отправителя и получателя были xyz@mydomain.com.Это работало без проблем.
Но потом я попытался с другими почтовыми службами.И я либо получаю сообщение об ошибке «Не удалось проверить подлинность» (В gmail у меня включено менее защищенное приложение).
При работе с электронной почтой Yahoo и моей компании я получаю сообщение «Ошибка SMTP-> Connect ()».
Я попытался отключить $ email-> IsSMTP ();Это будет работать при отправке на xyz@mydomain.com, но выдает ошибку при отправке в любой другой домен.ОШИБКА: не удалось создать экземпляр почтовой функции.
Я пытаюсь разобраться в этой ошибке.Я уже прочитал сотни Q / A здесь и github.
Ниже мой Код
function my_SendEmail($quote,$message,$params,$details)
{
$return=array(0,"Email Sent");
// Connection Settings
$settings=$params;
//print_r($settings);
$from=$details->from;
$mailer=$details->mailer;
$subject=$details->subject;
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 4; // Enable verbose debug output
$mail->IsSMTP(); // Set mailer to use SMTP
$mail->Host = gethostbyname($settings->host); // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = $settings->login; // SMTP username
$mail->Password = $settings->password; // SMTP password
$mail->SMTPSecure = $settings->security; // Enable TSL encryption, `ssl` also accepted
$mail->Port = $settings->port; // TCP port to connect to
$mail->SMTPOptions = array( 'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
//From
$mail->setFrom($from, $mailer);
//Recipients
$mail->addAddress($details->to,$details->recipientName); // Add a recipient // Name is optional
$mail->addReplyTo($from, $mailer);
foreach($quote->cc as $cc)
{
$mail->addCC($cc);
}
//Attachments
foreach($quote->attachments as $file)
{
$mail->addAttachment($file); // Add attachments // Optional name
}
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $message;
$mail->AltBody = 'Non-HTML Mail Clients Not Supported, Please View This email in a browser or get a HTML friendly Email Client.';
$mail->send();
}
catch (Exception $e)
{
$return=array(1,'Error: '.$mail->ErrorInfo);
}
return $return;
}
Ошибка, когда SMPT включен.
2019-02-18 08:37:57 Connection: opening to ssl://103.20.215.161:465, timeout=300, options=array ( 'ssl' => array ( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ),)<br>
2019-02-18 08:39:00 Connection failed. Error #2: stream_socket_client(): unable to connect to ssl://103.20.215.161:465 (Connection timed out) [/home/justq3zt/public_html/PHPMailer/src/SMTP.php line 325]<br>
2019-02-18 08:39:00 SMTP ERROR: Failed to connect to server: Connection timed out (110)<br>
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting<br>
[1,"Error: SMTP connect() failed. https:\/\/github.com\/PHPMailer\/PHPMailer\/wiki\/Troubleshooting"]
I 'проверил все предоставленные параметры, и они правильные.
Мне нужна помощь.Это последнее, что мешает мне реализовать этот проект.И отправка почты является основной функцией этого приложения.
PS: я проверял расширения php на bigrock.Там нет варианта openssl там.Может ли это быть проблемой?Обновление: проверил это, используя
<?php echo (extension_loaded('openssl')?'SSL loaded':'SSL not loaded')."\n"; ?>
Он говорит "SSL Loaded" .. Так что я думаю, расширение загружено.