无法从生产中的 ASP.NET 4.8 网站发送电子邮件

Cannot send email from an ASP.NET 4.8 website in prod

提问人:Sébastien Grossetti 提问时间:2/4/2023 最后编辑:quaabaamSébastien Grossetti 更新时间:5/6/2023 访问量:280

问:

我使用 C# 创建了一个 ASP.NET 网站,该网站面向使用 Visual Studio 的 .NET 4.8。 该网站托管在 Windows Server 上的 Ionos(又名 1&1),但我无法访问它或 IIS 控制台。 在我的开发工作站中,我可以使用以下代码中的 define 成功发送电子邮件:MailSender.Send(....)

using System;
using System.Net;
using System.Net.Mail;

public class MailSender {
    public static void Send(string server, int port, string body, string subject, string to = "[email protected]", string from = "[email protected]") {
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        SmtpClient smtp = new SmtpClient(server, port);
        smtp.Credentials = new NetworkCredential(user, pw);
        smtp.EnableSsl = true;

        MailMessage Msg = new MailMessage();
        Msg.From = new MailAddress(from);
        Msg.To.Add(to);
        Msg.Subject = subject;
        Msg.IsBodyHtml = true;
        Msg.Body = BuildBody(body);

        smtp.Send(Msg);
    }
}

然而,当完全相同的网站放在主机服务器上时,这将失败并出现以下错误:

System.Net.Mail.SmtpException: Failure sending mail. ---> **System.IO.IOException: Unable to read data from the transport connection: net_io_connectionclosed**.
 at System.Net.Mail.SmtpReplyReaderFactory.ProcessRead(Byte[] buffer, Int32 offset, Int32 read, Boolean readLine)
 at System.Net.Mail.SmtpReplyReaderFactory.ReadLines(SmtpReplyReader caller, Boolean oneLine)
 at System.Net.Mail.SmtpReplyReaderFactory.ReadLine(SmtpReplyReader caller)
 at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
 at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
 at System.Net.Mail.SmtpClient.GetConnection()
 at System.Net.Mail.SmtpClient.Send(MailMessage message) --- End of inner exception stack trace ---
 at System.Net.Mail.SmtpClient.Send(MailMessage message)
 at MailSender.Send_New(String server, Int32 port, String body, String subject, String to, String from)

谁能给我一个提示,我可以做些什么来解决这个问题?

到目前为止,我尝试过:

  • 我使用的端口现在是 587,但 465 或 25 给出相同的结果。
  • 我尝试了几个 SecurityProtocolType 值,没有区别。
  • 我尝试了许多不同的发送方式(System.Web.Mail、内置 WebMail 类等),结果相同。
  • 我还检查了我的网站是否真正面向 .NET 4.8
  • 搜索,我在 Google 和开发论坛上找到了很多文章,有很多提示,但似乎对我的情况没有任何帮助
  • 我还联系了 Ionos 支持,他们似乎说他们没有问题,这是一个开发问题,所以他们帮不上忙......

现在我肯定需要帮助,因为现在已经超过 2 周了,我正在尝试没有成功的事情:(

提前感谢您的任何帮助!!

C# asp.net 异常 SMTP Ionos

评论

0赞 Osama 2/4/2023
可能是防火墙问题
0赞 quaabaam 2/4/2023
您是否在IONOS帐户中配置了SMTP?启用 SMTP 身份验证以通过 Web 应用程序发送电子邮件
0赞 ClearlyClueless 2/4/2023
这个stackoverflow问题似乎有很多关于这个错误的信息。也许这里有一些可以帮助!SmtpException:无法从传输连接读取数据:net_io_connectionclosed
0赞 Albert D. Kallal 2/5/2023
大多数电子邮件系统通常不允许从任何旧的 IP 地址发送,更糟糕的是,在某些情况下,如果您托管在不同的网络上,那么您的电子邮件提供商和用于发送的帐户很可能必须来自同一域等。这样做是因为如果有人将您的电子邮件用于发送,那么他们可以使用您的电子邮件免费并代表您发送数百万封电子邮件。在过去,您可以简单地设置电子邮件登录名+密码,然后就可以了。现在的日子?没有那么多,原始 IP 地址很可能必须添加到您正在使用的电子邮件系统/服务器中
0赞 Sébastien Grossetti 2/6/2023
谢谢大家,但不幸的是:

答: 暂无答案