我使用Laravel 5.1并希望向页面管理员发送包含联系表单内容的邮件。
在我的.env文件中,我添加了以下几行:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=admintest@gmail.com
MAIL_PASSWORD=adminpassword
MAIL_ENCRYPTION=tls
在我的控制器中,我有以下内容:
Mail::send('Site::email', ['contactObject' => $contactObject], function ($message) use ($contactObject) {
$message->from($contactObject->email, $contactObject->vorname)->subject('New contact!');
$message->to('admintest@gmail.com');
});
$ contactObject ==包含从用户
填写的表单期望的结果: 当admintest@gmail.com收到电子邮件时,邮件的发件人应为$ contactObject-> email
实际结果: 当admintest@gmail.com收到电子邮件时,邮件的发件人是admintest@gmail.com
任何想法出了什么问题?谢谢
答案 0 :(得分:1)
试试这个:
在Live服务器中,您无需配置任何类型的邮件服务。
你必须使用它:
MAIL_DRIVER=mail
删除此代码:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=admintest@gmail.com
MAIL_PASSWORD=adminpassword
MAIL_ENCRYPTION=tls
答案 1 :(得分:1)
您必须使用.env文件:
MAIL_DRIVER=mail
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=xyz@gmail.com
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls
更改.env文件后,重启服务或使用命令 php artisan config:cache 和 php artisan config:clear 。
答案 2 :(得分:0)
您是否在配置中配置了全局发件人地址?
具体来说:https://github.com/laravel/laravel/blob/master/config/mail.php#L49
您可能已经设置了它并且它只是使用它,将这些值设为空白应该让您覆盖它。
如果不这样做,因为您使用Gmail向Gmail发送电子邮件,它可能不会让您欺骗,并且确实是他们的安全功能。