4

我在页面上有一个 ASP PasswordRecovery 模块,代码如下所示:

<asp:PasswordRecovery ID="PasswordRecovery1" runat="server">
    <MailDefinition From="[email]">
    </MailDefinition>
</asp:PasswordRecovery>

但是,当我提交表单时,我只收到一条消息,“我们无法访问您的信息。请重试。”

我看到了这个问题,并确保将这些属性添加到我的 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

我在此函数中添加了一个断点,但从未达到,上述错误消息只是出现在应用程序中。还有其他方法可以调试出了什么问题吗?

4

3 回答 3

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>
于 2010-06-25T12:51:29.173 回答
1

该错误消息是默认值UserNameFailureText

您确定输入的用户名有效吗?

于 2010-07-13T20:10:37.903 回答
1

这是我解决问题的方法。正如布莱恩回答的评论中提到的,我们的应用程序正在使用自定义电子邮件功能(不是 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
于 2010-07-14T16:41:31.053 回答