Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#如果存在附件,则SMTP电子邮件不会发送_C#_Email_Smtp - Fatal编程技术网

c#如果存在附件,则SMTP电子邮件不会发送

c#如果存在附件,则SMTP电子邮件不会发送,c#,email,smtp,C#,Email,Smtp,我正在使用System.Net.Mail命名空间创建和发送电子邮件。正在using System.Transactions.TransactionScope块中进行smtp.Send(mailMessage)调用。如果我没有创建任何电子邮件附件,那么一切正常。如果我添加任何附件(使用mailMessage.attachments.add(attachment)),则不会抛出任何错误,但电子邮件不会传递给收件人-它似乎会消失在以太中。任何人都能想出一个原因,为什么添加附件会导致电子邮件发送完全失败

我正在使用System.Net.Mail命名空间创建和发送电子邮件。正在using System.Transactions.TransactionScope块中进行smtp.Send(mailMessage)调用。如果我没有创建任何电子邮件附件,那么一切正常。如果我添加任何附件(使用mailMessage.attachments.add(attachment)),则不会抛出任何错误,但电子邮件不会传递给收件人-它似乎会消失在以太中。任何人都能想出一个原因,为什么添加附件会导致电子邮件发送完全失败(但没有例外!)


非常感谢。

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

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

邮件服务器将更怀疑带有附件的邮件。您可能需要设置一个电子邮件服务器,以使邮件服务器相信您就是您所声称的人。

邮件服务器将更怀疑带有附件的邮件。您可能需要设置一个,以使邮件服务器相信您就是您所声称的人。

启用System.Net.mail的日志记录,并查看日志。这将至少验证邮件是否已发送。如果邮件已发送并被接受,那么您就知道问题出在邮件服务器端,您可以停止追踪重影

以下是有关如何启用日志记录的链接:

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

启用System.Net.Mail的日志记录,并查看日志。这将至少验证邮件是否已发送。如果邮件已发送并被接受,那么您就知道问题出在邮件服务器端,您可以停止追踪重影

以下是有关如何启用日志记录的链接:

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

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

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

'如果part.ContentMediaType=“应用程序/八位字节流”,则为'可执行附件 'ProcessMessage=true '退出功能 "完"


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

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

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

'如果part.ContentMediaType=“应用程序/八位字节流”,则为'可执行附件 'ProcessMessage=true '退出功能 "完"


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

我能给出的最好解释是邮件服务器丢弃了该邮件。您要附加什么类型的文件?用户可以附加任何类型的文件。我的测试包括附加.txt文件。大多数用户都会附加.doc或.pdf文件。您应该尝试使用.docs或.pdf文件,看看是否有效。可能是因为某种奇怪的原因不允许。text我能想到的最好的解释是邮件服务器丢弃了该邮件。您要附加什么类型的文件?用户可以附加任何类型的文件。我的测试包括附加.txt文件。大多数用户都会附加.doc或.pdf文件。您应该尝试使用.docs或.pdf文件,看看是否有效。可能是出于某种奇怪的原因,不允许.text用户可以附加任何类型的文件。我的测试包括附加.txt文件。大多数用户将附加.doc或.pdf文件。用户可以附加任何类型的文件。我的测试包括附加.txt文件。大多数用户将附加.doc或.pdf文件