begin process at 2010 03 22 12:06:31
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > ENVOYER DES MAIL EN VB6 AVEC SMTP SERVEUR

ENVOYER DES MAIL EN VB6 AVEC SMTP SERVEUR


 Description

pour coder un envoi de mail en VB6, sans exécuter de client messagerie. Fonction de base. il s'agit de manipuler un objet CDO, et de coder les instructions de base d'un envoi de message par un serveur SMTP. cela marche bien, et la fonction devient aussi simple d'utilisation que n'importe quelle fonction de base. Prévoir une variable booleenne pour l'utilisation de la fonction, car elle renvoi une info booléenne sur le bon déroulement de l'envoi......

Source

  • '''""""""""""""""""""""""""""""""""""""""""""""""""""'''
  • ' FONCTION : envoyer un mail par SMTP
  • '''""""""""""""""""""""""""""""""""""""""""""""""""""'''
  • Public Function SMTPSendMail(pstrTo As String, pstrSubject As String, pstrmess As String, Optional pvarAttachFile As Variant, Optional pFileAttach As String) As Boolean
  • 'Quelques explications (bob35) sur les modifs apportees:
  • '======================================================
  • '---pvarattachfile (variant) est de manière usuelle utilisée avec une booléenne. J'ai mis du temps à comprendre la logique inverse:
  • ' parm. false = il y a bien un fichier attaché / true = pas de pj (car plus bas on teste avec ismissing)
  • 'ont été rajoutés:
  • '---optionnal pfileattach ... string qui pointe sur le fichier que l'on veut attacher.
  • '---pstrmess .... string qui permet de composer le corps du message et de l'utiliser directement
  • '---une instruction doevents: pour temporiser le traitement du message, étant plus long que l'exécussion du code VB
  • ' je me suis aperçu que le retour de fonction ne laissait pas le temp au système de traiter comme "true" le retour de bon fonctionnement
  • ' de l'envoi (même s'il a été correctement effectué)
  • On Error GoTo SMTPSendMail_Err
  • Dim i As Long
  • Dim objEmail As New CDO.message
  • Set objEmail = CreateObject("CDO.Message")
  • 'MAIL_FROM peut être n'importe quelle variable string (du projet, passée en paramètre supp. de la fonction etc...)
  • objEmail.From = MAIL_FROM
  • objEmail.To = pstrTo
  • objEmail.Subject = pstrSubject
  • ' Aucun corps de message, uniquement la pièce jointe
  • ' laisser un TextBody avec chaine vide, sinon le mail peut planter (pièce jointe incomplète)
  • 'ci dessus la remarque d'origine sur le passage du lien à la PJ. personnellement je l'ai testé non vide ca marche avec
  • 'une PJ .txt et une .Pdf .... pour le reste ....
  • 'code d'origine: objEmail.TextBody = ""
  • objEmail.TextBody = pstrmess
  • ' Ajout de la pièce jointe, 1 ou plusieurs fichiers
  • If Not IsMissing(pvarAttachFile) Then
  • If IsArray(pvarAttachFile) Then
  • ' parcourrir le tableau
  • For i = LBound(pvarAttachFile) To UBound(pvarAttachFile)
  • objEmail.AddAttachment pvarAttachFile(i)
  • Next i
  • Else
  • objEmail.AddAttachment pFileAttach
  • End If
  • End If
  • With objEmail.Configuration.Fields
  • 'je n'ai pas trop compris la teneur du paramètre, j'ai vu sur le web que "2" était le paramètre mode standard
  • .Item(CdoConfiguration.cdoSendUsingMethod) = 2 'MAIL_SENDUSING
  • 'idem remarque ci dessus, le param cdoBasic fonctionne ( je n'en sais pas plus
  • .Item(CdoConfiguration.cdoSMTPAuthenticate) = cdoBasic 'MAIL_AUTHENTICATE
  • ' ci dessous remplacer MAIL_CPT_SENDUSR par la string que l'on veut (du moment qu'il s'agisse d'un user name valide chez un FA)
  • .Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
  • ' ci dessous le mot de pass (MAIL_CPT_SENDPASS) qui va bien avec le User
  • .Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
  • ' nom du serveur smtp (MAIL_SMTP_SERVER)
  • .Item(CdoConfiguration.cdoSMTPServer) = MAIL_SMTP_SERVER
  • ' port utilisé ( 25 par défaut, j'aime bien le 5025 il est moins souvant filtré ...)
  • .Item(CdoConfiguration.cdoSMTPServerPort) = MAIL_SMTP_SERVERPORT
  • .Update
  • End With
  • DoEvents
  • objEmail.Send
  • SMTPSendMail = True
  • Exit Function
  • SMTPSendMail_Err:
  • MsgBox err.Description
  • End Function
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
' FONCTION : envoyer un mail par SMTP
'''""""""""""""""""""""""""""""""""""""""""""""""""""'''
 Public Function SMTPSendMail(pstrTo As String, pstrSubject As String, pstrmess As String, Optional pvarAttachFile As Variant, Optional pFileAttach As String) As Boolean
 
'Quelques explications (bob35) sur les modifs apportees:
'======================================================
'---pvarattachfile (variant) est de manière usuelle utilisée avec une booléenne. J'ai mis du temps à comprendre la logique inverse:
'   parm. false = il y a bien un fichier attaché / true = pas de pj (car plus bas on teste avec ismissing)
'ont été rajoutés: 
'---optionnal pfileattach ... string qui pointe sur le fichier que l'on veut attacher.
'---pstrmess .... string qui permet de composer le corps du message et de l'utiliser directement
'---une instruction doevents: pour temporiser le traitement du message, étant plus long que l'exécussion du code VB
'   je me suis aperçu que le retour de fonction ne laissait pas le temp au système de traiter comme "true" le retour de bon fonctionnement
'   de l'envoi (même s'il a été correctement effectué)
 


On Error GoTo SMTPSendMail_Err

 Dim i As Long
 Dim objEmail As New CDO.message
 Set objEmail = CreateObject("CDO.Message")

'MAIL_FROM peut être n'importe quelle variable string (du projet, passée en paramètre supp. de la fonction etc...)
 objEmail.From = MAIL_FROM
 objEmail.To = pstrTo
 objEmail.Subject = pstrSubject

 ' Aucun corps de message, uniquement la pièce jointe
 ' laisser un TextBody avec chaine vide, sinon le mail peut planter (pièce jointe incomplète)

'ci dessus la remarque d'origine sur le passage du lien à la PJ. personnellement je l'ai testé non vide ca marche avec 
'une PJ .txt et une .Pdf .... pour le reste ....
'code d'origine:    objEmail.TextBody = ""
 objEmail.TextBody = pstrmess

 ' Ajout de la pièce jointe, 1 ou plusieurs fichiers
If Not IsMissing(pvarAttachFile) Then
    If IsArray(pvarAttachFile) Then
        ' parcourrir le tableau
        For i = LBound(pvarAttachFile) To UBound(pvarAttachFile)
        objEmail.AddAttachment pvarAttachFile(i)
        Next i
    Else
            objEmail.AddAttachment pFileAttach
    End If
End If

 With objEmail.Configuration.Fields
	 'je n'ai pas trop compris la teneur du paramètre, j'ai vu sur le web que "2" était le paramètre mode standard
     .Item(CdoConfiguration.cdoSendUsingMethod) = 2 'MAIL_SENDUSING
	 'idem remarque ci dessus, le param cdoBasic fonctionne ( je n'en sais pas plus	
     .Item(CdoConfiguration.cdoSMTPAuthenticate) = cdoBasic 'MAIL_AUTHENTICATE
	 ' ci dessous remplacer MAIL_CPT_SENDUSR par la string que l'on veut (du moment qu'il s'agisse d'un user name valide chez un FA)
     .Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR
	 ' ci dessous le mot de pass (MAIL_CPT_SENDPASS) qui va bien avec le User
     .Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS
	 ' nom du serveur smtp (MAIL_SMTP_SERVER)
     .Item(CdoConfiguration.cdoSMTPServer) = MAIL_SMTP_SERVER
	 ' port utilisé ( 25 par défaut, j'aime bien le 5025 il est moins souvant filtré ...)
     .Item(CdoConfiguration.cdoSMTPServerPort) = MAIL_SMTP_SERVERPORT
     .Update
 End With
 DoEvents
 objEmail.Send

 SMTPSendMail = True
 
 Exit Function
SMTPSendMail_Err:
 MsgBox err.Description

End Function

 Conclusion

Fontion simple. Souple et améliorable (la preuve, la source d'origine n'est pas de moi... seulement quelques améliorations pratique). J'ai testé sur mon projet, avec et sans PJ, ca marche plutot bien.


 Sources de la même categorie

Source avec Zip LECTURE DXF, par pinatl
Source avec Zip Source .NET (Dotnet) GESTION DE RECETTES par DVDou
Source avec Zip Source avec une capture Source .NET (Dotnet) SYSTEMBACKUP.VB par DVDou
Source avec Zip Source avec une capture DESKTOP WALLPAPER V 5.0 par shaeks
Source avec Zip Source avec une capture Source .NET (Dotnet) SPACE - UN SPACE MAC POUR WINDOWS par vbnino

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) COMPARAISON D'IMAGE par mafieulemouton
Source avec Zip Source .NET (Dotnet) COMPILATION A LA VOLÉE, INTERPRÉTER UNE FONCTION MATHÉMATIQU... par sergeb44
VBA EXCEL FONCTION POUR FORMATER DES ECRITURES BANCAIRES par fredatcs
Source avec Zip DÉTECTEUR DE PROCÉDURES ET FONCTIONS INUTILISÉES par 8Tnerolf8
Source avec Zip UTILISER LA FONCTION LINE POUR EFFECTUER DES FONCTION AGORIT... par flagyg

Commentaires et avis

Commentaire de titi2b le 28/03/2008 15:43:40

Bonjour

Pour l'utiliser il faut avoir le serveur virtuel SMTP d'installé?
C'est bien ça

Commentaire de titi2b le 28/03/2008 15:59:27

je me repond ilfaut juste ajouter la reference
"Microsoft CDO for windows 2000 library"
a plus

Commentaire de bob35 le 28/03/2008 16:26:02

Bonne réponse et merci de la remarque, car il s'agit de mon premier post avec code source, et je m'aperçois que je n'ai pas l'habitude de donner tous les éléments de base. Effectivement il faut ajouter la référence ci dessus citée !!!! pardon pour ceux qui se pose la question.......

Commentaire de VestaX le 29/03/2008 11:15:24

salut, c'est exactement ce que je cherchais. je débute depuis tres peu de temps, et j'ai encore du mal. Serait-il possible d'avoir carrément les fichiers afin de voir commet placer ce code et surtout a quel endroit?

Désolé de faire mon lourdeau, mais le fait d'avoir les fichiers, m'aiderais vraiment a mieux comprendre le fonctionnement

Cordialement :)

