大家好我试图在Laravel中发送电子邮件,并且在使用了这么多配置并且每次我在这里发布相同的例外时,我得到的例外是。
预期的回复代码220,但得到了代码"",带有消息""
我在Laravel中配置Mail时使用的步骤如下。
我启用了谷歌两步验证。 使用以下MAIL变量更改.env文件。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=email@domain.com
MAIL_PASSWORD=email_password
MAIL_ENCRYPTION=tls
最后在我的config / mail.php文件中,我改变了这样的设置。
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => '<<your email>>', 'name' => '<<any name>>'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
这是我用来发送电子邮件的功能
$mail = Mail::raw($msg, function ($message) {
$message->to('email@domain.com');
});
任何人都可以指导我做错了吗
答案 0 :(得分:0)
您实际上无需修改config/mail.php
它使用.env
中的值。我的.env
中的此电子邮件配置适用于我的项目:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=mymail@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl
如果您使用的是Gmail,则需要从Google帐户中获取API密码。
首先关注:
1. Login to your gmail Account
2. Go to your preferences
3. Search for Sign In And Security
4. Sign In to google -> enable two step verification
5. There you can generate an app password which you have to use in your `.env` file
此外,请务必在更改.env
配置后清除配置缓存。
运行以下命令:
php artisan config:cache
在您的控制器中,您可以使用以下架构发送电子邮件:
首先使用以下命令生成mailable类:
php artisan make:mail InquirySent
该课程看起来像这样:
class InquirySent extends Mailable
{
use Queueable, SerializesModels;
public $data;
public function __construct($data)
{
$this->data = $data;
}
public function build()
{
return $this->view('emails.contacts.inquiry'); // this is the location where you 'style' your view for your mails
}
}
在您的控制器中,您可以执行以下操作来发送电子邮件。
class ContactController extends Controller
{
protected $myMail;
public function __construct() {
$this->myMail = env('MAIL_USERNAME');
}
public function sent(ContactRequest $request)
{
$data = $request->all();
// new implementation using a mailable class
Mail::to($this->myMail)->send(new InquirySent($data));
}
}
如您所见,您正在向.env
文件中设置的邮件发送电子邮件。