使用GMail SMTP发送邮件

时间:2011-07-07 13:26:15

标签: asp.net c#-4.0

我需要使用Gmail SMTP发送邮件,但它显示Failure sending mail.

你可以帮忙吗?

   <system.net>
    <mailSettings>
      <smtp from="myn@gmail.com ">
        <network host="smtp.gmail.com" defaultCredentials="false"
      port="587" userName ="myn@gmail.com" password="pass@123" />
      </smtp>
    </mailSettings>
   </system.net>


    public string SendEmail(bool readWebConfig)
    {
        string emailStatus = string.Empty;

        string from = "myn@gmail.com"; //Replace this with your own correct Gmail Address

        //Replace this with the Email Address to whom you want to send the mail
        string to = "myn@yahoo.com";
        string cc = "";
        string bcc = "";

        string fromName = "bryian";
        string userName = "myn@gmail.com";
        string password = "pass@123";

        Attachment attachment = null;

        //if you want to send attachment, include the file location
        // Attachment attachment = new Attachment("file location");

        SmtpClient client = new SmtpClient();
        client.EnableSsl = true; //Gmail works on Server Secured Layer

        if (!readWebConfig)
        {
            client.Credentials = new System.Net.NetworkCredential(userName, password);
            client.Port = 587; // Gmail works on this port
            client.Host = "smtp.gmail.com"; //hotmail: smtp.live.com
        }

        try
        {
            using (MailMessage mail = new MailMessage())
            {
                mail.From = new MailAddress(from, fromName);
                mail.ReplyTo = new MailAddress(from, fromName);
                mail.Sender = mail.ReplyTo;

                if (to.Contains(";"))
                {
                    string[] _EmailsTO = to.Split(";".ToCharArray());
                    for (int i = 0; i < _EmailsTO.Length; i++)
                    {
                        mail.To.Add(new MailAddress(_EmailsTO[i]));
                    }
                }
                else
                {
                    if (!to.Equals(string.Empty))
                    {
                        mail.To.Add(new MailAddress(to));
                    }
                }

                //CC
                if (cc.Contains(";"))
                {
                    string[] _EmailsCC = cc.Split(";".ToCharArray());
                    for (int i = 0; i < _EmailsCC.Length; i++)
                    {
                        mail.CC.Add(new MailAddress(_EmailsCC[i]));
                    }
                }
                else
                {
                    if (!cc.Equals(string.Empty))
                    {
                        mail.CC.Add(new MailAddress(cc));
                    }
                }

                //BCC
                if (bcc.Contains(";"))
                {
                    string[] _EmailsBCC = bcc.Split(";".ToCharArray());
                    for (int i = 0; i < _EmailsBCC.Length; i++)
                    {
                        mail.Bcc.Add(new MailAddress(_EmailsBCC[i]));
                    }
                }
                else
                {
                    if (!bcc.Equals(string.Empty))
                    {
                        mail.Bcc.Add(new MailAddress(cc));
                    }
                }

                string message = "this is a test message";

                mail.Subject = "test subject";

                mail.Body = "<div style=\"font: 11px verdana, arial\">";
                mail.Body += message.Replace("\n", "<br />") + "<br /><br />";
                mail.Body += "<hr /><br />";
                mail.Body += "<h3>Sender information</h3>";
                mail.Body += "<div style=\"font-size:10px;line-height:16px\">";
                mail.Body += "<strong>Name:</strong> " + fromName + "<br />";
                mail.Body += "<strong>E-mail:</strong> " + from + "<br />";
                mail.IsBodyHtml = true;

                if (HttpContext.Current != null)
                {
                    mail.Body += "<strong>IP address:</strong> " + HttpContext.Current.Request.UserHostAddress + "<br />";
                    mail.Body += "<strong>User-agent:</strong> " + HttpContext.Current.Request.UserAgent;
                }

                //attachment
                if (attachment != null)
                {
                    mail.Attachments.Add(attachment);
                }

                client.Send(mail);
                emailStatus = "success";
            }
        }

        catch (Exception ex)
        {
            emailStatus = ex.Message;
        } // end try 

        return emailStatus;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        string status = SendEmail(false);
        Response.Write(status);
    }

2 个答案:

答案 0 :(得分:0)

我已经尝试过你的代码,它对我来说很好(用我的凭证)。您是否尝试过禁用防火墙或防病毒软件? inner exception说什么?

禁用步骤:

Windows XP Firewall

Windows 7 Firewall

Antivirus

答案 1 :(得分:0)

尝试在网络标记上设置enableSsl =“true”,如下所示:

<network host="smtp.gmail.com" enableSsl="true" defaultCredentials="false" 
    port="587" userName ="myn@gmail.com" password="pass@123" />