2013-03-19 189 views
0

在C#中,我有一種通過gmail帳戶發送電子郵件的方法。 當我在Microsoft Outlook中打開電子郵件時,發件人地址顯示爲gmail地址,而不是我在標題中使用的strFromAddress。從顯示Gmail地址的地址發送郵件smtp gmail

SmtpClient smtp = new SmtpClient(); 
     smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
     smtp.UseDefaultCredentials = true; 
     smtp.EnableSsl = true; 
     smtp.Host = "smtp.gmail.com"; 
     smtp.Port = 587; 
     smtp.Credentials = new NetworkCredential("***@gmail.com", "*****"); 

      var strFromAddress = "[email protected]"; 
      var strToAddress = "[email protected]"; 
      var strSubject = "Album: '" + lbltitel.Text + "' bestelling"; 
      var strBody = "<html><head>"; 
      // new instance of MailMessage 
      MailMessage mailMessage = new MailMessage(); 

      // Sender Address 
      mailMessage.From = new MailAddress(strFromAddress); 
      // mailMessage.Headers("Selexion Clix Demuynck <[email protected]>"); 
      // mailMessage.Bcc.Add(new MailAddress("[email protected]")); 

      // Recepient Address 
      mailMessage.To.Add(new MailAddress(strToAddress)); 
      mailMessage.Headers.Add("Reply-To", "[email protected]"); 
      // Subject 
      mailMessage.Subject = strSubject; 

      // Body 
      mailMessage.Body = strBody; 

      // format of mail message 
      mailMessage.IsBodyHtml = true; 
      // new instance of Smtpclient 

       smtp.Send(mailMessage); 
+0

AFAIK此郵件無法發送。您正在要求gmail SMTP服務將郵件從不屬於Gmail的地址發送到外部地址。如果我是對的,這是世界上每個SMTP服務器都不允許的(垃圾郵件服務器除外) – Steve 2013-03-19 14:28:59

+0

注意:'SmtpClient'是'IDisposable',應該這樣使用:'使用(var smtp = new SmtpClient()){。 ..}' – 2013-03-19 14:29:57

+0

可不可以。儘管在使用語句中包裝一次性對象通常被認爲是很好的做法,但事實並非總是如此。有時你需要明確地控制對象的處理方式和時間。 - 雖然我同意在這種情況下使用陳述是明智的:-) – Mintey 2013-03-19 14:35:17

回答

0

Gmail將改變「從」地址用來登錄到SMTP服務器,賬號,除非所使用的電子郵件地址在'from'字段中驗證屬於同一個所有者。因此,在您的gmail偏好設置中,只需添加並驗證此特定地址即可。

0

發生這種情況是因爲Google違反了SMTP協議。這裏有詳細的文章:http://lee-phillips.org/gmailRewriting/

史蒂夫的評論是不正確的;經過身份驗證的發件人應該能夠設置任何發件人:標題。

相關問題