首页 > 解决方案 > 尝试发送邮件,但“给定 [xxxx] 邮箱中的地址不符合 RFC 2822, 3.6.2。”

问题描述

我想将邮件发送到实际的电子邮件地址。

当用户注册时,我使用用户的电子邮件地址(取自注册表单)将激活链接发送到该电子邮件。

当我使用 mailtrap.io 尝试此操作时,它显示正确的“发件人”电子邮件地址和“收件人”电子邮件地址

public function build()
{
    return $this->from('smuiauol@gmail.com')->subject('SMUIA account verification')->view('emails.verify')->with('user', $this->user);
}

protected function create(array $data)
{

   $user = User::create([
        'name' => $data['name'],
        'surname' => $data['surname'],
        'program' => $data['program'],
        'year' => isset($data['year']) ? $data['year'] : null,
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);

    $verifyUser = VerifyUser::create([
        'user_id' => $user->id,
        'token' => str_random(40)
    ]);

    Mail::to($user->email)->send(new VerifyMail($user));

    return $user;
}

现在它给出了错误:

给定 [xxxx] 邮箱中的地址不符合 RFC 2822, 3.6.2。

标签: phplaravelemail

解决方案


这是哪个班?您可能想尝试使用该dd()功能来检查您在脚本中使用的值。

实际上,我今天早些时候正在写一些与此非常相似的东西。所以我假设这个类是Mail\UserVerify.php。有几件事要尝试

  1. 您是否验证了您的模板?(它给我带来了一个问题)。- 如果不是尝试创建它,然后再试一次
  2. 您是否尝试过替换$this->user->email$data['email']查看它是否有效?- 如果它确实验证了$this->user->email==$data['email'].
  3. 您是否验证了用户是在数据库中创建的?- 如果不是,那么 $this->user 没有价值。
public function build()
{
    return $this->from('smuiauol@gmail.com')
                ->subject('SMUIA account verification')
                ->view('emails.verify')
                ->with('user', $this->user);
}

protected function create(array $data)
{

   $user = User::create([
        'name'    => $data['name'],
        'surname' => $data['surname'],
        'program' => $data['program'],
        'year'    => isset($data['year']) ? $data['year'] : null,
        'email'   => $data['email'],
        'password'=> bcrypt($data['password']),
    ]);

    $verifyUser = VerifyUser::create([
        'user_id' => $user->id,
        'token'   => str_random(40)
    ]);

    Mail::to($user->email)
        ->send(new VerifyMail($user));

    return $user;
}

祝你好运。


推荐阅读