使用SSL的SMTP电子邮件消息不能与ASP.NET中的GoDaddy电子邮件地址一起使用

时间:2017-04-05 20:38:37

标签: c# asp.net email ssl

当我尝试在我的新GoDaddy电子邮件地址上使用SSL在ASP.NET中发送STMP电子邮件时,它不起作用。我收到一条错误消息Unable to read data from the transport connection: net_io_connectionclosed.

以下是服务器的电子邮件设置:

enter image description here

以下是我的web.config中包含电子邮件服务器信息的片段:

<system.net>
  <mailSettings>
    <smtp from="no-reply@mysite.com" >
      <network host="smtpout.secureserver.net" port="465" userName="no-reply@mysite.com" password="password123" enableSsl="true" />
    </smtp>
  </mailSettings>
</system.net>

这是发送电子邮件的C#代码。

MailMessage message = new MailMessage();
message.To.Add(new MailAddress(to));
message.Subject = "Message from " + inputModel.Name;
message.Body = body;
message.IsBodyHtml = true;

using (var smtp = new SmtpClient())
{
    smtp.Send(message);
}

端口80,3535和25可以在没有SSL的情况下正常工作,但四个中的任何一个都 SSL。我甚至尝试使用SSL端口587,经过相当长的一段时间它才刚刚超时。

如何使用SSL发送这些电子邮件?

2 个答案:

答案 0 :(得分:3)

this older question中有很多相关内容,包括问题描述 - SmtpClient仅支持&#34;显式SSL&#34;,您需要执行&#34;隐式SSL&# 34;直接在端口465上谈SSL。

比那里讨论的选项更好,更现代的方法是使用具有隐式SSL支持的维护良好的库。 MailKit将是一个很好的方法。

或者,请考虑使用第三方电子邮件中继服务,例如SendGrid,Mandrill,Mailgun等。这样做可以大大提高用户在收件箱中实际接收邮件的可能性,而不是垃圾邮件/垃圾邮件文件夹。

答案 1 :(得分:1)

从您的屏幕截图我假设您的网站位于godaddy之外,因此您可以使用“smtpout.secureserver.net”。

如果您的网站托管在godaddy上,那么您需要按如下方式更改配置:

 <system.net>
      <mailSettings>
       <smtp from="no-reply@mysite.com">
        <network host="relay-hosting.secureserver.net"/>
       </smtp>
      </mailSettings>
    </system.net>

如果您想使用Explicit ssl尝试将端口从465更改为587

对于隐式SSL ,我们使用了netimplicitssl

这是取自this回答

的样本
var mailMessage = new MimeMailMessage();
mailMessage.Subject = "test mail";
mailMessage.Body = "hi dude!";
mailMessage.Sender = new MimeMailAddress("you@gmail.com", "your name");
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MimeMailAddress("yourfriend@gmail.com", "your friendd's name")); 
mailMessage.Attachments.Add(new MimeAttachment("your file address"));
var emailer = new SmtpSocketClient();
emailer.Host = "your mail server address";
emailer.Port = 465;
emailer.EnableSsl = true;
emailer.User = "mail sever user name";
emailer.Password = "mail sever password" ;
emailer.AuthenticationMode = AuthenticationType.PlainText;
emailer.MailMessage = mailMessage;
emailer.OnMailSent += new SendCompletedEventHandler(OnMailSent);
//Send email
emailer.SendMessageAsync();

// A simple call back function:
private void OnMailSent(object sender, AsyncCompletedEventArgs asynccompletedeventargs)
{
    Console.Out.WriteLine(asynccompletedeventargs.UserState.ToString());
}