Commentaire de yvesyves le 30/03/2008 00:04:05

Tu as juste a coller cette fonction dans un form, un module, ce que tu veux et à l'appeler. Il ne va pas mettre des fichiers pour une fonction de quelques lignes.

Commentaire de titi2b le 30/03/2008 05:52:00

Un petit exemple pour ceux qui ne savent pas comment utilisiser les codes sources via un module
a plus
très bonnes sources mais ou on note désoler; moi je donnerai un  8/10
Mais je ne sait pas ou voté
pardon !!!!

Commentaire de bakhcha le 24/07/2008 12:15:29

merci pour ce code moi je débute la programmation en vb6 je trouve que ce code m'interesse vraiment mais car je suis nouveau dans le domaine j'ai pas bien compris comment utiliser ce code donc j'aimerai bien quelques explications s'il est possible et merci d'avance
Est ce que je mets ce code dans une module et dans une autre forme je realise des champs de texte pour
Email de:
Email pour:
Titre :
et un boutton d'envoyer:
meme que j'ai pas réussi à utiliser ce code mais je donne 8/10 pour ce code et merci pour son auteur d'avance
Message:

Commentaire de jardinvb6 le 30/01/2009 15:04:22

Bonjour
j'essaye d'utiliser le code, mai j'ai le message d'erreur
"Le message n'a aps pu etre envoyé vers le serveur SMTP,Le code d'erreur de transport est 0x80040217.la reposnse du serveur etai not available '
j'ai ajouté :Dim MAIL_FROM As String
Dim MAIL_CPT_SENDUSR As String
Dim MAIL_CPT_SENDPASS As String
Dim MAIL_SMTP_SERVER As String
Dim MAIL_SMTP_SERVERPORT As Single
Toutes mes variables sont bonnes qu'aije oublie ?
merci

