Mise à jour du code hérité de System.Web.Mail vers System.Net.Mail dans Visual Studio 2005 :Problèmes d'envoi d'e-mail

StackOverflow https://stackoverflow.com/questions/52321

Question

L'utilisation du système obsolète System.Web.Mail pour l'envoi d'e-mails fonctionne correctement, voici l'extrait de code :

 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

et voici la version mise à jour :

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

J'ai essayé de nombreuses variantes différentes et rien ne semble fonctionner, j'ai le sentiment que cela peut avoir à voir avec SmtpClient, y a-t-il quelque chose qui a changé dans le code sous-jacent entre ces versions ?

Aucune exception n’est rejetée.

Était-ce utile?

La solution

J'ai testé votre code et mon mail est envoyé avec succès.En supposant que vous utilisez les mêmes paramètres pour l'ancien code, je suggère que votre serveur de messagerie (MAIL_SERVER) accepte le message et qu'il y a un retard dans le traitement ou qu'il le considère comme du spam et le rejette.

Je suggérerais d'envoyer un message en utilisant une troisième méthode (telnet si vous vous sentez courageux) et de voir si cela réussit.

MODIFIER:Je note (d'après votre réponse ultérieure) que spécifier le port a quelque peu aidé.Vous n'avez pas dit si vous utilisez le port 25 (SMTP) ou le port 587 (Soumission) ou autre chose.Si vous ne le faites pas déjà, l'utilisation du port de soumission peut également aider à résoudre votre problème.

Wikipédia et RFC4409 avoir plus de détails.

Autres conseils

La bibliothèque System.Net.Mail utilise les fichiers de configuration pour stocker les paramètres. Il vous suffira donc peut-être d'ajouter une section comme celle-ci.

  <system.net>
    <mailSettings>
      <smtp from="test@foo.com">
        <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" />
      </smtp>
    </mailSettings>
  </system.net>

As-tu essayé d'ajouter

smtp.UseDefaultCredentials = True 

avant l'envoi ?

De plus, que se passe-t-il si vous essayez de modifier :

mailMessage.From = New System.Net.Mail.MailAddress(from)
mailMessage.To.Add(New System.Net.Mail.MailAddress(recipent))

pour ça:

mailMessage.From = New System.Net.Mail.MailAddress(from,recipent)

-Kevin Fairchild

Définissez-vous les informations d'identification pour l'e-mail ?

smtp.Credentials = New Net.NetworkCredential("xyz@gmail.com", "password")

J'ai eu cette erreur, mais je crois qu'elle a généré une exception.

Tout ce que vous faites est correct.Voici les choses que je vérifierais.

  1. Vérifiez à nouveau que le service SMTP dans IIS fonctionne correctement.
  2. Assurez-vous qu'il n'est pas signalé comme spam.

ce sont généralement les plus grands coupables chaque fois que nous rencontrons des problèmes d’envoi d’e-mails.

De plus, je viens de remarquer que vous utilisez MsgBox (ex.Message).Je crois qu'ils ont empêché MessageBox de fonctionner avec asp.net dans un service pack, il se peut donc qu'il y ait une erreur, vous ne le savez peut-être pas.vérifiez votre journal des événements.

J'ai ajouté le numéro de port du serveur de messagerie et il a commencé à fonctionner sporadiquement, il semble que ce soit un problème avec le serveur et un retard dans l'envoi des messages.Merci pour vos réponses, elles ont toutes été utiles !

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top