使用SmtpClient发送邮件作为回复

时间:2017-07-28 10:29:10

标签: c# asp.net-mvc email smtpclient

场景:需要发送一封实际上来自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);

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

1 个答案:

答案 0 :(得分:1)

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

  

在-回复

     

参考

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

我找不到任何关于SMTP标头的“官方”参考,但以下内容提供了一些details

  

In-Reply-To和References标头的存在表明该消息是对先前消息的回复。

     

References标题使“线程邮件阅读”和每个讨论存档成为可能。

此外,一些邮件客户也想要完全相同的主题。请参阅此相关SO post

在Outlook中,如果邮件主题相同且文件夹启用了“会话视图”,则无论上述标题如何,它都会将所有邮件组合在同一主题中。

您可以手动使用客户端发送回复,并将邮件标题与原始邮件进行比较,以了解客户端如何添加邮件标题。