Как я могу отправить электронную почту с помощью PHP в windows Azure?

Как я могу отправить электронную почту с помощью PHP в windows Azure?

Я использую простую почтовую функцию:

$to .= 'email-Id';
$subject = " Test Subject";

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: '.$to.'' . "\r\n";
$headers .= 'From: '.$name. '<'.$email.'>' . "\r\n";

echo $message='email text here';
@mail($to, $subject, $message, $headers);

Ответы

Ответ 1

Для отправки писем с использованием PHP у вас есть несколько вариантов:

Вариант 1: используйте SMTP

Вам необходимо изменить конфигурационный файл php.ini (http://php.net/manual/en/ref.mail.php) и установить SMTP значение на внешний SMTP-сервер, который вы можете использовать. SMTP-серверы в данный момент не входят в функции Windows Azure.

[mail function]
SMTP = mail.mycompany.com

Вариант 2: Использовать sendmail

Вам нужно будет изменить конфигурационный файл php.ini (http://php.net/manual/en/ref.mail.php) и установить путь sendmail_path значение для исполняемого файла sendmail.

[mail function]
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"

Поскольку sendmail не существует в Windows, вам нужно использовать поддельный sendmail для windows: http://glob.com.au/sendmail/

Вариант 3: используйте службу почты /smtp

Вы можете использовать службу, такую ​​как SendGrid, для отправки ваших писем (у них есть предложение для пользователей Azure: http://sendgrid.com/azure.html). Они позаботятся о отправке электронной почты, вам просто нужно вызвать REST api:

$sendgrid = new SendGrid('username', 'password');
$mail = new SendGridMail();
$mail->addTo('[email protected]')->
       setFrom('[email protected]')->
       setSubject('Subject goes here')->
       setText('Hello World!')->
       setHtml('<strong>Hello World!</strong>');
$sendgrid->smtp->send($mail);

Ответ 3

email-Id?? что это? Я предполагаю, что это адрес электронной почты получателя.

В заголовках не требуется значение To: поскольку адрес указан в первом параметре. Если вы не знаете имя получателя и хотите, чтобы он увидел, что электронное письмо было отправлено на следующее: Некоторое имя не просто вам не нужно. Также у вас есть ошибка: missing < > до и после адреса электронной почты.

P.S. Письма, отправленные через функцию PHP mail(), имеют одну из самых высоких скоростей завершения СПАМа, особенно если для этого у вас нет DNS-ключей и SPF. Если вы используете Cpanel, обратитесь к разделу "Проверка подлинности электронной почты" вашей электронной почты в Cpanel.

Ответ 4

У меня была такая же проблема, но это решение отлично работает для меня. просто выполните следующие действия:

  • Просто включите двухэтапную аутентификацию в своей учетной записи Gmail.
  • Перейдите к окну приложения и выберите приложение = другое, а затем введите AzureWebsite и сгенерируйте пароль и сохраните пароль.
  • замените

$mail- > Пароль = 'новый пароль';

4. Я надеюсь, что это сработает и для вас.

Ответ 5

Обновленная информация @Nov-2017:

Полное сообщение в блоге: https://blogs.msdn.microsoft.com/mast/2017/11/15/enhanced-azure-security-for-sending-emails-november-2017-update/

Рекомендуемый метод отправки электронной почты

"Microsoft рекомендует клиентам Azure использовать службы ретрансляции SMTP с проверкой подлинности (обычно они подключаются через TCP-порт 587 или 443, но часто поддерживают и другие порты)....."