我正在使用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配置工具中定义的值相同。这些邮件已成功发送。
有什么想法吗? 提前谢谢!
答案 0 :(得分:1)
好吧,我找到了解决方法:
我可以在passwordRecovery.OnSendingMail事件中调用我的自定义EmailHelper类。 奇怪的是,如果我在调用我的助手(他说它已成功发送)后将e.Cancel设置为true,则不会发送消息。如果我离开e.Cancel = false,一切正常。