我在页面上有一个ASP PasswordRecovery模块,代码如下:
<asp:PasswordRecovery ID="PasswordRecovery1" runat="server">
<MailDefinition From="[email]">
</MailDefinition>
</asp:PasswordRecovery>
但是,当我提交表单时,我只是收到消息,“我们无法访问您的信息。请重试。”
我看到了this question,并确保将这些属性添加到我的web.config中:
<providers>
<remove name="CustomizedMembershipProvider"/>
<add name="CustomizedMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="MessageBank"
applicationName="MessageBank"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
requiresQuestionAndAnswer="false"
enablePasswordReset="true"
enablePasswordRetrieval="false" />
</providers>
电子邮件工作正常,因为该应用程序会在一天内定期发送电子邮件。但由于某种原因,它不会发送恢复电子邮件。
以下是相关的web.config部分:
<mailSettings>
<smtp from="[email]">
<network host="[host]" password="[password]" userName="[username]"/>
</smtp>
</mailSettings>
更新:我添加了一个处理“SendingMail”事件的函数:
Protected Sub PasswordRecovery_submit(ByVal sender As Object, ByVal e As WebControls.MailMessageEventArgs) Handles PasswordRecovery.SendingMail
我在此函数中添加了一个断点,但它永远不会到达,上面的错误消息只是在应用程序中出现。调试出错的任何其他方法?
答案 0 :(得分:1)
您是否记得在web.config中声明您的smtp部分?默认情况下,密码恢复控件在执行期间使用它。
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network
defaultCredentials="True"
host="localhost"
port="25"
from="webmaster@mydomain.com"/>
</smtp>
</mailSettings>
</system.net>
答案 1 :(得分:1)
该错误消息是默认的UserNameFailureText
您确定要输入有效的用户名吗?
答案 2 :(得分:1)
以下是我解决问题的方法。正如Brian对答案的评论中所提到的,我们的应用程序正在使用自定义电子邮件功能(不是100%确定为什么,但常规SMTP的东西不起作用)。无论如何,你可以简单地劫持PasswordRecovery.SendingMail
事件:
Protected Sub PasswordRecovery_submit(ByVal sender As Object, ByVal e As WebControls.MailMessageEventArgs) Handles PasswordRecovery.SendingMail
' do custom email sending here, using the variables in e.Message
e.Cancel = False
End Sub