簡體   English   中英

使用SSL的SMTP電子郵件消息不能與ASP.NET中的GoDaddy電子郵件地址一起使用

[英]SMTP email message with SSL not working with GoDaddy email address in ASP.NET

當我嘗試在我的新GoDaddy電子郵件地址上使用SSL發送STMP電子郵件時,它不起作用。 我收到一條錯誤消息,指出Unable to read data from the transport connection: net_io_connectionclosed.

以下是服務器的電子郵件設置:

在此輸入圖像描述

這是我的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發送這些電子郵件?

這個較老的問題中 ,包括對問題的描述 - SmtpClient僅支持“顯式SSL”,你需要做“隱式SSL”直接在端口465上談論SSL。

比那里討論的那些選項更好,更現代的方法是使用具有隱式SSL支持的維護良好的庫。 MailKit將是一個很好的方法。

或者,請考慮使用第三方電子郵件中繼服務,例如SendGrid,Mandrill,Mailgun等。 這樣做將大大提高用戶在收件箱中實際接收郵件的可能性,而不是垃圾郵件/垃圾郵件文件夾。

從你的截圖我假設你的網站是在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

這是從這個答案中取得的樣本

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM