2013-03-19 268 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/

史蒂夫的评论是不正确的;经过身份验证的发件人应该能够设置任何发件人:标题。

相关问题