Электронная почта SendGrid php не работает в Azure

Я настраиваю сайт на базе 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 не были распознаны, когда я пытался их использовать. Однако инструкции по адресу этот блог действительно работает. Вот что я сделал:

  1. Настройте учетную запись SendGrid в Azure и запишите имя пользователя, сгенерированное в колонке «Конфигурации». Пароль такой же, как тот, который вы установили для учетной записи SendGrid.
  2. Загрузите PHPMailer с Github и извлеките папку PHPMailer-master в ту же папку. как код, который вы хотите запустить.
  3. Используйте следующий код (слегка отредактированный из упомянутого выше блога), чтобы отправить электронное письмо из 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';
    }
    ?>
    

person Dorian Fabre    schedule 16.02.2017    source источник
comment
Возможный дубликат Sendgrid Azure PHP   -  person CSharpRocks    schedule 16.02.2017