使用gmail smtp服务器发送电子邮件

时间:2016-05-12 06:51:29

标签: c# asp.net email smtp gmail

我一直在尝试使用以下代码将邮件从Gmail帐户发送到Gmail帐户。

using (MailMessage mm = new MailMessage(txtEmail.Text, txtTo.Text))
{
    mm.Subject = txtSubject.Text;
    mm.Body = txtBody.Text;
    if (fuAttachment.HasFile)
    {
        string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);
        mm.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));
    }
    mm.IsBodyHtml = false;
    SmtpClient smtp = new SmtpClient();
    smtp.Host = "smtp.gmail.com";
    smtp.EnableSsl = true;
    NetworkCredential NetworkCred = new NetworkCredential(txtEmail.Text, txtPassword.Text);
    smtp.UseDefaultCredentials = true;
    smtp.Credentials = NetworkCred;
    smtp.Port = 587;
    smtp.Send(mm);
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Email sent.');", true);
}

执行到达“smtp.Send(mm)”后,浏览器说等待,2分钟后我得到“发送电子邮件失败”的异常

以下错误消息

  

连接尝试失败,因为连接方在一段时间后未正确响应,或已建立的连接失败,因为已连接的主机无法响应 :587“(某些IP)

我已经搜索了很多,但还没有找到解决方案。请帮我解决这个问题。

谢谢。

3 个答案:

答案 0 :(得分:0)

首先,我认为你应该使用

UseDefaultCredentials = false;

smtp.DeliveryMethod = SmtpDeliveryMethod.Network

您还需要allow less secure apps to access your account

答案 1 :(得分:0)

试试这个。

public static string SendMail(string stHtmlBody, string stSubject, string stToEmailAddresses)
{
    string stReturnText = string.Empty;
    try
    {
        if (!string.IsNullOrEmpty(stToEmailAddresses))
        {
            //Set SmtpClient to send Email
            string stFromUserName = "fromusername";
            string stFromPassword ="frompassword";
            int inPort = Convert.ToInt32(587);
            string stHost = "smtp.gmail.com";
            bool btIsSSL =true;



            MailAddress to = new MailAddress(stToEmailAddresses);
            MailAddress from = new MailAddress("\"" + "Title" + "\" " + stFromUserName);

            MailMessage objEmail = new MailMessage(from, to);
            objEmail.Subject = stSubject;
            objEmail.Body = stHtmlBody.ToString();
            objEmail.IsBodyHtml = true;
            objEmail.Priority = MailPriority.High;


            SmtpClient client = new SmtpClient();
            System.Net.NetworkCredential auth = new System.Net.NetworkCredential(stFromUserName, stFromPassword);
            client.Host = stHost;
            client.Port = inPort;
            client.UseDefaultCredentials = false;
            client.Credentials = auth;
            client.EnableSsl = btIsSSL;
            client.Send(objEmail);

            return stReturnText;
        }
    }
    catch (Exception ex)
    {

    }

    return stReturnText;
}

答案 2 :(得分:-1)

我有类似的尝试,但使用Java。经过大量的搜索,我没有成功。然后我用了雅虎! SMTP,非常容易。也许你可以试试。

相关问题