SMTP回复方法

时间:2014-04-08 19:53:10

标签: c# smtp smtpclient

我正在创建一个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)

2 个答案:

答案 0 :(得分:2)

首先,回复消息应该执行以下操作(这些内容比其他任何内容都更常见):

  1. 回复邮件的To标题应设置为原始邮件的Reply-To值(如果已设置),否则设置为From值。
  2. 回复邮件的Subject标头应设置为原始邮件的Subject标头的值,但前缀为"Re: "(除非已经有一个)。
  3. 回复邮件的In-Reply-To标题应设置为原始邮件的Message-Id标题值。
  4. 回复邮件的References标题应设置为原始邮件的References标题值,并附加原始邮件的Message-Id值它。
  5. 负责标题。对于消息正文,这取决于您要回复的邮件正文是text/plain还是text/html格式。

    由于text/html消息没有真正的约定,我将解释text/plain回复的惯例。

    通常,作为电子邮件客户端的作者,您所做的是按以下格式构建默认回复文本正文:

    On ${TIMESTAMP}, ${AUTHOR_NAME} wrote:
    

    后跟原始消息文本,每行前缀为"> "(大于空格)。

    根据邮件客户端,$ {TIMESTAMP}字符串的格式将有所不同,但它的格式通常与原始邮件Date标题的格式大致相同

    当然,作者姓名取自From标题中已解析的电子邮件地址。

    如果您要自动生成对邮件的回复,则最简单的方法是将回复文本添加到"引用的"原始邮件正文(通常称为顶部发布),但有些人在手动回复时会使用其他样式。

答案 1 :(得分:0)

根据我的经验,只要新邮件格式正确according to the SMTP RFC您就可以自由地执行您想要的操作,这取决于您。 SMTP本质上是一个中继代理,而不是一个邮件服务器。