Я настраиваю сайт на базе Azure, для которого требуется автоматический ответ по электронной почте. Поскольку Azure изначально не допускает этого, я попытался использовать SendGrid. Код (на основе их образцов) отлично работает на моем собственном сервере (он возвращает статус 202 и электронная почта доставлена), но совсем не на Azure. Есть ли какая-то известная причина для этого?
Мой код выглядит следующим образом:
<?php
require ("sendgrid-php/sendgrid-php.php");
$from = new SendGrid\Email("DX PHP Test", "MY EMAIL ADDRESS");
$subject = "Sending with SendGrid is Fun";
$to = new SendGrid\Email("Dorian", "MY EMAIL ADDRESS");
$content = new SendGrid\Content("text/plain", "and easy to do anywhere, even with PHP");
$mail = new SendGrid\Mail($from, $subject, $to, $content);
$apiKey = "MY API KEY";
$sg = new \SendGrid($apiKey);
$response = $sg->client->mail()->send()->post($mail);
echo $response->statusCode();
?>
Очевидно, я включил правильный ключ API и адреса электронной почты в свою рабочую версию. Папка sendgrid-php также залита в нужное место и, как я уже говорил ранее, работает на моем собственном сервере.
Я осмотрелся, но не могу найти ответы, которые конкретно отвечают на этот вопрос. Если этот подход по какой-то причине не работает (и я хотел бы знать, почему!), Может ли кто-нибудь предложить другой подход?
РЕДАКТИРОВАТЬ: предложенный возможный дубликат тоже не работает! Мое имя и/или пароль SendGrid не были распознаны, когда я пытался их использовать. Однако инструкции по адресу этот блог действительно работает. Вот что я сделал:
- Настройте учетную запись SendGrid в Azure и запишите имя пользователя, сгенерированное в колонке «Конфигурации». Пароль такой же, как тот, который вы установили для учетной записи SendGrid.
- Загрузите PHPMailer с Github и извлеките папку PHPMailer-master в ту же папку. как код, который вы хотите запустить.
Используйте следующий код (слегка отредактированный из упомянутого выше блога), чтобы отправить электронное письмо из Azure. Очевидно, измените имя пользователя и пароль на те, что были в шаге 1 выше. Вам также нужно будет добавить правильный адрес электронной почты в строку, начинающуюся с «$mail->addAddress», чтобы проверить, работает ли он:
<?php require 'PHPMailer-master/PHPMailerAutoload.php'; $mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp.sendgrid.net'; // Specify main/backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'SENDGRID USERNAME'; // SMTP username $mail->Password = 'SENDGRID PASSWORD'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS/SSL encryption $mail->Port = 587; // TCP port to connect to $mail->From = '[email protected]'; $mail->FromName = 'From SendGrid website'; $mail->addAddress('TEST EMAIL ADDRESS', 'A NAME'); // Add a recipient $mail->WordWrap = 50; // Set word wrap to 50 characters $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; } ?>