2016-04-25 148 views
1

我想通过我的Laravel CRM系统发送邮件作为Gmail中的回复。Gmail IMAP php邮件作为电子邮件的答复发送

我的代码如下:

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: '.Auth::user()->f_name.' '.Auth::user()->l_name.'<'.$gmail_address.'>'." \r\n" . 
         'Reply-To: <'.$gmail_address.'>'. "\r\n" . 
         'Subject: '.$subject."\r\n". 
         'To: '.$to."\r\n". 
         'In-Reply-To: <[email protected]>'. "\r\n" . 
         'References: <[email protected]>'. "\r\n" . 
         'X-Mailer: PHP/' . phpversion(); 

imap_mail ($to , $subject ,$body,$headers); 

但将其作为一个新的电子邮件,即不作为回复。

理想情况下,应该在回复邮件正文的末尾添加“Re:”主题并追加实际的电子邮件。

任何帮助,请..

+0

您必须自行附加原始邮件。 IMAP不会为你做。在imap_mail方法中没有魔法发生。 –

+0

@awons,但它会是一个新的邮件,而不是一个回复,我想要像gmail中的线程那样做。 –

+1

我不关注。用imap_mail_compose尝试创建适当的标题。通过“In-Reply-To”和“参考资料”,您可以告诉Gmail它是回复,但您必须亲自附上原始邮件。 –

回答

0

In-Reply-ToReferences头被硬编码到一些魔法值;这可能不是你想要做的。

这是我怎么会提高代码:

  • 使用它处理RFC2047,RFC2231和RFC特别是5322你的水平还比较低位的库。用户的l_name中的任何非ascii字符很可能会生成不符合规定的消息。阅读整个RFC5322以了解电子邮件的工作原理。阅读关于各种编码的内容。
  • 跟踪您正在回复的消息的Message-Id,并相应地设置您自己的In-Reply-To & References标题。