【问题标题】:Sending email using gmail smtp server使用 gmail smtp 服务器发送电子邮件
【发布时间】:2016-09-07 20:07:54
【问题描述】:

我一直在尝试使用以下代码从 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)

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

谢谢。

【问题讨论】:

    标签: c# asp.net email smtp gmail


    【解决方案1】:

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

    【讨论】:

    • 我也尝试过使用 Yahoo SMTP。但是同样的错误和异常。
    • 好吧,代码 on this link 为我使用 Yahoo! SMTP。邮件在几分钟后到达。我认为它也适用于 GMail。
    • 我使用了完全相同的代码来使用 Yahoo smtp 但同样的错误和异常:(
    【解决方案2】:

    首先,我认为你应该使用

    UseDefaultCredentials = false;

    smtp.DeliveryMethod = SmtpDeliveryMethod.Network

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

    【讨论】:

    • 我已允许不太安全的应用访问该帐户。当我添加“DeliverMethod = SmtpDeliveryMethod.Network”时,它给了我一个错误,说 DeliverMethod 没有被声明。
    • 我已经编辑了我的答案 - DeliveryMethod 是一个 SmtpClient 属性。
    • 我添加了 smtp.DeliveryMethod = SmtpDeliveryMethod.Network 但仍然是同样的错误。
    【解决方案3】:

    试试这个。

    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;
    }
    

    【讨论】:

    • 我尝试了 Manish Vadher 给出的上述代码,但它给出了相同的错误和异常。
    • 好的,让我知道您是否配置了 google 设置??允许不太安全的应用程序:开启 google gmail 设置。
    • 是的。我已打开“允许不太安全的应用程序”。我也尝试使用 yahoo 和 yahoo SMTP 但同样的错误。
    猜你喜欢
    • 2022-01-09
    • 2014-10-15
    • 1970-01-01
    • 2012-10-20
    • 2010-10-17
    • 2013-07-01
    相关资源
    最近更新 更多