ASP.NET ChangePassword和PasswordRecovery不发送电子邮件

时间:2010-03-08 14:43:43

标签: asp.net email smtp membership-provider

我正在使用ASP.NET成员资格提供程序控件(ChangePassword和PasswordRecovery),它们通常运行正常。

不幸的是,一旦流程结束,他们就不会发送任何电子邮件。

我使用ASP.NET配置网站设置了SMTP服务器,并在web.config中添加了以下行:

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

我也尝试使用服务器的IP地址而不是域名。

除此之外,我在使用过的Web控件上设置了maildefinition属性:

<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 个答案:

答案 0 :(得分:1)

好吧,我找到了解决方法

我可以在passwordRecovery.OnSendingMail事件中调用我的自定义EmailHelper类。 奇怪的是,如果我在调用我的助手(他说它已成功发送)后将e.Cancel设置为true,则不会发送消息。如果我离开e.Cancel = false,一切正常。