预期响应代码 250 但收到代码“550”Laravel swift 邮件程序
Expected response code 250 but got code "550" Laravel swift mailer
我可以从 tinker 发送电子邮件,但是当我尝试从 laravel 框架中的代码发送电子邮件时,出现以下错误:
Swift_TransportException (550)
Expected response code 250 but got code "550", with message "550 Bad HELO - Host impersonating domain name [mydomain.com] "
这是我用来测试从 laravel 控制器发送电子邮件的简单邮件方法:
Mail::send('errors.401', [], function ($message) { $message->to('my.email@gmail.com')->subject('this works!'); });
.env 文件:
MAIL_DRIVER=smtp
MAIL_HOST=mail.mydomain.com
MAIL_PORT=587
MAIL_USERNAME=info@mydomain.com
MAIL_PASSWORD=<password>
MAIL_ENCRYPTION=
我已完成以下步骤,但仍然无效:
composer dump-autoload
php artisan view:clear
php artisan cache:clear
php artisan config:cache
更新:
我的代码在 ubuntu 服务器上,我配置了 dns 服务器和 bind9 以将域连接到服务器,并且我有一个外部邮件服务器来处理电子邮件。
因此,每当在 ubuntu 服务器中创建电子邮件请求时,它都会将其转发到外部邮件服务器。
我应该在哪里寻找问题?
我在浪费了很多时间后解决了这个问题,希望这个答案不要再浪费别人的时间了。
这是由于本地域名,
我们需要在 mail.php 配置文件中定义一个本地名称,这样我们的服务器就不会与外部服务器域名混淆。
'local_domain' => env('MAIL_HOST', 'mail.mydomain.com'),
在我的例子中,我在通知 class.
的 toMail
函数中的 MailMessage
实例上使用了方法 ->from($this->user->email, $this->user->name);
public function toMail($notifiable)
{
return (new MailMessage)
->markdown('admin.email.feedback', [
'user' => $this->user,
'farms' => $farm_names,
'message' => $this->message,
'time' => $this->time])
->subject("Customer feedback")
->from($this->user->email, $this->user->name); // from
}
由于在 config.mail
中设置了默认发送邮件,并且没有为客户电子邮件地址设置密码,我收到错误消息:
Swift_TransportExceptionExpected response code 250 but got code "550", with message "550 Email Rejected, Invalid From Address - gmail.com"
两种解决方案:
1] 如果我想使用默认 config.mail
信息,请删除 from
方法并替换为 replyTo
方法。
2] 通过保存他们的 email details.
设置从客户帐户 smtp 设置发送邮件
我可以从 tinker 发送电子邮件,但是当我尝试从 laravel 框架中的代码发送电子邮件时,出现以下错误:
Swift_TransportException (550)
Expected response code 250 but got code "550", with message "550 Bad HELO - Host impersonating domain name [mydomain.com] "
这是我用来测试从 laravel 控制器发送电子邮件的简单邮件方法:
Mail::send('errors.401', [], function ($message) { $message->to('my.email@gmail.com')->subject('this works!'); });
.env 文件:
MAIL_DRIVER=smtp
MAIL_HOST=mail.mydomain.com
MAIL_PORT=587
MAIL_USERNAME=info@mydomain.com
MAIL_PASSWORD=<password>
MAIL_ENCRYPTION=
我已完成以下步骤,但仍然无效:
composer dump-autoload
php artisan view:clear
php artisan cache:clear
php artisan config:cache
更新:
我的代码在 ubuntu 服务器上,我配置了 dns 服务器和 bind9 以将域连接到服务器,并且我有一个外部邮件服务器来处理电子邮件。
因此,每当在 ubuntu 服务器中创建电子邮件请求时,它都会将其转发到外部邮件服务器。
我应该在哪里寻找问题?
我在浪费了很多时间后解决了这个问题,希望这个答案不要再浪费别人的时间了。
这是由于本地域名, 我们需要在 mail.php 配置文件中定义一个本地名称,这样我们的服务器就不会与外部服务器域名混淆。
'local_domain' => env('MAIL_HOST', 'mail.mydomain.com'),
在我的例子中,我在通知 class.
的toMail
函数中的 MailMessage
实例上使用了方法 ->from($this->user->email, $this->user->name);
public function toMail($notifiable)
{
return (new MailMessage)
->markdown('admin.email.feedback', [
'user' => $this->user,
'farms' => $farm_names,
'message' => $this->message,
'time' => $this->time])
->subject("Customer feedback")
->from($this->user->email, $this->user->name); // from
}
由于在 config.mail
中设置了默认发送邮件,并且没有为客户电子邮件地址设置密码,我收到错误消息:
Swift_TransportExceptionExpected response code 250 but got code "550", with message "550 Email Rejected, Invalid From Address - gmail.com"
两种解决方案:
1] 如果我想使用默认 config.mail
信息,请删除 from
方法并替换为 replyTo
方法。
2] 通过保存他们的 email details.