【问题标题】:c# SMTP email not delivered if attachments existc# 如果附件存在,则不发送 SMTP 电子邮件
【发布时间】:2011-01-06 08:07:49
【问题描述】:

我正在使用 System.Net.Mail 命名空间创建和发送电子邮件。 smtp.Send(mailMessage) 调用是在 using System.Transactions.TransactionScope 块内进行的。如果我不创建任何电子邮件附件,那么一切正常。如果我添加任何附件(使用 mailMessage.Attachments.Add(attachment)),则不会引发任何错误,但电子邮件不会传递给收件人 - 它似乎只是消失在以太中。谁能想到添加附件会导致电子邮件完全无法传递的原因(但没有引发异常!)

非常感谢。

【问题讨论】:

  • 我能想到的最好的解释是邮件被邮件服务器丢弃了。你要附加什么样的文件?
  • 用户可以附加任何类型的文件。我的测试涉及附加 .txt 文件。大多数用户会附加 .doc 或 .pdf 文件
  • 您应该使用 .docs 或 .pdfs 尝试一下,看看它是否有效。可能出于某种奇怪的原因不允许 .texts

标签: c# email smtp


【解决方案1】:

为 System.Net.Mail 启用日志记录,并查看日志。这至少会验证邮件是否已发送。如果已经发送,并且被接受,那么你就知道问题出在邮件服务器端了,你就可以放弃追鬼了。

以下是有关如何启用日志记录的链接: http://systemnetmail.com/faq/4.10.aspx

基本上,将以下内容添加到您的 .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>
 </configuration>

【讨论】:

    【解决方案2】:

    问题在于服务器上 \mailroot 中的 vbscript 捕获所有电子邮件 (C:\inetpub\mailroot\Script\catchall.vbs)。这不是我的应用程序的一部分,但我相信它是作为 Windows Server 附带的默认 SMTP 服务器的一部分安装的。

    此脚本正在检查电子邮件和附件,并根据附件阻止电子邮件。文件第 62 行的以下代码已被注释掉。

    'if part.ContentMediaType = "application/octet-stream" then '可执行附件 ' 进程消息 = 真 ' 退出函数 '结束如果

    现在一切正常。感谢您的帮助。

    【讨论】:

      【解决方案3】:

      邮件服务器会更加怀疑带有附件的邮件。您可能需要设置一个Sender Policy 来让邮件服务器相信您就是您声称的那个人。

      【讨论】:

        【解决方案4】:

        smpt 服务器可能会拒绝带有附件的电子邮件。您要附加什么类型的文件?服务器可能会将其与病毒或垃圾邮件混淆。

        【讨论】:

        • 用户可以附加任何类型的文件。我的测试涉及附加 .txt 文件。大多数用户会附加 .doc 或 .pdf 文件
        猜你喜欢
        • 2016-04-17
        • 2018-03-29
        • 2011-08-09
        • 2011-07-30
        • 2013-10-31
        • 1970-01-01
        • 2019-05-29
        • 1970-01-01
        • 2017-02-11
        相关资源
        最近更新 更多