3 ответа
В config/mail.php
задавать from
свойство как:
'from' => ['address' => 'someemail@somedomain.com', 'name' => 'Firstname Lastname']
Здесь адрес должен быть тем, который вы хотите отобразить из электронной почты, а имя должно быть тем, что вы хотите отобразить из имени.
PS Это будет настройка электронной почты по умолчанию для каждого отправляемого вами сообщения.
Ты можешь использовать
Mail::send('emails.welcome', $data, function($message)
{
$message->from('us@example.com', 'Laravel');
$message->to('foo@example.com')->cc('bar@example.com');
});
Ссылка - https://laravel.com/docs/5.0/mail
В случае Google SMTP адрес отправителя не изменится, даже если вы укажете это в классе почты. Это связано с политикой Google Mail, а не с проблемой Laravel. Думаю, я поделюсь этим здесь.
Лучшим способом было бы добавить имена и значения переменных в .env
файл.
Пример:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@example.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="My Name"
MAIL_FROM_ADDRESS=support@example.com
Обратите внимание на последние две строки. Они будут соотноситься с полями from name и from email в отправляемом электронном письме.
Для тех, кто использует Laravel 5.8 и приземлился на этот вопрос, сделайте это, у меня получилось:
В функции сборки самой почты (не просмотра, а почты):
public function build()
{
return $this
->from($address = 'noreply@domain.com', $name = 'Sender name')
->subject('Here is my subject')
->view('emails.welcome');
}
Удачного кодирования:)
Если вам нужны глобальные 'from name' и 'from emai l',
Создайте эти 2 ключа в файле.env
MAIL_FROM_NAME="глобальный от имени"
MAIL_FROM_ADDRESS=support@example.com
И удалите "из" на контроллере. или PHP-код, если вы объявляете вручную. теперь это доступ по имени и по электронной почте.
config \ mail.php
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'info@catandpillar@.com'),
'name' => env('MAIL_FROM_NAME', 'write name if not found in env'),
],
НА моем контроллере.
$conUsBody = '';
$conUsBody .= '<h2 class="text-center">Hello Admin,</h2>
<b><p> '.trim($request->name).' Want some assesment</p></b>
<p>Here are the details:</p>
<p>Name: '.trim($request->name).'</p>
<p>Email: '.trim($request->email).'</p>
<p>Subject: '.trim($request->subject).'</p>';
$contactContent = array('contactusbody' => $conUsBody);
Mail::send(['html' => 'emails.mail'], $contactContent,
function($message) use ($mailData)
{
$message->to('vinay.kaithwas@gmail.com', 'Admin')->subject($mailData['subject']);
$message->attach($mailData['attachfilepath']);
});
return back()->with('success', 'Thanks for contacting us!');
}
Мой шаблон клинка.
<body>
{!! $contactusbody !!}
</body>
Я думаю, что у вас есть ошибка в вашем фрагменте кода. У тебя естьfrom(config('app.senders.info'), 'My Full Name')
поэтому config('app.senders.info') возвращает массив.
Метод from должен иметь два аргумента: первый - строка, содержащая адрес, а второй - строка с именем отправителя. Так что вы должны изменить это наfrom(config('app.senders.info.address'), config('app.senders.info.name'))