Commentaire de Superbaba75 le 10/06/2009 10:01:50

Bonjour,
Depuis des jours, j'essaye en vain d'envoyer mes états convertis en PDF par mail, mais j'ai essayé cette méthode et j'obtiens le même message que jardin VB6.
J'ai donc testé une autre méthode trouvé sur ce forum qui émule les touches de mon client de messagerie, mais si la messagerie est fermée ca plante un peu...
Je possède Access 2007.
Merci

Commentaire de mimiZanzan le 12/08/2009 01:51:29

Bonjour à tous,
Très bonne méthode pour envoyer des mails.
Cependant, quelqu'un sait-il comment obtenir via VB ou une API comment obtenir le nom du serveur smtp?
Merci d'avance

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Chemin court vers un fichier [ par novik ] Recherche une API ou une fonction mepermettant de traduire un chemin 32 bits en chemin 16 bits Exemple :C:\Program Files ==> C:\Progra~1 car votre Récupérer le répertoire windows automatiquement [ par Snake ] Bonjour à tousDans un programme VB4, j'utilise la fonction GetWindowsDirectory qui me renvoie le répertoire de windows.Malheureusement, une fois passé la fonction Random [ par etude euria ] Bonjour,Nous sommes des étudiants dans un institut d'actuariat.Nous avons besoin de la fonction Random pour un bureau d'études.Il faut insérer des par SIMULER UN CLICK DE SOURIS [ par JFK ] Cherche fonction qui simule un click de la souris de la part de l'utilisateur , grand besoin !!! un peut comme la fonction SendKeys(blabla) mais pour fonction Sub [ par coucou ] J'ai un travail dans lequel je dois calculer le taux de change (je rentre le montant et une devise et je la veux dans une autre devise.Et mon résultat Calcul de formules mathématiques variées [ par Didier DEPOISIER ] Langage : VB6 Edition professionnelleExiste il dans VB6 (en standard), une fonction, un outil ou un controle qui permettrait de calculer de facon simp Passage d'un tableau de byte à une fonction encapsulé dans un ACtiveX Dll [ par novik ] J'aimerai pouvoir passer un tableau de Byte a ma fonction (Activex Dll)lors de l'appel j'ai une erreur Type Mismatch.Or lorsque j'appelle cette foncti urgent: utilisation d'une fonction d'une dll ecrite en C dans un programme VB [ par gep ] je suis en train de développeer un application pour permettre une installation facilitée de fichier palm pilote a partir du webpour obtenir les inform Comparaison de dates [ par TheDude ] Je cherche à comparer deux dates au moyen de la fonction DateDiff intégréesous access et tester le résultat dans un If dont voici un exemple : If nombre de samedi et dimanche entre deux dates [ par TheDude ] Je suis à la recherche d'une fonction qui permettrait de compter le nombresamedi plus le nombre de dimanche entre deux dates données.Je ne sais pas s'


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales