2012-04-16 3 views
0

Кажется, что, когда вы используете класс SmtpClient и MailMessage для отправки электронных писем, все работает нормально. И он его отправляет. Однако некоторые серверы, такие как ваш сервер Exchange Server или Gmail.com или любые другие сервисы, иногда отвергают эти письма (потому что они могут быть фишинговыми сайтами или спам-сайтами?)C# Отправка почты SMTP обычно не выполняется из-за отсутствия учетных данных?

Я использую это и много мест отклоняю письмо, которое я считаю:

SmtpClient smtp = new SmtpClient 
{ 
Host = smtpClient, 
Timeout = 40000, // 40 seconds 
DeliveryMethod = SmtpDeliveryMethod.Network 
}; 

Как вы работаете вокруг этого? Нужно ли использовать учетные данные для входа на какой-либо признанный/белый список серверов, чтобы он был авторизованным и доверенным электронной почтой?

Я мог бы использовать что-то вроде аутентификации GMAIL, но моему серверу должно быть разрешено отправлять электронные письма, ему не следует полагаться на gmail.

+0

Хозяин вы используете? (например, каково значение переменной smtpClient?) – Jeff

+0

localhost, это локальный сервер с очень обычным SMTP-сервером. – Dexter

ответ

4

давно было много серверов в Интернете, что обеспечило предоставление услуг по электронной почте, не задавая слишком много вопросов о том, кто использует службу.
Затем пришли СПАММЕРЫ!.
Сервер, который отправлял почту по всему миру, больше не был благодетелем Интернета, а проблемой.
В настоящее время все труднее найти сервер, который отправляет почту в Интернете, не запрашивая учетные данные.

Ваш почтовый сервер (smtp.yourbusiness.com или все, что вы хотите) не доверяет вам. Когда вы попросите его отправить вам электронное письмо, он хочет знать, кто вы.

SmtpClient smtp = new SmtpClient 
smtp.Host = "smtp.yourbusiness.com"; 
NetworkCredential credentials = new NetworkCredential("your_user_name_on_smtpserver", "your_password_on_smtpserver"); 
smtp.Credentials = credentials; 
+0

Вы говорите, что мой собственный локальный smtp-сервер отклоняет электронные письма ASP.NET C#? Поскольку я считаю, что это, например, мой бизнес-адрес электронной почты, который отклоняет localhost smtp на электронной почте сервера. Поскольку SMTP-сервер не распознает локальный SMTP-сервер. – Dexter

+0

Я думаю, что проблема OP заключается не в том, что сообщения не отправляются, а в том, что они не получены. – Pleun

+0

В этом случае, если MX Target или MDA на целевом объекте MX отказывается принять или передать почту в папке «Входящие», обычно они отправляют сообщение с причиной. – Steve

0

Чтобы отправить GMail, вам необходимо указать несколько настроек - да, вам нужно будет использовать аутентификацию (GMail не будет открывать свое реле для всех, или они будут использоваться для рассылки спама).

Если я правильно помню вам нужно отправить на TCP порт 587, включите SSL, хост mail.google.com и ввести имя пользователя и пароль на вашем SmtpClient, чтобы получить Gmail на самом деле отправить его - пренебрегая один из тех, кто обычно генерирует электронную почту назад от они рассказывают вам, что вы забыли.

Редактировать: просто для уточнения имени пользователя и пароля; вам нужно будет создать новый NetworkCredential с именем пользователя и паролем для вашей учетной записи GMail и установить для этого Credentials свойство вашего SmtpClient.

2

Вы устанавливаете почтовый адрес отправителя и можете ли ваш почтовый сервер быть решен путем обратного поиска DNS? Некоторые спам-фильтры не доверяют почтовым серверам, они не могут отменить поиск. Если вы, например, отправляете почтовый сервер почтой с использованием фиктивного или внешнего почтового домена, фильтры спама, вероятно, подберут это и отфильтруют вашу почту. Если вы настроили запись SPF для своего домена, а ваш почтовый сервер-отправитель не находится в этой записи, письма с этого сервера также будут фильтроваться фильтрами спама. Другой причиной может быть IP-адрес из диапазона, который, как известно, динамически назначается интернет-провайдерами. Почтовые серверы, отправляющие эти диапазоны адресов, в основном являются спам-ботами и поэтому часто также фильтруются.

0

вы должны проверить это сообщение о том, как отправлять электронные письма с использованием SMTP-сервера Gmail.

sending emails with gmail

+0

Могу сказать, что я не хочу использовать gmail. Я просто хочу, чтобы мой собственный localhost smtp отправлял электронные письма, не считаясь неизвестным сервером. – Dexter

0

Если я интерпретировать ваш вопрос правильно: сообщения отправляются OUR с вашего сервера, но они оказались в ловушке в спамфильтрах на приемном конце?

Если это проблема, у вас нет ничего общего с тем, как вы отправляете сообщения, но гораздо больше с содержанием вашего сообщения и характеристиками вашего сервера. Поэтому не имеет значения, какие учетные данные вы используете или отправляете с SmtpClient или любым другим классом. Перемещение в Gmail не помогает, и Gmail имеет ограничение на количество сообщений, которые вы можете отправить.

Спам-фильтры, такие как правила использования спама-убийцы. Совпадение слишком много: ваше сообщение считается спамом.

Посмотрите здесь для примера:

http://spamassassin.apache.org/tests_3_3_x.html

Поэтому убедитесь, что ваше сообщение не слишком высокий балл, и он будет идти корыто.

+0

Хорошая информация! Я считаю, что мое сообщение очень упрощенно. Предоставление имени пользователя/пароля для учетной записи, которую они сделали. Поэтому я считаю, что это учетные данные. Мой SMTP-сервер либо не отправляет электронные письма, либо отправляет их, а потому что SMTP-сервер, который у меня есть, не является хорошо известным сервером, принимающие SMTP-серверы отклоняют их. – Dexter

+0

Вы должны сначала определить с уверенностью, если ваш сервер отправляет их или нет, прежде чем продолжить – Pleun