通过C#通过Google Apps帐户发送电子邮件

我有一个标准的Google Apps帐户。 我已经通过Google Apps设置了一个自定义域。 使用Gmail界面时,我可以通过Google Apps成功收发电子邮件。 但是,我想通过代码发送电子邮件。 为了尝试这个,我一直在尝试下面的代码:

MailMessage mailMessage = new MailMessage(); mailMessage.To.Add("someone@somewhere.com"); mailMessage.Subject = "Test"; mailMessage.Body = "<html><body>This is a test</body></html>"; mailMessage.IsBodyHtml = true; // Create the credentials to login to the gmail account associated with my custom domain string sendEmailsFrom = "emailAddress@mydomain.com"; string sendEmailsFromPassword = "password"; NetworkCredential cred = new NetworkCredential(sendEmailsFrom, sendEmailsFromPassword); SmtpClient mailClient = new SmtpClient("smtp.gmail.com", 587); mailClient.EnableSsl = true; mailClient.DeliveryMethod = SmtpDeliveryMethod.Network; mailClient.UseDefaultCredentials = false; mailClient.Timeout = 20000; mailClient.Credentials = cred; mailClient.Send(mailMessage); 

当发送方法到达时,将引发一个exception:

“SMTP服务器需要安全的连接,或者客户端没有通过validation,服务器响应是:5.5.1需要validation。

如何通过我的自定义域名通过Google发送电子邮件?

谢谢!

没有必要硬编码代码中的所有smtp设置。 把它们放在web.config中。 这样,您可以根据需要encryption这些设置,并在不重新编译应用程序的情况下即时更改它们。

 <configuration> <system.net> <mailSettings> <smtp from="example@domain.com" deliveryMethod="Network"> <network host="smtp.gmail.com" port="587" userName="example@domain.com" password="password"/> </smtp> </mailSettings> </system.net> </configuration> 

结束发送电子邮件时,只需在您的SmtpClient上启用SSL即可:

 var message = new MailMessage("navin@php.net"); // here is an important part: message.From = new MailAddress("example@domain.com", "Mailer"); // it's superfluous part here since from address is defined in .config file // in my example. But since you don't use .config file, you will need it. var client = new SmtpClient(); client.EnableSsl = true; client.Send(message); 

确保您使用的是与您尝试通过Gmail进行身份validation的电子邮件地址相同的电子邮件地址。

注意 :从.NET 4.0开始,您可以在web.config中插入enableSsl =“true”,而不是在代码中进行设置。

这是我在WPF 4中使用的

 SmtpClient client = new SmtpClient(); client.Credentials = new NetworkCredential("sender_email@domain.tld", "P@$$w0rD"); client.Port = 587; client.Host = "smtp.gmail.com"; client.EnableSsl = true; try { MailAddress maFrom = new MailAddress("sender_email@domain.tld", "Sender's Name", Encoding.UTF8), maTo = new MailAddress("recipient_email@domain2.tld", "Recipient's Name", Encoding.UTF8); MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address); mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>"; mmsg.BodyEncoding = Encoding.UTF8; mmsg.IsBodyHtml = true; mmsg.Subject = "Some Other Text as Subject"; mmsg.SubjectEncoding = Encoding.UTF8; client.Send(mmsg); MessageBox.Show("Done"); } catch (Exception ex) { MessageBox.Show(ex.ToString(), ex.Message); //throw; } 

注意防火墙和反病毒。 这些令人毛骨悚然的事情往往阻止发送电子邮件的应 我使用McAfee Enterprise,我必须添加可执行文件的名称(例如Bazar。*,用于Bazar.exe和Bazar.vshost.exe)才能发送电子邮件…

将端口更改为465

没有必要做任何事情。 只需在第一次login您的当前帐户并按照说明进行操作。

你的问题将解决。 这是因为您在Google应用中创build了该帐户,但没有login。 只需login并按照说明进行操作即可。