【问题标题】:How to handle error thrown when sending to an email that is not existed in Laravel?如何处理发送到 Laravel 中不存在的电子邮件时引发的错误?
【发布时间】:2021-10-21 16:20:46
【问题描述】:

我正在创建一个佣金审批模块,当管理员拒绝佣金请求时,它将删除佣金并将电子邮件发送回提交者。但是,当我测试代码时,它会显示这样的错误。在对此错误进行了更多测试后,我意识到只有当管理员拒绝具有电子邮件但在邮件服务器中不存在的用户时才会发生这种情况。我知道我在邮件功能中使用的代码来自旧版本,但是这个系统已经开发了很多年。我的问题是如何正确处理抛出的错误?最好,我希望系统重定向回主页并显示错误页面,就像它在下面的代码中完成的那样。请注意,当前代码还不足以处理错误。

错误:

预期的响应代码为 354,但得到代码“503”,消息为“503-All RCPT 命令因以下错误而被拒绝:503-此处没有此类用户” 503 有效的 RCPT 命令必须在 DATA 之前

Error screenshot

代码:

try { // email sending actual part here
    Mail::send([], [], function($message)use($data) {
        $message->from($data['from'])
            ->to($data["email"])
            ->subject($data["subject"])
            ->setBody($data["messages"], 'text/html');
        });
} catch(JWTException $exception){
    $this->serverstatuscode = "0";
    $this->serverstatusdes = $exception->getMessage();
}
    
if(Mail::failures()) {
    $this->statusdesc  =   "Error sending mail";
    $this->statuscode  =   "0";
    return redirect()->route('voyager.dashboard')
    ->with([
        'message'    => "Commission is rejected but fail to send email",
        'alert-type' => 'warning',
    ]);
} else {
    return redirect()->back()
    ->with([
        'message'    => "Commission is rejected and comment is sent via email successfully",
        'alert-type' => 'success',
    ]);
}

【问题讨论】:

  • 这是验证邮件发件人的问题。发件人邮件与 .env 中配置的 mail_username 不匹配

标签: php laravel email


【解决方案1】:

错误的基础可能是由Mail Sender Verification Error 引起的。当mail from 的值与.env 中的mail_username 不同时会导致这样的错误消息。

例如,如果您在来自外观的邮件中使用sender@mail.com,并且在 .env 中配置了类似“sender@corporate.com”的内容,那么您一定会收到错误消息。

要解决此问题,请确保在 .env 文件的 mail_user 中配置的电子邮件应该是用作邮件地址 mail from helper 的电子邮件

从上面的例子中,->from() 中的 then 应该是 ->from('sender@corporate.com')

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 2021-07-22
    • 2020-04-08
    • 2020-04-04
    • 2018-11-29
    • 2019-01-24
    • 1970-01-01
    相关资源
    最近更新 更多