首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过谷歌应用程序帐户通过C#发送电子邮件

通过谷歌应用程序帐户通过C#发送电子邮件
EN

Stack Overflow用户
提问于 2009-04-16 20:47:30
回答 5查看 64.1K关注 0票数 67

我有一个标准的Google Apps账号。我已经通过谷歌应用设置了一个自定义域。当我使用Gmail界面时,我可以通过Google Apps成功地发送和接收电子邮件。但是,我想通过代码发送电子邮件。为了尝试这样做,我尝试了以下代码:

代码语言:javascript
复制
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); 

当达到Send方法时,会抛出一个异常,声明:

“服务器要求安全连接或客户端未经过身份验证。服务器响应为:需要5.5.1身份验证。”

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

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-04-16 20:50:53

不需要在代码中硬编码所有smtp设置。将它们放在web.config中。这样,您可以在需要时加密这些设置,并在不重新编译应用程序的情况下动态更改它们。

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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中进行身份验证的电子邮件地址相同。

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

票数 93
EN

Stack Overflow用户

发布于 2011-01-02 16:02:31

这是我在WPF 4中使用的

代码语言:javascript
复制
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),
    MailAddress maTo = new MailAddress("recipient_email@domain2.tld", "Recipient's Name", Encoding.UTF8);
    MailMessage mmsg = new MailMessage(maFrom, maTo);
    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企业版,我必须添加可执行文件的名称(如Bazar.exe和Bazar.vshost.exe的Bazar.* )才能发送电子邮件……

票数 8
EN

Stack Overflow用户

发布于 2009-12-13 01:04:10

将端口更改为465

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/757987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档