ASP.NET ChangePassword и PasswordRecovery не отправляют электронные письма - PullRequest
0 голосов
/ 08 марта 2010

Я использую элементы управления поставщика членства ASP.NET (ChangePassword и PasswordRecovery), и они обычно работают просто отлично.

К сожалению, они не отправляют электронные письма после завершения процесса.

Я настроил SMTP-сервер с помощью веб-сайта конфигурации ASP.NET, и он добавил следующие строки в файл web.config:

<system.net>
 <mailSettings>
  <smtp from="maildaemon@pagetailors.de">
   <network host="pagetailors.de" password="XXXX" userName="XXXX" />
  </smtp>
 </mailSettings>
</system.net>

Я также попытался использовать IP-адрес сервера вместо домена.

В дополнение к этому я установил свойства определения почты для используемых веб-элементов управления:

<MailDefinition From="maildaemon@pagetailors.de"
 Subject="Your new password">
</MailDefinition>

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

Я также проверил файлы журнала SMTP на сервере (это сервер MailEnable), но даже не смог найти попытку отправить эти сообщения.

Я использую специальный класс помощника по электронной почте, который вручную отправляет электронное письмо с использованием следующих настроек:

public static void SendEmail(string from, string to, string subject, string body)
{
    SmtpClient mailClient = new SmtpClient(ConfigReader.GetStringValue("MailServer"));
    mailClient.Credentials = new NetworkCredential(ConfigReader.GetStringValue("MailUsername"),
                                                   ConfigReader.GetStringValue("MailPassword"));

    MailMessage mailMessage = new MailMessage(from, to, subject, body);
    mailClient.Send(mailMessage);
}

Значения для почтового сервера, имени пользователя и пароля, считанные из файла конфигурации, совпадают с определенными в инструменте конфигурации ASP.NET. Эти письма успешно доставлены.

Есть идеи? Заранее спасибо!

1 Ответ

1 голос
/ 08 марта 2010

Хорошо, я нашел обходной путь :

Я могу вызвать свой собственный класс EmailHelper в событии passwordRecovery.OnSendingMail. Как ни странно, сообщение не отправляется, если я установлю для e.Cancel значение true ПОСЛЕ вызова моего помощника (который говорит, что оно было успешно отправлено). Если я оставлю e.Cancel = false, все будет работать.

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