2017-07-28 57 views
0

場景:需要發送一封郵件,它實際上是一個來自asp.net c#程序的回覆郵件。我管理郵件發送到客戶端,但它發送一個新的郵件。使用SmtpClient發送郵件作爲回覆

代碼:

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。我只需要知道如何發送郵件作爲答覆。

+0

不確定這是你想要用代碼做的事情嗎?你不是隻是從該收件箱設置自動回覆? – ediblecode

+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中,如果郵件主題相同,並且對該文件夾啓用了「會話視圖」,那麼無論上述標題如何,它都會將具有相同主題的所有郵件歸爲一組。

您可以使用客戶端手動發送回覆,並將郵件標題與原始郵件進行比較,以查看客戶端如何添加郵件標題。