Accueil > > > ENVOYER DES MAIL EN VB6 AVEC SMTP SERVEUR
ENVOYER DES MAIL EN VB6 AVEC SMTP SERVEUR
Information sur la source
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
Commentaires et avis
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'
|
Derniers Blogs
PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio
Forum
FONCTION EXCEL VBAFONCTION EXCEL VBA par samanta26
Cliquez pour lire la suite par samanta26 RE : VITESSERE : VITESSE par ossama261988
Cliquez pour lire la suite par ossama261988
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|