Laravel отправка электронной почты через SMTP не удается на Azure, локальная среда работает нормально - PullRequest
0 голосов
/ 10 февраля 2020

Я занимаюсь разработкой приложения Laravel, и мне нужно использовать различные настройки для отправки электронных писем (чтобы пользователи могли отправлять сообщения со своей собственной электронной почтой). Я настроил это, и сейчас он работает нормально - однако, только в тестовых средах localhost. Когда я перехожу на рабочий сервер (Azure VM), я всегда получаю одну и ту же ошибку:

Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required

Независимо от того, какой порт и тип шифрования я использую.

Вот что Я делаю это в своем настраиваемом Mailable:

<?php

namespace App\Mail;
use Illuminate\Http\Request;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Repositories\Email;

class DemoEmail extends Mailable
{
  use Queueable, SerializesModels;

  public $email;
  public $request;

  public function __construct()
  {

  }
  public function build(Email $email,Request $request)
  {

    $this->email = $email;
    $this->request= $request;
    $usrsettings = $this->email->settings();

    $conf = [
      'driver' => 'smtp',
      'host' => $usrsettings["Servidor"],
      'port' => $usrsettings["Puerto"],
      'from' => [
        'address' => $usrsettings["Direccion"],
        'name' => $usrsettings["Nombre"],
      ],
      'encryption' => $usrsettings["encrypt"],
      'username' => $usrsettings["Cuenta"],
      'password' => $usrsettings["Contraseña"],
    ];

    \Config::set('mail',$conf);

    if (isset($request['cc']) && $request['cc']!=null) $this->cc($request['cc']);
    if (isset($request['bcc']) && $request['bcc']!=null) $this->bcc($request['bcc']);

    return $this->from($conf["from"]["address"],$conf["from"]["name"])
                ->subject($request["subject"])
                ->view('emails.crm');
  }
}

Этот подход работает в локальных средах (сценарий 1: Xampp на Windows, сценарий 2: ферма), но не на виртуальной машине Azure, которая является производственная среда. Я протестировал те же 3 настройки электронной почты, все они выдают одну и ту же ошибку при работе и правильно отправляют электронные письма в тестовой среде.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

В целях безопасности и возможного неправильного использования порты для этих служб блокируются на экземплярах виртуальных машин. Вам необходимо разблокировать их вручную.

Лучшим подходом является использование внешнего сервиса для работы с электронной почтой, такого как SendGrid или MailGun, но это не обязательно.

0 голосов
/ 10 февраля 2020

Я полагаю, что это может быть вызвано тем, что IP вашего рабочего сервера занесен в черный список или требует аутентификации для отправки почты.

У меня только что была похожая проблема с новым сервером - чтобы отправлять почту только с записью SPF, но без надлежащей аутентификации, необходимо установить IP и заработать репутацию.

Я надеюсь, что после нескольких месяцев отправки почты с аутентификацией на мои сайты я смогу отправлять сообщения без установки SMTP-сервера, имени пользователя и пароля каждый раз.

...