Я хочу отправить простое уведомление по электронной почте по требованию в Laravel 5.7.
Я перешел на AWS SES и в разделе Адреса электронной почты добавил do-not-reply@foo
в качестве отправителя.Затем я нажимаю ссылку подтверждения на do-not-reply@foo
, чтобы подтвердить его.
![enter image description here](https://i.stack.imgur.com/NarV2.png)
Я настроил .env
:
MAIL_FROM_ADDRESS=do-not-reply@foo
MAIL_FROM_NAME="Foo System"
MAIL_DRIVER=smtp
MAIL_HOST=email-smtp.us-west-2.amazonaws.com
MAIL_PORT=587
MAIL_USERNAME=xxx
MAIL_PASSWORD=xxx
MAIL_ENCRYPTION=tls
Я взял имя пользователя и пароль отсюда:
![enter image description here](https://i.stack.imgur.com/rFiLL.png)
Я сделал php artisan config:clear
и php artisan cache:clear
.
Теперь в терминахмоего PHP-кода у меня есть:
$this->notificationClass = (new ReflectionClass($notificationClass))->getShortName();
$this->notificationData = $notificationData;
$this->notification
->route('slack', config('logging.channels.slack.url')) // slack works great all the time
->route('mail', 'my-inbox-address-123@gmail.com') // this is address where I want notification to be sent
->notify(new $notificationClass(
$this->getNotificationTitle(),
$this->getNotificationContent()
));
А содержимое $notificationClass
:
<code><?php
namespace App\Notifications\Sync;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Messages\SlackMessage;
class SyncSuccessfullyCompletedNotification extends AbstractBaseSyncNotification
{
public function toSlack()
{
return (new SlackMessage)
->success()
->content(sprintf('*Synchronization Successful*```%s```', $this->message));
}
public function toMail()
{
return (new MailMessage)
->from(config('mail.from.address'), config('mail.from.name'))
->subject($this->title)
->view('mail.notifications.sync_successfully_completed_notification', [
'content' => sprintf('<pre>%s
', $ this-> message),]);}}
Так что my-inbox-address-123@gmail.com
- это просто входящий почтовый ящик моей компании Gmail.Когда я выполняю команду ремесленника, ответственного за выполнение чего-либо и отправку этого уведомления, я получаю:
Swift_TransportException: ожидаемый код ответа 250, но получил код "554" с сообщением "554 Сообщение отклонено: адрес электронной почты не являетсяпроверено. Следующие удостоверения не прошли проверку в регионе US-WEST-2: my-inbox-address-123@gmail.com "
в / home / vagrant / Code / iosportal / vendor / swiftmailer / swiftmailer /lib / classes / Swift / Transport / AbstractSmtpTransport.php: 457 453 |$ this-> eventDispatcher-> dispatchEvent ($ evt, 'responseReceived');454 |} 455 |456 |if (! $ valid) {
457 |$ this-> throwException (new Swift_TransportException ('Ожидаемый код ответа' .implode ('/', $ wanted). ', но получил код "'. $ code. '", с сообщением "'. $ response. '" ",$ код));458 |} 459 |} 460 |461 |/ ** Получить полный многострочный ответ, используя его порядковый номер * /
Трассировка исключения:
1 Swift_Transport_AbstractSmtpTransport :: assertResponseCode ("554 Сообщение отклонено: адрес электронной почты не проверенСледующие удостоверения не прошли проверку в регионе US-WEST-2: my-inbox-address-123@gmail.com ") / home / vagrant / Code / iosportal / vendor / swiftmailer / swiftmailer / lib / classes / Swift / Transport/AbstractSmtpTransport.php:341
2 Swift_Transport_AbstractSmtpTransport :: executeCommand (".", []) / Home / vagrant / Код / iosportal / vendor / swiftmailer / swiftmailer / lib / classes / Swift / Transport / Esmt.php: 305
Пожалуйста, используйте аргумент -v, чтобы увидеть больше деталей.
Почему?Я не понимаю этого.Мой отправитель подтвержден, почему он хочет подтвердить получателя?
Действительно, когда я отправляю это сообщение из проверенного аккаунта в тот же проверенный аккаунт, письмо приходит правильно, но это чепуха.