使用SmtpClient作为回复发送电子邮件

3

场景:需要从ASP.NET C#程序中发送一封邮件,其实是回复邮件。我已经成功地将邮件发送给了客户,但它被作为一封新邮件发送。

代码:

var SMTP = _genRepository.GetData("SELECT * FROM LOCATION WHERE ID='" + mail.LocationId + "'").FirstOrDefault();
SmtpClient c = new SmtpClient(SMTP.SMTP_Host, SMTP.SMTP_Port);
MailAddress add = new MailAddress(mail.From);
MailMessage msg = new MailMessage();
msg.To.Add(add);
msg.From = new MailAddress(SMTP.Email);
msg.IsBodyHtml = true;
msg.Subject = mail.Subject;
msg.Body = mail.Body;
c.Credentials = new System.Net.NetworkCredential(SMTP.Email, SMTP.EmailPassword);
c.EnableSsl = true;
c.Send(msg);

我有发件人的电子邮件消息ID。我只需要知道如何将邮件作为回复发送。


不确定这是你想用代码来做的事情吗?难道你不只是在那个收件箱中设置一个自动回复吗? - ediblecode
我正在构建这个小型的网络应用程序,它可以读取并发送回复。 - Ranjith Varatharajan
我能知道这封电子邮件是否在垃圾邮件、收件箱或者废纸篓中吗? - user123456
1个回答

3
如果您添加以下标题,邮件客户端将将该邮件视为回复。

In-Reply-To(在回复中)

References(参考文献)

        MailMessage mailMessage = new MailMessage();
        mailMessage.Headers.Add("In-Reply-To", "<Message-ID Value>");
        mailMessage.Headers.Add("References", "<Message-ID Value>");

我找不到任何SMTP头的“官方”参考资料,但以下内容提供了一些细节:详情
存在In-Reply-To和References头表明该消息是对以前消息的回复。
References头使“分级邮件阅读”和按讨论归档成为可能。
此外,某些邮件客户端也需要完全相同的主题。请参见相关的SO帖子 在Outlook中,如果文件夹启用“会话视图”并且邮件主题相同,则无论上述标题如何,它都将将所有具有相同主题的邮件分组在一起。
您可以使用客户端手动发送回复,并将消息头与原始邮件进行比较,以查看客户端如何添加消息头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接