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
[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE?[WF4] PASSAGE D'ARGUMENTS LITERAL, VISUALBASICVALUE OU LAMBDAVALUE? par JeremyJeanson
Avec la sortie de la RC de Visual Studio 2010, Microsoft a mis un peu les points sur leS i en ce qui concernait le passage d'arguments. Mais nous somme un certain nombre à avoir pris ce changement comme un coup dur. Pour résumer la situation : à la sortie...
Cliquez pour lire la suite de l'article par JeremyJeanson [RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit
Forum
TRAME LIAISON SERIE TRAME LIAISON SERIE par totoyoyo100
Cliquez pour lire la suite par totoyoyo100
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|