douwen5546
2019-02-18 05:25 阅读 75
已采纳

Laravel邮件不符合RFC 2822,3.6.2

I am trying to send email to multiple receivers and I get the error below

Address in mailbox given [2@test.com,3@test.com,4@test.com] does not comply with RFC 2822, 3.6.2.

This is how my data looks like:

array:6 [▼
  "_token" => "xlhKNDnqAuvQpurPpDM2eGseNanUm5P1NBbPA71Z"
  "from" => "test@test.com"
  "mainpeople" => "1@test.com" //to
  "ccpeople" => "2@test.com,3@test.com,4@test.com" //cc
  "subject" => "testing mail"
  "messagenote" => "<p>this is a test mail.<br></p>"
]

Code

$data = array(
  'from' => $request->from,
  'to' => $request->mainpeople,
  'ccpeople' => array($request->ccpeople),
  'subject' => $request->subject,
  'messagenote' => $request->messagenote,
);

Mail::to($data['to'])->cc($data['ccpeople'])->send(new ComposeMail($data));

Also, I tried to loop CC emails but the result was the same:

$data = array(
    'from' => $request->from,
    'to' => $request->mainpeople,
    'ccpeople' => array($request->ccpeople),
    'subject' => $request->subject,
    'messagenote' => $request->messagenote,
);

foreach($data['ccpeople'] as $people){
    $cc = $people;
}

Mail::to($data['to'])->cc($cc)->send(new ComposeMail($data));

Any idea how to fix that?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    dongwoqin7034 dongwoqin7034 2019-02-18 05:35

    You can't use array() directly on string to convert it to array:

    your $data should be as it is:

    $data = array(
      'from' => $request->from,
      'to' => $request->mainpeople,
      'ccpeople' => $request->ccpeople,
      'subject' => $request->subject,
      'messagenote' => $request->messagenote,
    );
    

    Instead of

    foreach($data['ccpeople'] as $people){
        $cc = $people;
    }
    

    try explode() like below :

    $cc = explode(',',$data['ccpeople']);
    

    and pass it to your mail function:

    Mail::to($data['to'])->cc($cc)->send(new ComposeMail($data));
    
    点赞 评论 复制链接分享

相关推荐