У меня есть сайт, размещенный в стойке, и я обновил технологию своего сайта с php5.4 до php5.6. Теперь я больше не могу отправлять письма с сайта. Хуже всего то, что я даже не получаю никаких ошибок, и журналы ничего не показывают. Я использую phpmailer 5.2.14.
Вот мой почтовый скрипт
require 'phpmailer/PHPMailerAutoload.php';
if (isset($_POST['contactForm'])) {
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$body = '
<html>
<body>
<div style="float:left; width:100%; margin:0 0 25px 0; padding:20px; background:#222; text-align:center;">
<div style="display:inline-block; vertical-align:top;">
<a href="http://website.com"><img src="img/logoEmail.png" alt="waesf"></a>
</div>
</div>
<main style="float:left; width:100%; padding:20px;">
<p style="font-family:Arial; font-size:18px;">'.$message.'</p>
</main>
</body>
</html>';
$mail = new PHPMailer;
$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.office365.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'secret'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->SetFrom('[email protected]', 'Ballpoint Machinist');
$mail->AddAddress('[email protected]', "BPM"); // Add a recipient
$mail->addReplyTo('[email protected]', 'Information');
// $mail->addCC('[email protected]');
// $mail->addBCC('[email protected]');
// $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = $body;
if (!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
}
Когда скрипт запускает сайт, он зависает на некоторое время, а затем выдает сообщение о том, что время ожидания сервера истекло, и больше ничего. Никакие коды ошибок php ничего не кодируют, и когда я проверяю журналы, ошибок, связанных с моим почтовым кодом, нет. Однако это происходит только с Office 365, когда я меняю настройки smtp на gmail, тогда я, по крайней мере, получаю ошибки php на странице.
Я уже прочитал кучу тем на эту тему, но так и не понял. Я также прошел через https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting и добавил SMTPOptions для исключения ssl, но это не помогло.
Я озадачен тем, что я не получаю никаких ошибок. У меня SMTPDebug = 3 и error_reporting(E_ALL).
отредактируйте с предложением Willy Pt. Все еще не работает, когда скрипт запускает время сервера.
if (isset($_POST['contactForm'])) {
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$body = '
<html>
<body>
<div style="float:left; width:100%; margin:0 0 25px 0; padding:20px; background:#222; text-align:center;">
<div style="display:inline-block; vertical-align:top;">
<a href="http://website.com"><img src="img/logoEmail.png" alt="Ballpoint Machinist"></a>
</div>
</div>
<main style="float:left; width:100%; padding:20px;">
<p style="font-family:Arial; font-size:18px;">'.$message.'</p>
</main>
</body>
</html>';
$mail = new PHPMailer(true);
// $mail->SMTPDebug = 4; // Enable verbose debug output
try {
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.office365.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'test'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->SetFrom('[email protected]', 'Ballpoint Machinist');
$mail->AddAddress('[email protected]', "BPM"); // Add a recipient
$mail->addReplyTo('[email protected]', 'Information');
// $mail->addCC('[email protected]');
// $mail->addBCC('[email protected]');
// $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
$mail->AltBody = $body;
$mail->send();
echo "Message Sent OK\n";
/*if (!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}*/
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}
}
Кто-нибудь может помочь?