SMTP электронная почта от ASP.NET - PullRequest
0 голосов
/ 29 сентября 2010

У меня есть веб-сайт asp.net 4.0, который генерирует оповещения по электронной почте на основе нескольких различных событий на сайте.Я использую следующий код в классе Utility.cs, который находится в моей папке App_Code.Subject, body и mailto - это параметры, передаваемые в метод.

try
{
    var mailmessage = new MailMessage();
    mailmessage.From("admin@xxxxxx.com");
    mailmessage.To.Add(new MailMessage(mailTo));
    mailmessage.ReplyTo("no-reply@xxxxxx.com");
    mailmessage.Subject = subject;
    mailmessage.Body = body;
    mailmessage.IsBodyHtml = true;
    var smtpClient = new SmtpClient();
    smtpClient.Send(mailmessage);
}
catch (Exception smtpEx)
{// write to windows event log}

И мой web.config

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="no-reply@xxxxxx.com">
        <network host="xxx.xxx.xxx.xxx" port="25" defaultCredentials="true"/>
      </smtp>
    </mailSettings>
  </system.net>

Эти электронные письма никогда не принимаются.Однако, что интересно, когда я использую функцию «Забыли пароль», я получаю свои электронные письма.Эта функциональность достигается с помощью элемента управления PasswordRecovery, и он используется следующим образом.

<asp:PasswordRecovery ID="xxx" Visible="false" runat="server"></asp:PasswordRecovery> 

Я вообще не устанавливаю никаких свойств MailDefinition, что заставляет меня предположить, что он использует мои настройки web.configтак почему этот элемент управления может использовать эти настройки, но мой код C # не может.Наверное, это мое почтовое сообщение?

Ценю любую помощь, которую вы, ребята, можете предложить.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 29 сентября 2010

Я понял это - извините, что потратил время ваших парней. Это было просто слишком много, и я позволил интеллигенции взять верх над собой.

mailmessage.To.Add (новый MailMessage (mailTo));

следует читать

mailmessage.To.Add (новый MailAddress (mailTo));

рад, что это решено, но не знаю, как я пропустил это.

0 голосов
/ 29 сентября 2010

Возможно, вашему почтовому серверу не нравится адрес «От» «admin@xxxxxx.com» (указанный в вашем коде), но действительно похож на адрес «От» "no-reply@xxxxxx.com" (указан в вашем web.config).

Убедитесь, что ваш почтовый сервер настроен как действительный адрес электронной почты. Кроме того, почтовые серверы часто проверяют, что домен адреса «От» действительно исходит от IP-адреса, с которого вы отправляете. Вы можете настроить запись SPF в DNS, которая будет сообщать почтовым серверам, что домен является действительным отправителем с IP-адреса W.X.Y.Z.

0 голосов
/ 29 сентября 2010

Проверьте это сообщение на наличие возможных проблем.

Требуется полное доменное имя System.Net.mail.SmtpClient

0 голосов
/ 29 сентября 2010

Как выглядят эти письма?Они могут быть убиты как спам, особенно если вы отправляете их как HTML (фильтры спама дают много хитов для ссылок, изображений и т. Д.).Контроль восстановления пароля отправляет обычный текст по умолчанию;Вы пробовали запустить приведенный выше код вручную, отправив вместо этого сообщение в виде простого текста?

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