c # SMTP электронная почта не доставляется, если вложения существуют - PullRequest
0 голосов
/ 18 января 2010

Я создаю и отправляю электронные письма, используя пространство имен System.Net.Mail. Вызов smtp.Send (mailMessage) выполняется в блоке using System.Transactions.TransactionScope. Если я не создаю вложения электронной почты, то все работает нормально. Если я добавляю какие-либо вложения (используя mailMessage.Attachments.Add (attachment)), то не выдается никаких ошибок, но электронная почта не доставляется получателю - она ​​просто исчезает в эфире. Может кто-нибудь придумать причину, по которой добавление вложения может привести к полному отказу в доставке электронной почты (но исключение не возникает!)

Большое спасибо.

Ответы [ 4 ]

2 голосов
/ 18 января 2010

Проблема заключается в том, что vbscript внутри \ mailroot на сервере перехватывает все письма (C: \ inetpub \ mailroot \ Script \ catchall.vbs) Это не часть моего приложения, но я считаю, что устанавливается как часть SMTP-сервера по умолчанию, который поставляется с Windows Server.

Этот скрипт проверяет электронную почту и вложения и блокирует электронные письма на основе вложения. Следующий код в файле в строке 62 был закомментирован.

'if part.ContentMediaType = "application / octet-stream" then "Исполняемое вложение 'ProcessMessage = true Функция выхода 'конец, если

Все теперь работает. Спасибо за помощь, ребята.

1 голос
/ 18 января 2010

Почтовый сервер будет более подозрительным к письмам с вложениями. Возможно, вам потребуется настроить Политика отправителей , чтобы убедить почтовые серверы в том, что вы являетесь тем, кем себя называете.

1 голос
/ 18 января 2010

Включить ведение журнала для 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>
1 голос
/ 18 января 2010

Сервер Smpt может отклонять электронную почту с вложениями.Какой тип файла вы прикрепляете?Сервер может спутать его с вирусом или спамом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...