使用SMTP Bluehost服务器发送电子邮件

时间:2018-08-13 08:32:20

标签: asp.net-web-api smtp


我使用了 ASP.NET WEB API ,我想从https://www.bluehost.com/

创建的电子邮件中发送来自应用程序的电子邮件

这是 web.config 文件中的配置:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="example@domain.com">
            <network host="mail.domain.com"
             port="465"
             userName="example@domain.com"
             password="*****"
             enableSsl="true"   />
        </smtp>
    </mailSettings>
</system.net>

这是我的代码:

SmtpClient smtpClient = new SmtpClient();
smtpClient.Timeout = 120000;
MailMessage mail = new MailMessage("fromMailAddress@domain.com", "toMailAddress@gmail.com"); 
mail.Body = "Here is the body of my email";
mail.IsBodyHtml = true;
smtpClient.Send(mail);

我收到以下错误:

  

网络错误(tcp_error)
  发生通信错误:“操作超时”   Web服务器可能已关闭,太忙,或遇到其他问题而无法响应请求。您不妨稍后再试。

请注意,我已经尝试直接在上面的代码中配置 SMTP ,但仍然无法正常工作。
我已经从主机 smtp.gmail.com 进行了测试,并且工作正常,所以我想问题出在新主机上。
非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

请在下面的代码段中尝试此操作。

SmtpClient smtpClient = new SmtpClient();
smtpClient.Port = 465; // can check port for ssl - 587 and non ssl - 25
smtpClient.Host = "mail.domain.com";
smtpClient.EnableSsl = true;
smtpClient.Timeout = 10000;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new System.Net.NetworkCredential("example@domain.com","password");

MailMessage mail = new MailMessage("donotreply@domain.com", "sendtomyemail@domain.com", "test", "test");
mail.BodyEncoding = UTF8Encoding.UTF8;
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

smtpClient.Send(mail);