2012-01-06 104 views
1

我想在應用程序中將某個電子郵件地址作爲某人發送(電子郵件應顯示爲發送方式),但每次發送電子郵件時,該名稱都會顯示爲我提供的,但無論我做什麼,電子郵件地址都是我用來進行身份驗證的。回覆電子郵件地址不起作用

有什麼辦法讓電子郵件顯示爲來自我指定的某個人,或者它總是顯示爲來自已驗證的電子郵件?

這是我有...

 using (var message = new MailMessage() 
     { 
      From = From != new MailAddress(From.Email, From.FormalName), 
      Subject = Subject, 
      Body = Body 
     }) 
     { 
      if (To != null) 
      { 
       foreach (var address in To) 
       { 
        message.To.Add(new MailAddress(address.Email, address.FormalName)); 
       } 
      } 
      if (CC != null) 
      { 
       foreach (var address in CC) 
       { 
        message.CC.Add(new MailAddress(address.Email, address.FormalName)); 
       } 
      } 
      var smtp = new SmtpClient 
      { 
       Host = "smtp.gmail.com", 
       Port = 587, 
       EnableSsl = true, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       Credentials = new NetworkCredential("myaccount", "mypassword") 
      }; 
      message.IsBodyHtml = true; 
      message.Headers.Add("Reply-To", message.From.Address); 
      smtp.Send(message); 
     } 

回答

0

它看起來像你期待Reply-To:頭,表示該消息是從誰。實際上,爲此目的有一個名爲From:的標題。因此,嘗試:

message.Headers.Add("From", message.From.Address); 

請注意,Gmail可能會增加一個Sender:頭(可能會或可能不會被收件人的電子郵件客戶端顯示),反映您用來發送郵件的實際帳戶。

+0

試驗了From頭文件和相同的結果... – Benny 2012-01-06 03:51:40

+0

你可以在接收方結束並確認你相信你放在那裏*在那裏? – 2012-01-06 03:54:37

+0

From標題肯定會在我身上發生變化......它在收到的實際消息中與我在調試時看到的不同。 – Benny 2012-01-06 03:59:51

0
從一個特定的用戶自動發送電子郵件時

最佳做法是使用「代表」結合語法(的ReplyTo或發件人在MAILMESSAGE)與從您的系統地址見Sending "on behalf of" emails

但是你可以把只要你的郵件服務器支持它並且接收郵件服務器不做反向查詢,就可以直接從字符串中獲取地址

+0

我試過指定所有三個(From,Sender和ReplyTo)和同樣的東西 – Benny 2012-01-06 03:52:14

+0

我認爲你的probem是prehaps,你正在使用GMail作爲你的SMTP服務器。它看起來像GMail將只允許您轉發來自您自己地址的電子郵件。嘗試將您的Gmail地址放在from字段中,並將其他字段留空。請參閱http://support.google.com/mail/bin/answer.py?hl=zh_CN&answer=22370&ctx=cb&src=cb&cbid=-ypwk65f3hnjg&cbrank=3瞭解有關smtp允許的詳細信息 – 2012-01-06 03:58:43