Site Web ASP.net 3.5 utilisant ASP: Le contrôle de l'assistant et SMTPClient n'envoient pas de courrier électronique
-
07-07-2019 - |
Question
J'ai un contrôle asp: Wizard sur un site exécutant Framework 3.5. J'ai acquis les paramètres de l'hôte Web et les ai saisis dans l'utilitaire de configuration Web. Voici le code derrière le fichier:
Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick
Dim mySMTPClient As New SmtpClient()
Dim sb As New StringBuilder
Dim myMail As New MailMessage("webmaster@mydomain.com", "user@mydomain.com")
Dim myFrom As New MailAddress("webmaster@mydomain.com")
Dim myTo As New MailAddress("user@anotherdomain.com")
myMail.BodyEncoding = System.Text.Encoding.UTF8
myMail.IsBodyHtml = False
myMail.To.Add(myTo)
myMail.Subject = "Request for Information"
sb.Append("Contact Name: ")
sb.Append(txtcontactname.Text)
sb.Append("<br/>Phone Number: ")
sb.Append(txtcontactphone.Text)
sb.Append("<br/>Employer Name: ")
sb.Append(txtemployername.Text)
sb.Append("<br/>City: ")
sb.Append(txtcity.Text)
sb.Append("<br/>State: ")
sb.Append(cmbstate.Text)
sb.Append("<br/>Zip: ")
sb.Append(txtzip.Text)
sb.Append("<br/>Other Location: ")
sb.Append(txtotherloc.Text)
sb.Append("<br/>Nature of Business: ")
sb.Append(txtbusnat.Text)
sb.Append("<br/>Eligible Employees: ")
sb.Append(txteligemps.Text)
sb.Append("<br/>Average Employee Turnover Per Year: ")
sb.Append(txtempturnover.Text)
sb.Append("<br/>Broker Name: ")
sb.Append(txtbrokername.Text)
sb.Append("<br/>Broker Email: ")
sb.Append(txtbrokeremail.Text)
sb.Append("<br/>Proposed Effective Date: ")
sb.Append(txteffdate.SelectedDate)
sb.Append("<br/>Limited Benefit Medical Plans: ")
For Each item As ListItem In chkmedplans.Items
If (item.Selected) Then
sb.Append(item.Text)
sb.Append(" ")
End If
Next
sb.Append("<br/>Voluntary Products/Services: ")
For Each item As ListItem In chkvolserv.Items
If (item.Selected) Then
sb.Append(item.Text)
sb.Append(" ")
End If
Next
sb.Append("<br/>Employer Paid Products/Services: ")
For Each item As ListItem In chkempserv.Items
If (item.Selected) Then
sb.Append(item.Text)
sb.Append(" ")
End If
Next
sb.Append("<br/>Preferred Benefit Enrollment Program(s): ")
For Each item As ListItem In chkenrolprog.Items
If (item.Selected) Then
sb.Append(item.Text)
sb.Append(" ")
End If
Next
sb.Append("<br/>Comments: ")
sb.Append(txtcomments.Text)
myMail.Body = sb.ToString()
Try
mySMTPClient.Send(myMail)
Catch ex As Exception
Dim ex2 As Exception = ex
Dim errorMessage As String = String.Empty
While Not (ex2 Is Nothing)
errorMessage += ex2.ToString()
ex2 = ex2.InnerException
End While
Response.Write(errorMessage)
End Try
End Sub
Classe de fin
Le code est conforme sans erreur. Une fois chargée sur le compte d'hébergement partagé, la page se charge et le code permet à l'utilisateur de saisir des informations dans l'assistant. Cependant, le bouton Terminer ne déclenche pas l'étape finale. Voici le code de la dernière étape de l'assistant:
<asp:WizardStep ID="WizardStep4" runat="server" StepType="Complete" Title="Complete">
Thank you for your inquiry. A member of our staff will contact you regarding your request.</asp:WizardStep>
Je ne peux pas déterminer ce qui explique ce problème. Quelqu'un peut-il m'indiquer les causes possibles?
Merci, Sid
La solution
Avez-vous défini des points d'arrêt dans le code pour voir si le code d'envoi de courrier est effectivement atteint? Par exemple, je vous suggérerais de définir des points d'arrêt au moins comme suit:
Pour vérifier que l'événement FinishButtonClick se déclenche.
Dim mySMTPClient As New SmtpClient()
Pour vérifier que le code Sendmail a été frappé.
mySMTPClient.Send(myMail)
Pour voir si une exception se produit.
Dim ex2 As Exception = ex
De plus, il y a au moins deux autres choses à surveiller.
-
Le serveur SMTP n'est peut-être pas configuré ou n'est pas configuré correctement.
-
Même si le serveur SMTP est correctement configuré, vous voulez vous assurer que votre pare-feu (ou vos fournisseurs de services Internet) ne bloque pas l'envoi de courrier SMTP.