正确回复和转发电子邮件 headers
Correct headers for replying and forwarding emails
你是那个对电子邮件了如指掌的程序员吗?你能梦见邮件 headers,闭着眼睛写吗?也许你能帮我解决这个问题。
让我解释一下...
工作流程
- 邮件服务器接收邮件
- A PHP cronjob 将所有来自 IMAP 的电子邮件导入 MySQL 数据库
- 用户在我的应用程序
Inbox
中找到了所有电子邮件
正在发送电子邮件
在同一个应用程序中,用户可以发送新电子邮件。我已经使用以下代码片段处理了该问题。
$message = \Swift_Message::newInstance()
->setSubject($form->get('subject')->getData())
->setFrom('me@example.com')
->setTo($form->get('to'))
->setBody(
$this->renderView(
'MailBundle:Email:contact.html.twig',
array(
'ip' => $request->getClientIp(),
'name' => $form->get('to')->getData(),
'message' => $form->get('message')->getData()
)
)
)
;
这很好用。如果提交了上述电子邮件,我会在 IMAP 已发送文件夹中创建一封新电子邮件。这轮到他由 PHP cronjob 导入并放入 MySQL 数据库中。它显示在我的应用程序的已发送文件夹中。
问题
既然您对我的应用程序的工作方式有了大致的了解,我有一些我不太确定的事情。
- 如何使用 SwiftMailer 创建对导入电子邮件的回复。
- 如何使用 SwiftMailer 转发导入的电子邮件
我想将我的应用程序用作真正的邮件客户端,并希望正确设置邮件 headers 等。
我当然可以只发送一封电子邮件,其中包含原始邮件 body 和带有前缀 "RE:" 的主题。但我不确定是否仅此而已。我不知何故怀疑我需要做更多。
简而言之
如何使用 SwiftMailer 回复或转发保存在数据库中的电子邮件?
更新
我按照这个问题的答案中的建议实施了回复 headers。但是我不确定这是否也适用于转发。我只是想确保邮件提供商不会因为 headers 不正确而阻止我的电子邮件。
我比较了 "first" 电子邮件和回复之间 header 的区别。
要回复,看来你必须在回复中添加两行 header :
In-Reply-To: [Message-ID](在第一封邮件的 header 中找到 Message-ID)
参考资料:[Message-ID]
显然,您必须更改回复电子邮件中的 from
和 to
。 (我认为 SwiftMailer 会自己创建其他的)
要使用 SwiftMailer 在电子邮件 header 中添加行,请按以下步骤操作:
$headers = $message->getHeaders();
$headers->addTextHeader('In-Reply-To', $previousEmail->getHeaders()->getMessageId());
我输入的这个 getter 正是我对您的电子邮件实体的想象。
对于转发,只需打印电子邮件的来源并检查差异。
希望对您有所帮助。
更新:
对于前锋:完全一样。我只是比较了两个 headers.
您必须添加 In-Reply-To
和 References
。
并回答你的更新:你可以在电子邮件中放入任何你想要的东西(显然是字符串)header。如果您在其中添加一个未知变量,垃圾邮件分数将不会增长。
你是那个对电子邮件了如指掌的程序员吗?你能梦见邮件 headers,闭着眼睛写吗?也许你能帮我解决这个问题。
让我解释一下...
工作流程
- 邮件服务器接收邮件
- A PHP cronjob 将所有来自 IMAP 的电子邮件导入 MySQL 数据库
- 用户在我的应用程序
Inbox
中找到了所有电子邮件
正在发送电子邮件
在同一个应用程序中,用户可以发送新电子邮件。我已经使用以下代码片段处理了该问题。
$message = \Swift_Message::newInstance()
->setSubject($form->get('subject')->getData())
->setFrom('me@example.com')
->setTo($form->get('to'))
->setBody(
$this->renderView(
'MailBundle:Email:contact.html.twig',
array(
'ip' => $request->getClientIp(),
'name' => $form->get('to')->getData(),
'message' => $form->get('message')->getData()
)
)
)
;
这很好用。如果提交了上述电子邮件,我会在 IMAP 已发送文件夹中创建一封新电子邮件。这轮到他由 PHP cronjob 导入并放入 MySQL 数据库中。它显示在我的应用程序的已发送文件夹中。
问题
既然您对我的应用程序的工作方式有了大致的了解,我有一些我不太确定的事情。
- 如何使用 SwiftMailer 创建对导入电子邮件的回复。
- 如何使用 SwiftMailer 转发导入的电子邮件
我想将我的应用程序用作真正的邮件客户端,并希望正确设置邮件 headers 等。
我当然可以只发送一封电子邮件,其中包含原始邮件 body 和带有前缀 "RE:" 的主题。但我不确定是否仅此而已。我不知何故怀疑我需要做更多。
简而言之
如何使用 SwiftMailer 回复或转发保存在数据库中的电子邮件?
更新
我按照这个问题的答案中的建议实施了回复 headers。但是我不确定这是否也适用于转发。我只是想确保邮件提供商不会因为 headers 不正确而阻止我的电子邮件。
我比较了 "first" 电子邮件和回复之间 header 的区别。
要回复,看来你必须在回复中添加两行 header :
In-Reply-To: [Message-ID](在第一封邮件的 header 中找到 Message-ID)
参考资料:[Message-ID]
显然,您必须更改回复电子邮件中的 from
和 to
。 (我认为 SwiftMailer 会自己创建其他的)
要使用 SwiftMailer 在电子邮件 header 中添加行,请按以下步骤操作:
$headers = $message->getHeaders();
$headers->addTextHeader('In-Reply-To', $previousEmail->getHeaders()->getMessageId());
我输入的这个 getter 正是我对您的电子邮件实体的想象。
对于转发,只需打印电子邮件的来源并检查差异。
希望对您有所帮助。
更新:
对于前锋:完全一样。我只是比较了两个 headers.
您必须添加 In-Reply-To
和 References
。
并回答你的更新:你可以在电子邮件中放入任何你想要的东西(显然是字符串)header。如果您在其中添加一个未知变量,垃圾邮件分数将不会增长。