SMTP回复方法
本文关键字:方法 回复 SMTP | 更新日期: 2023-09-27 17:57:32
我正在创建一个WebMail客户端,但我有一个问题
如果只使用SMTPClient,发送邮件很容易,但我该如何发送回复,例如,如果用户决定回复消息,它基本上只是复制旧的正文并将其附加到我要发送的新正文中,还是什么是回复消息的更好方法
所以我最想做的就是
MailAddress replyto = new MailAddress("reply@whosoever.something");
replyto.What? = recievedmessage ID? (wich I get from my Imap Library)
replyto.Headers["whatgoeshere"] = recievedmessage ID? (wich I get from my Imap Library)
首先,回复消息应该做以下事情(这些都是约定,而不是其他任何事情):
- 如果已设置,则应将回复消息的
To
标头设置为原始消息的Reply-To
值,否则应设置为From
值 - 回复消息的
Subject
标头应设置为原始消息的Subject
标头的值,但要使用"Re: "
前缀(除非它已经有前缀) - 回复消息的
In-Reply-To
标头应设置为原始消息的Message-Id
标头值 - 应将回复消息的
References
标头设置为原始消息的References
标头值,并在其后面附加原始消息的Message-Id
值
这样就可以处理标题了。对于邮件正文,这将取决于您回复的邮件正文是text/plain
格式还是text/html
格式。
由于text/html
消息没有真正的约定,因此我将解释text/plain
回复的约定。
通常,作为电子邮件客户端的作者,您所做的是构建以下格式的默认回复文本主体:
On ${TIMESTAMP}, ${AUTHOR_NAME} wrote:
然后是原始消息文本,每行前缀为"> "
(大于空格)。
根据邮件客户端的不同,${TIMESTAMP}字符串的格式会有所不同,但它通常与原始消息的Date
标头的格式大致相同。
当然,作者的名字取自From
标题中解析的电子邮件地址。
如果你是自动生成邮件回复,那么在"引用"的原始邮件正文文本(通常被称为顶部帖子)之前添加回复文本可能是最简单的,但有些人在手动回复时也会使用其他样式。
根据我的经验,只要新消息根据SMTP RFC正确格式化,你就可以自由地做你想做的事。SMTP本质上是一个中继代理,而不是邮件服务器。