【问题标题】:ASP.net SMTP connection errorASP.net SMTP 连接错误
【发布时间】:2011-09-30 00:05:15
【问题描述】:

下面的代码让我一个接一个地出错。

        MailMessage Enveloppe = new MailMessage();

        //emails is an array of strings
        foreach ( string email in emails )
            Enveloppe.To.Add(email);

        //Setup message parameters
        Enveloppe.Subject = "Documentation";
        Enveloppe.Body = "Infinitelycoolbodyhere"
        Enveloppe.From = new MailAddress("mrzombie@stuff", "Myname");

        //files is an array of strings
        foreach ( string filename in files ) { 
            //Add attachments
            Enveloppe.Attachments.Add(new Attachment(new System.Net.WebClient().OpenRead(filename),filename.Substring(filename.LastIndexOf('/'))));
        }

        //Create the smtp client, and let it do its job
        SmtpClient Mailman = new SmtpClient("mysmtphost");
        Mailman.EnableSsl = true;
        Mailman.Port = 465;
        Mailman.DeliveryMethod = SmtpDeliveryMethod.Network;
        Mailman.Credentials = new System.Net.NetworkCredential("usernamehere", "passwordhere");
        Mailman.Send(Enveloppe);

它恰好告诉我我的操作超时,或者“连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应” .

我被难住了,我看不出我做错了哪一部分

更新:我似乎无法从 Telnet 连接到服务器,充其量只能连接到我的笔记本电脑(在 ubuntu 下),但我从未收到“200”响应。在 windows 工作站下,我得到一个永久空白的 telnet 窗口。

我可以在指定的服务器上使用 Thunderbird 毫无问题地发送/接收电子邮件。

【问题讨论】:

    标签: asp.net smtp


    【解决方案1】:

    终于找到了罪魁祸首——托管公司给我的“假定正确”的 smtp 服务器和实际的 smtp 服务器之间的连接不知何故挂起。我只是将 mail.domain.com 的地址更改为 smtp.hostingdomain.com 并修复了所有问题。

    这只是我讨厌的那些“该死的”时刻之一。正因为如此,我不得不放弃基于应用程序的邮件发送功能,但最后我和我的老板决定我们将文件托管在某个地方并在电子邮件中包含链接而不是附加附件到邮件。

    所以,是的,这并不能真正回答问题,但对于那些考虑解决方案的人来说,但您可能希望将要发送的文件放在可从外部访问的位置并包含链接。在那里。

    【讨论】:

      【解决方案2】:

      该 SMTP 服务器是否已在 465 上启动并运行,它是否支持 SSL?

      【讨论】:

      • 当第一台服务器无法响应时,我尝试了两三件事。我尝试使用我的个人网站的 smtp 服务器使用 ssl,因此代码中的 ssl 部分。我没有成功,操作超时,但由于我能够使用加密与服务器发送-接收电子邮件,我不得不假设它已启动并运行。
      【解决方案3】:

      在尝试与您的 SMTP 服务器通信时,听起来好像出了点问题(哈哈,没什么!)。

      我假设你在 Windows 上,所以转到开始 -> 运行 -> 'telnet mysmtphost 465' 并查看你在控制台中得到的响应。

      你看到这样的东西吗?

      Connected to mysmtphost.
      Escape character is '^]'.
      220 mysmtphost
      

      【讨论】:

      • 从我的 Ubuntu 笔记本电脑上我得到了预期的结果。从我在同一网络上的工作站(执行代码的东西),我得到一个永远空白的 telnet 窗口。
      • 哦,在这两种情况下我都没有“200 mysmtphost”。
      • 猜测:如果我的笔记本电脑能够发送/接收电子邮件,那么我应该检查我正在使用的机器以及将要运行该程序的机器没有针对端口 465 的任何防火墙规则还是 25 岁,对吧?
      • 不用担心永远空白的 telnet 窗口。这意味着您可以完美地连接到 smtp 服务器。请尝试从您正在使用的机器远程登录。如果您无法连接到 smtp 服务器,那么我认为可以合理地假设它是防火墙问题。
      【解决方案4】:

      尝试为 System.Net.Mail 启用跟踪(看起来您正在使用 SNM)。为此,您需要将以下内容添加到您的 .config 文件中。

      <configuration>
        <system.diagnostics>
          <trace autoflush="true" />
      
          <sources>
      
            <source name="System.Net" >
              <listeners>
                <add name="MyTraceFile"/>
              </listeners>
            </source>
      
            <source name="System.Net.Sockets">
              <listeners>
                <add name="MyTraceFile"/>
              </listeners>
            </source>
      
          </sources>
      
      
          <sharedListeners>
            <add
              name="MyTraceFile"
              type="System.Diagnostics.TextWriterTraceListener"
              initializeData="System.Net.trace.log"                />
          </sharedListeners>
      
          <switches>
            <add name="System.Net" value="Verbose" />
            <add name="System.Net.Sockets" value="Verbose" />
          </switches>
      

      希望这至少能告诉你发生了什么。

      我在这里获得了更多信息,关于预期结果: http://systemnetmail.com/faq/4.10.aspx

      【讨论】:

        猜你喜欢
        • 2015-07-20
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        • 2017-07-03
        • 1970-01-01
        • 2017-01-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多