Aktualisieren von Legacy-Code von System.Web.Mail auf System.Net.Mail in Visual Studio 2005:Probleme beim Senden von E-Mails
-
09-06-2019 - |
Frage
Das Versenden von E-Mails mit dem veralteten System.Web.Mail funktioniert problemlos. Hier ist der Codeausschnitt:
Public Shared Sub send(ByVal recipent As String, ByVal from As String, ByVal subject As String, ByVal body As String)
Try
Dim Message As System.Web.Mail.MailMessage = New System.Web.Mail.MailMessage
Message.To = recipent
Message.From = from
Message.Subject = subject
Message.Body = body
Message.BodyFormat = MailFormat.Html
Try
SmtpMail.SmtpServer = MAIL_SERVER
SmtpMail.Send(Message)
Catch ehttp As System.Web.HttpException
critical_error("Email sending failed, reason: " + ehttp.ToString)
End Try
Catch e As System.Exception
critical_error(e, "send() in Util_Email")
End Try
End Sub
und hier ist die aktualisierte Version:
Dim mailMessage As New System.Net.Mail.MailMessage()
mailMessage.From = New System.Net.Mail.MailAddress(from)
mailMessage.To.Add(New System.Net.Mail.MailAddress(recipent))
mailMessage.Subject = subject
mailMessage.Body = body
mailMessage.IsBodyHtml = True
mailMessage.Priority = System.Net.Mail.MailPriority.Normal
Try
Dim smtp As New Net.Mail.SmtpClient(MAIL_SERVER)
smtp.Send(mailMessage)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Ich habe viele verschiedene Varianten ausprobiert und nichts scheint zu funktionieren. Ich habe das Gefühl, dass es möglicherweise mit dem SmtpClient zusammenhängt. Hat sich zwischen diesen Versionen etwas am zugrunde liegenden Code geändert?
Es gibt keine Ausnahmen, die zurückgeworfen werden.
Lösung
Ich habe Ihren Code getestet und meine E-Mail wurde erfolgreich gesendet.Unter der Annahme, dass Sie dieselben Parameter für den alten Code verwenden, würde ich vorschlagen, dass Ihr Mailserver (MAIL_SERVER) die Nachricht akzeptiert und es zu einer Verzögerung bei der Verarbeitung kommt oder dass er sie als Spam betrachtet und verwirft.
Ich würde vorschlagen, eine Nachricht über einen dritten Weg zu senden (Telnet, wenn Sie sich mutig fühlen) und zu sehen, ob das erfolgreich ist.
BEARBEITEN:Ich stelle fest (aus Ihrer nachfolgenden Antwort), dass die Angabe des Ports etwas geholfen hat.Sie haben nicht gesagt, ob Sie Port 25 (SMTP) oder Port 587 (Übermittlung) oder etwas anderes verwenden.Wenn Sie dies noch nicht tun, kann die Verwendung des Sumission-Ports möglicherweise auch zur Lösung Ihres Problems beitragen.
Andere Tipps
Die System.Net.Mail-Bibliothek verwendet die Konfigurationsdateien zum Speichern der Einstellungen, sodass Sie möglicherweise nur einen Abschnitt wie diesen hinzufügen müssen
<system.net>
<mailSettings>
<smtp from="test@foo.com">
<network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" />
</smtp>
</mailSettings>
</system.net>
Haben Sie versucht, hinzuzufügen?
smtp.UseDefaultCredentials = True
vor dem senden?
Was passiert außerdem, wenn Sie versuchen, Folgendes zu ändern:
mailMessage.From = New System.Net.Mail.MailAddress(from)
mailMessage.To.Add(New System.Net.Mail.MailAddress(recipent))
dazu:
mailMessage.From = New System.Net.Mail.MailAddress(from,recipent)
– Kevin Fairchild
Legen Sie die Anmeldeinformationen für die E-Mail fest?
smtp.Credentials = New Net.NetworkCredential("xyz@gmail.com", "password")
Ich hatte diesen Fehler, glaube jedoch, dass er eine Ausnahme ausgelöst hat.
Alles, was Sie tun, ist richtig.Hier sind die Dinge, die ich überprüfen würde.
- Überprüfen Sie noch einmal, ob der SMTP-Dienst in IIS ordnungsgemäß ausgeführt wird.
- Stellen Sie sicher, dass es nicht als Spam gekennzeichnet wird.
Das sind normalerweise die größten Übeltäter, wenn wir Probleme beim Versenden von E-Mails hatten.
Außerdem ist mir gerade aufgefallen, dass Sie MsgBox (ex.Message) ausführen.Ich glaube, dass sie MessageBox daran gehindert haben, asp.net in einem Service Pack zu verwenden, sodass es möglicherweise zu einem Fehler kommt, Sie wissen es vielleicht aber nicht.Überprüfen Sie Ihr Ereignisprotokoll.
Ich habe die Portnummer für den Mailserver hinzugefügt und es begann sporadisch zu funktionieren. Es scheint, dass es ein Problem mit dem Server und eine Verzögerung beim Senden der Nachrichten war.Vielen Dank für eure Antworten, sie waren alle hilfreich!