Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Нужна помощь. Уже какой день мучаюсь и не могу решить проблему. Пользовался и гуглом и на этом форуме искал. На данном framework не разрабатывал ничего (это первый взгляд во внутренности).
Мне необходимо сайт на Laravel перенести на другой хостинг с другим доменом. Сайт перенес и он вроде как работает, а с отправкой почты не могу справится. На старом хостинге работало. Установкой почти всех компонентов занимался сам. Может что-то не доставил. Если что есть пока возможность залесть на сервер старого сайта.
Версия Laravel: 5.4
Версия PHP: 7.0
Операционная система и её версия: Ubuntu 16.04
Вендор и версия Веб-сервера: Apache 2.4.18
Медод подключения PHP: модуль
Почта: Postfix
Вообще хочу чтобы отправлялась почта как по функции mail или smtp, но локальный, а не gmail или еще какой-то. Но настроить не получилось никак.
При переносе сайта выполнял команды
php composer.phar install
php composer.phar update
php artisan serve
Из командной строки почта отправляется
echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
С отдельного файла с функцией mail() тоже отправляется.
Настройки конфигов Laravel.
.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=login@gmail.com
MAIL_PASSWORD=pass
MAIL_ENCRYPTION=tls
MAIL_PRETEND=false
MAIL_FROM_ADDRESS=login@gmail.com
MAIL_FROM_NAME=login
/config/mail.php
'driver' => env('MAIL_DRIVER'),
'host' => env('MAIL_HOST'),
'port' => env('MAIL_PORT'),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
'encryption' => env('MAIL_ENCRYPTION'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
Пробовал driver ставить и log и mail, MAIL_PRETEND=true, APP_DEBUG=true ... нигде не пишутся логи с ошибками по почте или я не могу найти.
Какие-то настройка postfix или еще чего нужно показать?
Не в сети
С отдельного файла с функцией mail() тоже отправляется.
ну и поставь тогда MAIL_DRIVER=mail и отправляй локально а не через gmail
Не в сети
в том-то и дело, что я ставил и он не отправляет. может кто-то еще даст варианты настроек других полей когда MAIL_DRIVER=mail. Но пробовал некоторые варианты.
Не в сети
Пробовал driver ставить и log
Если при driver=log почта не пишется в логи - вероятно vendor файлы повреждены.
Удали папку vendor и выполни composer install.
Не в сети
Пробовал. Результат тот же.
Он же должен писать в storage\logs\laravel.log ?
Не в сети
лично я (нубас) делал все по видео уроку https://youtu.be/zu-ZniGhogw и все прекрасно работает.
.env
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=2cb975f571cd30
MAIL_PASSWORD=2e5cd5d03b5b30
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=test@yandex.ru
MAIL_FROM_NAME="test app"
mail.php
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
возможно еще какието гдето настройки нужны. сечас уже плохо помню, посмотри видео, там все просто даже для новичка
ну и вот функция отправки
// Send Email
private function send_email($test, $msg)
{
$user = User::findOrFail(2); // Письмо отправляется пользователю ID 2
if ($user) {
$params = [
'user' => $user,
'test' => $test,
'msg' => $msg,
];
Mail::send('emails.user.email_send', $params, function ($m) use ($user) { // юзаю шаблон, передаю параметры, выполняю функцию
$m->from('hello@app.com', 'Your Application');
$m->to($user->email, $user->name)->subject('Тема сообщения:');
});
return json_encode(['success' => TRUE, 'data' => 'ok']);
} else {
return json_encode(['success' => FALSE, 'data' => 'false']);
}
}
так же рекомендую вам 100 видео уроков по ларавелю https://laravel.ru/forum/viewtopic.php?id=2799
Изменено sam (25.08.2017 15:39:54)
Не в сети
Он же должен писать в storage\logs\laravel.log ?
Да.
По поводу проблемы - ничего сказать не могу, это странно, что даже не пишет в логи.
Не в сети
По уроку, что скинул sam, создал отдельный проект на laravel. Письмо отправляется и пишется в лог.
То есть проблема с самим сайтом. Напоминаю, что я переношу чужой сайт на другой хостинг и домен.
Может будут теперь какие-то мысли, что может не так перенес, скомпилировал, настроил. Или как тут отловить эту ошибку.
Не в сети
Страницы 1