Отправить почту с Laravel

Я пытаюсь отправить письмо с помощью Laravel, но это не работает. Я пробовал с Mandrill, mailgun и gmail. Mandrill возвращает сообщение типа «отсутствуют SPF и DKIM».

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME="my gmail adress"
MAIL_PASSWORD="my gmail password"
MAIL_ENCRYPTION=tls
MAIL_PRETEND=true

Это в моем EmailController:

Mail::send('emails.welcome', ['name' => 'Novice'], function($message){
    $message->to('f***@gmail.com', 'Fabien')->subject('Bienvenue !');
});

Это маршрут:

Route::resource('emails', 'EmailController');

Как я могу это исправить?


person Swarovski    schedule 17.12.2015    source источник
comment
mandrill.zendesk.com/hc/en-us/articles/   -  person Limon Monte    schedule 17.12.2015
comment
Я уже видел эту страницу, но она не работает. Я работаю на локальном хосте.   -  person Swarovski    schedule 18.12.2015


Ответы (1)


Измените MAIL_PRETEND на false. Эта опция используется для проверки отправки почты без отправки.

Кроме того, начиная с Laravel 5.2, опция pretend больше не существует.

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

Подробнее: Обновление до 5.2, Почта и локальная разработка

person Grzegorz Gajda    schedule 17.12.2015
comment
Привет, я пробовал с ложным значением и без MAIL_PREVEND var, но ничего не произошло. - person Swarovski; 18.12.2015
comment
@Swarovski Найдите в config/mail.php ключ pretend и посмотрите, какое там значение, старый Laravel мог иметь false или true без интеграции с файлом .env. - person Grzegorz Gajda; 18.12.2015
comment
@Svarowski В каталоге storage/logs у вас должны быть файлы журналов. Попробуйте отправить электронное письмо, а затем посмотрите в файле *.log, что там появилось. Также попробуйте установить значение debug в true и проверьте возвращаемое значение отправки писем ($mail = Mail::send(...); var_dump($mail);) и проверьте, что является ответом. По умолчанию SwiftMailer возвращает количество получателей, которые были приняты для доставки (swiftmailer/lib/classes/Swift/Mailer.php:74-92). - person Grzegorz Gajda; 20.12.2015
comment
Когда я сбрасываю $mail, я получаю это сообщение int 1. Отладка включена, и в файле .log нет ничего нового. - person Swarovski; 20.12.2015
comment
@Swarovski, возможно, попробуйте изменить порт на MAIL_PORT=465 и шифрование на MAIL_ENCRYPTION=ssl. Также вы можете узнать больше о настройке Gmail: support.google.com/a/answer. /176600?hl=en . Проблема не в вашем коде, а в ваших настройках, или в вашем сервере, или в вашей учетной записи Gmail. SwiftMailer сообщает вам, что вы отправляете одно электронное письмо одному получателю, поэтому в PHP все работает хорошо. - person Grzegorz Gajda; 20.12.2015