2

ASP.NET 2.0에서 CreateUserWizard 컨트롤의 동작을 수정하려고합니다. 상당히 순진하고 즉시 사용 가능한 구현 방식을 사용하면 존재하지 않는 이메일 주소를 입력하거나 이메일을 보내는 중에 다른 오류가 발생하면 YSOD에 SMTP 오류의 추악한 내용과 사용자 계정이 만들어집니다. SendMailError 처리가 도움이되지 않는 것 같습니다. 사용자가 이미 생성 된 후 이후에 이 발생합니다.CreateUserWizard - 확인 전자 메일을 보낼 수없는 경우 사용자 만들기 방지

전자 메일 오류로 인해 "잘못된 전자 메일 주소"오류 메시지 (또는 그와 유사한 내용)가 표시되는 것이 이상적입니다. 이것은 꽤 쉬워야하는 것처럼 보입니다 만, 주위를 둘러 본 후 꽤 답을 찾지 못했습니다. 아무도 해결책이 없나요?

답변

2

이것은 내가하는 일입니다. 완벽하지는 않지만 도움이됩니다.

protected void CreateUserWizard1_SendMailError(object sender, SendMailErrorEventArgs e) 
{ 
    // e.Exception can be one of the exceptions generated from SmtpClient.Send(MailMessage) 
    if (e.Exception is SmtpFailedRecipientException) 
    { 
     // The message could not be delivered to one or more of the recipients in To, CC, or BCC()()(). 
     // TODO: Set an error message on the page 
     e.Handled = true; 

     // Since the user has already been created at this point, we need to remove them. 
     Membership.DeleteUser(CreateUserWizard1.UserName); 

     // Set an internal flag for use in the ActiveStepChanged event. 
     emailFailed = true; 

     return; 
    } 
} 

protected void CreateUserWizard1_ActiveStepChanged(object sender, EventArgs e) 
{ 
    if (CreateUserWizard1.ActiveStep != CreateUserWizard1.CompleteStep) 
     return; 

    if (emailFailed) 
    { 
     // If the email failed, keep the user on the first step. 
     CreateUserWizard1.ActiveStepIndex = 0; 
     return; 
    } 
} 
0

이렇게하면 안됩니다. 대부분의 비즈니스는 X 시간 내에 클릭해야하는 확인 이메일을 보내고 계정을 생성해야합니다. 이 방법은 CUW 작동 방식에 따라 약간 변경되었으므로 기본 기능에서 벗어나 이벤트에 접근하여 기본 기능을 방해해야합니다.

HTH.

+0

실제로 충분하지만 이메일을 보낼 수 없다는 것을 사용자에게 알리는 방법은 무엇입니까? –

+0

GMAIL과 같은 일부 API를 살펴 보거나 Exchange에이 기능이 있는지 확인하십시오. 이메일에 오류가 발생하여 전송 실패가 다시 전송되어 이벤트를 처리하지 않아야합니다. 그 메시지를 알아내는 메시지. 일/주 후에 문제가 될 수 있습니다. –