【发布时间】:2017-08-03 21:18:25
【问题描述】:
每次我在 Laravel 应用程序上提交联系表时,我都会在标题中收到错误消息。我遵循了this discussion 中的建议,但即使在php artisan cache:clear 和php artisan config:cache 之后也没有效果。以下是相关代码:
.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=username@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl
config/mail.php
<?php
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.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'),
],
],
];
我从文档中得到的印象是,除非没有提供其他发件人地址,否则不会触发全局“发件人”,但在我的邮件控制器中,我将提供给联系表的地址指定为“发件人” ,'这是一个冲突点吗?似乎不是来自错误消息的详细信息。
因为联系表单不是一个独特的视图,而是主页视图的底部,所以Controller函数存在于PageController
public function postContact(Request $request) {
$this->validate($request, [
'email' => 'required|email',
'subject' => 'required|min:3',
'message' => 'required|min:10'
]);
$data = array(
'email' => $request->email,
'subject' => $request->subject,
'mailbody' => $request->message
);
Mail::send('emails.contact', $data, function($message) use ($data) {
$message->from($data['email']);
$message->to('username@gmail.com');
$message->subject($data['subject']);
});
}
【问题讨论】:
-
将端口从 465 更改为 587 和 MAIL_ENCRYPTION= ssl。还允许从谷歌设置中降低谷歌应用的安全性。
-
这摆脱了旧的错误,但现在我在 StreamBuffer.php 第 268 行收到“Swift_TransportException:无法与主机 smtp.gmail.com [#0] 建立连接”
-
这实际上是我在上面的原始问题中链接的答案,因为我已经阅读了它,应用了建议,但没有让它们起作用。
标签: php laravel email post smtp