2010-06-25 60 views
4

我有一个页面上的ASP PasswordRecovery模块,代码出现这样的: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 

我在此功能中增加了一个破发点,但它永远不会到达,上面的错误消息只是在应用程序中出现。任何其他方式来调试出了什么问题?

回答

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 
1

你记得在你的web.config中声明你的smtp节吗?默认情况下,密码恢复控制在执行过程中使用它。

<system.net> 
<mailSettings> 
<smtp deliveryMethod="Network"> 
<network 
defaultCredentials="True" 
host="localhost" 
port="25" 
from="[email protected]"/> 
</smtp> 
</mailSettings> 
</system.net> 
+0

是的。正如问题中指出的那样,电子邮件工作正常,应用程序每天发送数十个邮件。我编辑了我的问题发布该部分,密码恢复所需的那些其他属性? – DisgruntledGoat 2010-06-25 13:46:31

+0

在进一步的调查中,我意识到我们有一个特殊的功能是发送电子邮件,所以我假定默认的电子邮件系统不工作。有没有办法调用我的自定义函数?如上所述,该应用程序在错误发生之前没有进入PasswordRecovery.SendingMail。 – DisgruntledGoat 2010-06-25 15:14:24

+0

@DisgruntledGoat:你可以做的一件事就是将SMTP元素放入你的web.config文件中,如图所示,使用虚拟值。然后,您可以挂钩“SendingMail”事件,您可以取消该事件以取消默认邮件行为,也可以提供自己的自定义电子邮件逻辑。我知道你说应用程序没有将它发送到“SendingMail”事件,但可能是因为您尚未在yor web.config中声明它所依赖的“MailSettings”元素? – 2010-06-25 16:35:09

1

该错误信息是默认UserNameFailureText

你确定你输入有效的用户名?