Как правильно настроить службу SMTP IIS5 для отправки электронной почты из среды разработки? - PullRequest
3 голосов
/ 16 января 2009

Я пытаюсь отправить электронное письмо из веб-приложения ASP.NET с помощью класса SmtpClient. До сих пор я предоставил доступ к реле 127.0.0.1. Я пытаюсь отправить тестовые сообщения на мой аккаунт Gmail. Файлы EML застряли в папке очереди mailroot. Мой брандмауэр WinXP отключен. Я не получаю никаких исключений в коде, но электронные письма никогда не доставляются по адресу назначения. Я также пробовал другие учетные записи электронной почты.

        SmtpClient client = new SmtpClient();
        client.Host = "127.0.0.1";

        MailMessage message = new MailMessage();
        message.To.Add("myemail@gmail.com");
        message.From = "name@domain.com";
        message.Subject = subject;
        message.IsBodyHtml = false;
        message.Body = body;

        client.Send(message);

Вот фрагмент из журнала IIS SMTP.

Software: Microsoft Internet Information Services 5.1
Version: 1.0
Date: 2009-01-16 18:28:28
Fields: time c-ip cs-method cs-uri-stem sc-status 
18:28:28 127.0.0.1 EHLO - 250
18:28:28 127.0.0.1 MAIL - 250
18:28:28 127.0.0.1 RCPT - 250
18:28:28 127.0.0.1 DATA - 250
18:29:45 127.0.0.1 MAIL - 250
18:29:45 127.0.0.1 RCPT - 250
18:29:45 127.0.0.1 DATA - 250
18:30:37 127.0.0.1 QUIT - 0

Ответы [ 5 ]

1 голос
/ 25 мая 2009

Я только что боролся с той же проблемой, и я думаю, что знаю почему - и решение.

Проблема и как ее проверить
Во-первых, я проверил, что могу подключиться через порт 25. Это легко сделать, открыв, например, telnet в командной строке и набрав (маленький кружок - это буква O сама по себе, а не символ :));

 o auth.smtp.1and1.co.uk 25

Если это соединяет (а не выдает ошибку), тогда не проблема брандмауэра с портом 25. Если он выдает ошибку, сначала проверьте настройки брандмауэра, пока это не сработает.

Далее я включил регистрацию в службе SMTP и поставил галочку во всех расширенных свойствах. Это тогда дало мне два URL в файле журнала. В моем случае они были
http://www.spamhaus.org/query/bl?ip=217.44.248.144
http://www.sorbs.net/lookup.shtml?217.44.248.144

По этим ссылкам в основном стало ясно, что кто-то там (я полагаю, принимающий сервер) проверяет и видит, что я отправляю с динамического IP-адреса (я просто делаю это из дома через ADSL) и таким образом блокирую его как СПАМ.

Решение
Вам необходимо настроить SMTP-сервер для ретрансляции через SMTP-сервер вашего провайдера.
1. Перейдите в Свойства для службы SMTP и перейдите в раздел Доставка -> Дополнительно
2. Введите имя SMTP-сервера вашего провайдера в поле «Smart host» (например, auth.smtp.1and1.co.uk)
3. Сохраните это
4. Вернитесь на вкладку «Доставка», перейдите на вкладку «Исходящая безопасность»
. 5. Нажмите «Обычная аутентификация» и укажите имя пользователя и пароль, которые вы используете для доступа к своей электронной почте.

Примечание; Выше я предполагал, что вам нужно пройти аутентификацию на SMTP-сервере вашего интернет-провайдера, и они используют тот же uid / pwd для POP3 / IMAP и SMTP, который используется чаще всего. Ваша ситуация может отличаться - проверьте настройки электронной почты в своей почтовой программе.

1 голос
/ 20 января 2009

В зависимости от того, как настроена ваша сеть, вам может потребоваться указать IIS, чтобы он передавал электронные письма на ваш сервер Exchange для передачи во внешний мир. Для этого:
1. Щелкните правой кнопкой мыши узел виртуального SMTP-сервера по умолчанию в оснастке IIS MMC и откройте диалоговое окно «Свойства».
2. Перейдите на вкладку «Доставка» и нажмите кнопку «Дополнительно» в нижней части вкладки.
3. В поле Smart Host введите имя вашего сервера Exchange. (Или запись DNS для того же, например, smtp.mydomain.com)

0 голосов
/ 11 апреля 2009

Проверьте вашу программу просмотра событий, тогда вы увидите что-то вроде этого

Не удалось доставить сообщение в удаленный домен yahoo.com по следующей причине: произошла ошибка протокола SMTP.

Для получения дополнительной информации см. Центр справки и поддержки по адресу http://go.microsoft.com/fwlink/events.asp.

(Это моё). Я думаю, у Yahoo должен быть какой-то протокол? Или мы устанавливаем неправильный протокол? По-прежнему выясняю ... Напишите мне, пожалуйста, jokenjp@yahoo.com (с хорошей темой, поэтому я не считаю спамом)

0 голосов
/ 19 января 2009

Если код не возвращает исключений, то вряд ли что-то там будет. Если вы посмотрите на необработанный файл .EML, проверьте там и найдите что-нибудь неуместное.

Однако наиболее вероятная проблема - просто дать IIS пинок "iisreset". Сделайте это, и вы, вероятно, увидите, что сообщения начинают отправляться. Изменения конфигурации на SMTP-сервере не всегда вступают в игру до перезагрузки.

0 голосов
/ 16 января 2009

Я все еще тестирую этого Джима, одна вещь, которую я заметил, это то, что вы не правильно указали свой адрес. From принимает класс MailAddress, а не строку.

Изменение:

message.From = "name@domain.com";

Кому:

message.From = new MailAddress("name@domain.com");

В настройках SMTP по умолчанию:

Установлено ли в раскрывающемся списке «IP-адрес: 127.0.0.1» («Все неназначенные»)? Если возможно, установите значение All Unassigned. Попробуйте добавить IP-адрес, привязанный к вашей машине, чтобы иметь возможность ретранслировать через службу SMTP. Хотя вы отправляете письмо на ваш хост 127.0.0.1, оно может отправлять его из локальной сети с назначенным ip. Чтобы убедиться, что все работает, вы можете выбрать переключатель «Ограничения ретрансляции» на «Все, кроме списка ниже» и очистить список. Это откроет реле для проверки вашей конфигурации. Вы должны ограничить это, как только выясните, в чем заключается ваша проблема.

Есть ли в журнале SMTP коды ошибок?

...