我有一个PasswordRecovery
控件,我需要修改它的行为。触发SendingMail
事件时,将调用事件处理程序。在事件处理程序中,我已定义了将MailMessage
写入队列的行为(稍后进行处理)。到现在为止还挺好。问题是事件继续并尝试使用内置方法LoginUtil.SendPasswordMail
。这需要smtp服务器信息,我不想提供(因为它会违反我们的应用程序的设计)。
这是事件处理程序:
protected void vendorWebPasswordRecovery_SendingMail(object sender, MailMessageEventArgs e)
{
string userName = this.vendorWebPasswordRecovery.UserName;
try
{
MailMessage emailMessage = e.Message;
var messageData = new Dictionary<string, string>();
messageData.Add("toEmail", emailMessage.To[0].ToString());
messageData.Add("subject", emailMessage.Subject + " from the queue!");
messageData.Add("body", emailMessage.Body);
//Write the message out to the queue
SendPasswordResetEmail(messageData, userName);
}
catch (Exception ex)
{
LoggingHandler.Write("MailMessageEventArgs did not contain expected data: - " + ex.Message, LogCategoryType.Verbose, TraceEventType.Verbose, 1, ex);
}
//Compilation error: "MailMessageEventArgs doesn't contain a definition for 'Handled'"
e.Handled = true;
}
如何阻止事件继续并调用内置方法?我尝试将MailMessageEventArgs
设置为已处理,但这是编译错误。这甚至是正确的方法吗?
答案 0 :(得分:1)
您应该使用e.Cancel取消活动并停止发送默认电子邮件。
此处示例:scottonwriting.net/sowblog/archive/2009/11/10/163371.aspx