使用asp.net和google smtp服务器发送电子邮件

时间:2015-04-22 15:38:27

标签: c# asp.net smtp

我在codebehind aspx页面中编写了以下代码来发送电子邮件。我想使用google smtp服务器。但有些我没有收到邮件

                protected void btnSubmit_Click(object sender, EventArgs e)
                {              
                // Sender e-mail address.
                MailAddress From = new MailAddress(txtFrom.Text);
                // Recipient e-mail address.
                MailAddress To = new MailAddress(txtTo.Text);
                MailMessage Msg = new MailMessage(From,To);
                Msg.Subject = txtSubject.Text;
                Msg.Body = txtBody.Text;
                // your remote SMTP server IP.
                SmtpClient client = new SmtpClient("smtp.gmail.com");
                client.Credentials = new System.Net.NetworkCredential
                 ("*******@gmail.com", "**********");
                client.EnableSsl = true;
                client.Port = 465;
                client.Send(Msg);
                client.Dispose();
                }

我做错了什么?请帮忙

4 个答案:

答案 0 :(得分:1)

以下是 SmtpClient 对象需要执行的操作:

     SmtpClient client = new SmtpClient();
     client.DeliveryMethod = SmtpDeliveryMethod.Network;
     client.EnableSsl = true;
     client.Host = "smtp.gmail.com";
     client.Port = 587;
     client.Credentials = new System.Net.NetworkCredential("xxxx@gmail.com", "xxxx");

答案 1 :(得分:0)

Gmail使用OAuth 2.0,您可能必须提供某种API密钥才能访问其邮件功能。

  

使用IMAP访问邮件并使用SMTP发送邮件通常使用现有的IMAP和SMTP库来完成,以方便使用。只要这些库支持简单身份验证和安全层(SASL),它们就应该与Gmail支持的SASL XOAUTH2机制兼容。

     

除了SASL XOAUTH2协议文档之外,您可能还需要阅读使用OAuth 2.0访问Google API以获取有关实施OAuth 2.0客户端的更多信息。

     

“库和示例”页面使用带有IMAP或SMTP的SASL XOAUTH2机制提供各种流行语言的代码示例。   (source

答案 2 :(得分:0)

这是一个通用的电子邮件程序。

适用于Port = 25。

记住gmail是一个IMAP服务器。

  try 
  { 
           MailMessage msg = new MailMessage ();
           MailAddress fromAdd = new MailAddress("fromemail@email.com");
           msg.[To].Add("toemail@email.com");
           msg.Subject = "Choose Session Members";
           msg.From = fromAdd;
           msg .IsBodyHtml = true;
           msg.Priority = MailPriority.Normal;
           msg .BodyEncoding = Encoding.Default;
           msg.Body = "<center><table><tr><td><h1>Your Message</h1><br/><br/></td></tr>";
           msg.Body = msg.Body + "</table></center>";
           SmtpClient smtpClient = new SmtpClient ("smtp.yourserver.com", "25");
           smtpClient.EnableSsl = true;
           smtpClient.UseDefaultCredentials = false;
           smtpClient.Credentials = new System.Net.NetworkCredential("yourname@yourserver.com", "password");
           smtpClient .DeliveryMethod = SmtpDeliveryMethod.Network;
           smtpClient.Send(msg);
           smtpClient.Dispose();
        }

答案 3 :(得分:0)

首先,你检查了网络邮件吗?在发送文件夹中?很多年前我遇到了同样的问题,但我意识到我的防火墙阻止了我。

其他事,

“SmtpClient类不支持隐式SSL。它支持显式SSL,这需要通过端口25与SMTP服务器进行不安全的连接,以便协商传输级别安全性(TLS)。”

http://blog.ramsoftsolutions.com/2015/04/sending-mail-via-smtp-over-implicit-ssl.html

来源:

How can I send emails through SSL SMTP with the .NET Framework?

此致