Salut tout le monde,
Je vous propose cette source qui est en fait un moyen de contrecarré le message d'erreur du wrapper CDO dans le namespace 'System.Web.Mail'.
Avec le namespace cidessus, si le serveur qui nous sert à envoyer un message n'est pas OpenRelay (le serveur demande une authentification login/pass), on a parfois un message d'erreur "Impossible d'accéder à l'objet 'CDO.Message' et natturellement, l'envoi du mail est intérrompu.
J'ai trouvé en fait dans les composant COM (Projet/Ajouter un reference / onglet COM) qu'il y avait un composant nommé "Miccrosoft CDO 2000 library".
Ajoutez le, fait un "Imports CDO" et rajouter les lignes suivantes avant l'envoi du mail:
objMessage.Configuration.Fields "
http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "XXX.XXX.XXX.XXX" 'L'IP de votre serveur
objMessage.Configuration.Fields "
http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2
objMessage.Configuration.Fields.Update()
Ou XXX.XXX.XXX.XXX est votre serveur mail.
->> La fonction Addinfos() est une fonction perso, donc pas la pein de la copier dans votre source, elle ne marchera pas :) Remplacer la par un "MessageBox.Show("blablabla").
Source / Exemple :
'En haut de votre feuille de code, après avoir ajouter le COM "Microsoft CDO 2000 library":
Imports CDO
Private Sub SendMail(ByVal szFichierLog As String, ByVal szDestinataires As String, ByVal szDestinatairesCc As String, ByVal szSubject As String)
Try
AddInfo("Création du mail..", Color.Green, FontStyle.Regular)
Dim objMessage As New CDO.Message
objMessage.From = "admin@YoplaBoom.com"
objMessage.To = "Niko@YoplaBoom.com"
objMessage.BCC = "admin@YoplaBoom.com"
objMessage.Subject = szSubject
'Créé un stream pour lire le rapport à envoyer:
Dim objSR As StreamReader
Dim message As String
objSR = New StreamReader(szFichierLog, System.Text.Encoding.Default)
'tant qu'on est pas à la fin du rapport...
While objSR.Peek <> -1
message &= objSR.ReadLine() 'récupère le contenu du rapport
End While
objSR.Close()
objSR = Nothing 'désalloue la mémoire occuppée
'Créer le mail au format HTML:
objMessage.HTMLBody = message
'On envoi le mail aux destinataires:
AddInfo("Envoi du mail...: ", Color.Green, FontStyle.Regular)
objMessage.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "192.168.2.15" 'L'IP de votre serveur
objMessage.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2
objMessage.Configuration.Fields.Update()
objMessage.Send()
AddInfo("MAIL ENVOYE !", Color.Green, FontStyle.Bold, True)
Catch ex As Exception
Errors += 1
AddInfo("-> [ERROR] Function SendMail(): " & ex.Message, Color.OrangeRed, Font.Bold)
End Try
End Sub
Conclusion :
Préférez le namespace System.Web.Mail si vous avez un server Open Relay car CDO devient petit à petit obsolète.
@+luche
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.