我正在创建一个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)
答案 0 :(得分:2)
首先,回复消息应该执行以下操作(这些内容比其他任何内容都更常见):
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
标题中已解析的电子邮件地址。
如果您要自动生成对邮件的回复,则最简单的方法是将回复文本添加到"引用的"原始邮件正文(通常称为顶部发布),但有些人在手动回复时会使用其他样式。
答案 1 :(得分:0)
根据我的经验,只要新邮件格式正确according to the SMTP RFC您就可以自由地执行您想要的操作,这取决于您。 SMTP本质上是一个中继代理,而不是一个邮件服务器。