CommentCaMarche
Recherche
Posez votre question Signaler

Envoie d'email avec VB [Résolu]

snoopy5.0 - Dernière réponse le 18 avril 2013 à 14:39
Je souhaiterais pouvoir envoyer un email automatique à partir d'une application VB. La seule solution que j'ai trouvée est d'utiliser MAPI. Seulement je n'arrive pas à m'en servir... Deplus je ne trouve aucun endroit ou l'on spécifie l'adresse du serveur pop3!!!
Est-ce que dueldu'un peut me detailler la procédure à suivre ou mieux encore m'indiquer une autre solution que MAPI.
Merci d'avance
Lire la suite 
Réponse
+15
moins plus
Bonjour,

Exemple type sous VB6 :

Cet exemple utilise Outlook Express même si celui-ci n'est pas congiguré.
La configuration est effectué dans le code !

Les valeurs suivantes doivent être remplacer par des valeurs valides.

[ smtp.serveur.net ]
[ monadresse@monserveur.net ]
[ destinataire@serveur.net ]

Option Explicit
'
'Déclaration de constantes

Const PourLecture = 1
Const cteAdresseSource = "monadresse@monserveur.net"


Private Sub cmd_Click(Index As Integer)

    If (Index > 0) Then
       
        ' Déclaration de variables
        Dim objMail As Object
        Dim sDestination As String
        Dim sPieceJointe As String
        Dim msgTitre As String
        Dim msgTexte As String
        
        Dim Drapeau As Boolean
    
        Set objMail = CreateObject("CDO.Message")
        Drapeau = False
        sDestination = "destinataire@serveur.net"
        msgTitre = "Automatisme"
        msgTexte = "Bonjour," & vbLf & "Corps du message"
        sPieceJointe = "D:\Monfichier.txt"
        Drapeau = True
    
        With objMail
    
            ' Ligne à modifier selon l'adresse de l'envoyeur
            .From = cteAdresseSource
            .To = sDestination
            .Subject = msgTitre
            ' Ligne à modifier selon le texte voulu !
            If (sPieceJointe <> "") Then
                If (Drapeau = True) Then
                    .TextBody = msgTexte & vbLf & LirePieceJointe(sPieceJointe) & vbLf
                Else
                    .TextBody = msgTexte & vbLf & "Pièce jointe incluse : " & vbLf
                End If
            Else
                .TextBody = msgTexte & vbCrLf & "Aucune Pièce jointe" & vbCrLf
            End If
            ' Ligne à modifier selon l'adresse du serveur SMTP
            .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.serveur.net"
            .Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
            .Configuration.Fields.Update
    
            If ((sPieceJointe <> "") And (Drapeau = False)) Then
                objMail.AddAttachment (sPieceJointe)
            End If
    
            .Send
        End With
    
        Set objMail = Nothing
    
        MsgBox "Courriel envoyé !"
    Else
        Unload Me
    End If

End Sub
'

Function LirePieceJointe(LeFichier)

    Dim objFSO, CeFichier

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If (objFSO.FileExists(LeFichier)) Then
        Set CeFichier = objFSO.OpenTextFile(LeFichier, PourLecture)
        LirePieceJointe = CeFichier.ReadAll
        CeFichier.Close
        Set CeFichier = Nothing
    End If
    Set objFSO = Nothing

End Function
'


Lupin
Utilisateur anonyme - 6 janv. 2009 à 18:14
re :

Voilà, j'ai tenté de rajouter des commentaires sur chaque instruction

Option Explicit
'

'Déclaration de constantes
Const PourLecture = 1
Const cteAdresseSource = "monadresse@monserveur.net"


Private Sub cmd_Click(Index As Integer)
' Ici le paramètre signifie que le bouton
' fait partie d'un groupe et l'Index est le no
' du bouton

    If (Index > 0) Then
       
        ' Déclaration de variables
        ' Objet courriel
        Dim objMail As Object
        ' Adresse de destination
        Dim sDestination As String
        ' Nom du fichier en pièce jointe
        Dim sPieceJointe As String
        ' Variable contenant l'objet du courriel
        Dim msgTitre As String
        ' Variable contenant le corps du message
        Dim msgTexte As String
        
        ' Variable boolèen pour savoir si
        ' on doit incluse le texte du fichier
        ' texte dans le corps du message ou
        ' si on doit inclure le fichier en
        ' pièce jointe
        Dim Drapeau As Boolean
    
        ' Instancié un objet "courriel"
        Set objMail = CreateObject("CDO.Message")
        ' Initialisation de la variable
        Drapeau = False
        ' Affectation de l'adresse courriel du destinataire
        sDestination = "destinataire@serveur.net"
        ' Affectation du titre
        msgTitre = "Automatisme"
        ' Affectation du corps di message
        msgTexte = "Bonjour," & vbLf & "Corps du message"
        ' Affectation du nom du fichier incluant sa localisation
        sPieceJointe = "D:\Monfichier.txt"
        ' D'où pièce jointe existe -> Drapeau = Vrai
        Drapeau = True
    
        ' Avec objet courriel
        With objMail
    
            ' Ligne à modifier selon l'adresse de l'envoyeur
            ' Affectation à la propriété [ .From ] de l'adresse
            ' de l'envoyeur
            .From = cteAdresseSource
            ' Idem pour le destinataire
            .To = sDestination
            ' Affectation du titre ( objet du message )
            .Subject = msgTitre
            ' Ligne à modifier selon le texte voulu !
            ' Si pièce jointe existe
            If (sPieceJointe <> "") Then
                ' Si le texte de la pièce jointe doit
                ' être inclus dans le corps - Utilisation de la
                ' fonction [ LirePieceJointe ] qui retourne le
                ' contenu du fichier texte
                If (Drapeau = True) Then
                    .TextBody = msgTexte & vbLf & LirePieceJointe(sPieceJointe) & vbLf
                Else
                    ' Sinon spécifié qu'il est inclu en pièce jointe
                    ' dans le corps du message
                    .TextBody = msgTexte & vbLf & "Pièce jointe incluse : " & vbLf
                End If
            Else
                ' Sinon spécifié dans le corps qu'il n'y a pas de pièce jointe
                .TextBody = msgTexte & vbCrLf & "Aucune Pièce jointe" & vbCrLf
            End If
            ' Ligne à modifier selon l'adresse du serveur SMTP
            ' Ici "smtp.serveur.net" doit correspondre à votre FAI
            ' exemple : [ smtp.free.fr ]
            .Configuration.Fields _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.serveur.net"
            ' Aucune modification à cette ligne
            .Configuration.Fields _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

            ' Aucune modification à cette ligne
            .Configuration.Fields.Update
    
            ' Si on veut inclure le fichier en pièce jointe
            If ((sPieceJointe <> "") And (Drapeau = False)) Then
                objMail.AddAttachment (sPieceJointe)
            End If
            ' Envoyer le message
            .Send
        End With
    
        ' Libération de l'objet instancié
        Set objMail = Nothing
    
        MsgBox "Courriel envoyé !"
    Else
        ' Fermeture de la forme pour envoi de courriel
        Unload Me
    End If

End Sub
'

'  Ici la fonction n'étant pas typé, elle est de type Variant
' et peut retourner a peu près n'importe quoi.
Function LirePieceJointe(LeFichier)

    Dim objFSO, CeFichier

    ' Instancié un objet du système de fichier
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    ' Si le fichier existe
    If (objFSO.FileExists(LeFichier)) Then
        ' Instancié un poignée sur le fichier pour l'ouvrir ( une main sur )
        Set CeFichier = objFSO.OpenTextFile(LeFichier, PourLecture)
        ' Lire tout le contenu du fichier
        LirePieceJointe = CeFichier.ReadAll
        ' Fermer le fichier
        CeFichier.Close
        ' Libérré l'objet du fichier
        Set CeFichier = Nothing
    End If
    
    ' Libérré l'objet du système de fichier
    Set objFSO = Nothing

End Function
'


Lupin
Répondre
Sébastien Julien- 24 févr. 2009 à 19:23
Allo, super ce script Lupin,

ca vfonctionne à merveille en local ici. Toutefois, peux-tu ou quelququ'un pourrait-il m'en dis d'avantage sur le schema que nous appelons :

.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "relais.videotron.ca"
.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Configuration.Fields.Update

à quoi ca sert exactement. J'envois de mon ordi ici , via mon smtp de mon FAI videotron.

à quoi ca sert la ligne 1, et la ligne duex, avec cette option 2? Mes envois seront ils inspecté, classés, bref l'appel de ce schéma sera-t-il inventorié chez microsoft?

Une quesiton bête faut le dire, mais j'aimerais en être certain.

merci à l'avance.
Répondre
Utilisateur anonyme - 25 févr. 2009 à 04:58
re:

Je me suis trompé ai j'ai envoyé ma réponse en fin de fil :-(

Quoi qu'il en soit, tu trouveras la réponse en fin de fil !

C'est à l'origine un script VBS qui permet de signaler des évènements
ou de rafraichir un journal automatique :-)

Je l'ai fabriqué pour m'envoyer mon @IP par courriel, puisque comme
toi, je n'ai pas une @IP fixe !

Mon frére et ma mère sont chez vidéotron et il ont ou avait ( il y a quand même
2 ans que je suis descendu à Sherbrooke) une ip fixe.

@+
Lupin
Répondre
arthur2296- 26 déc. 2009 à 16:46
bonjour ,

je voudrais savoir si tu pourrais me dire comment faire pour envoyer des mil avec VB 2008 et les recevoir ( il faudrait qu'il s'affiche dans une listBox et pour les ecrirent il faudrait pouvoir les ecrirent dans une textBox

merci d'avance
Répondre
antoine9298 101Messages postés vendredi 5 avril 2013Date d'inscription 23 décembre 2014Dernière intervention - 18 avril 2013 à 14:39
juste une question(bon enfin 2)
1) cette technique marche-t-elle avec VBScript?

2)si oui,comment ajoute-t-on une piece jointe?
Répondre
Ajouter un commentaire
Réponse
+3
moins plus
J'ai un petit prog qui permet d'envoyer les mail que g dévellopez sous vb5.
Laisse ton E mail et je t'envois les sources sans probleme.
Je ne fais que d'envoyer des mail et je ne m'occupê absolument pas du pop3 qui permet de recuperer les mails pour la lecture.
nat06- 23 avril 2009 à 19:20
Bonjour,

je sais que ce post date un peu...
mais si vous recevez ce mail, et que vous avez 5 minutes.. pourriez vous m'envoyer aussi votre petit bout de programme pour envoyer un mail en VB??
merci d'avance;
;)
Nathalie
Répondre
MohaBaba 118Messages postés jeudi 1 juillet 2010Date d'inscription 27 février 2014Dernière intervention - 27 juil. 2010 à 09:54
Pour le code de Mahdi, je voudrais savoir quelle classe doit on importer pour que NetworkCredential marche (vb.net ne la reconnait pas).
Thanks
Répondre
MohaBaba 118Messages postés jeudi 1 juillet 2010Date d'inscription 27 février 2014Dernière intervention - 27 juil. 2010 à 10:05
Ca y est j'ai trouvé la solution
Répondre
MohaBaba 118Messages postés jeudi 1 juillet 2010Date d'inscription 27 février 2014Dernière intervention - 27 juil. 2010 à 10:26
Mais bon ton code ne marche pas chez moi.
J'utilise vb net 2008.
Si tu as de l'aide ou des explications à me proposer je serai enchanté
Répondre
Ajouter un commentaire
Réponse
+3
moins plus
Bonjour,

Voila le code que j'ai repris et remodifier


Sub Outlook()

'********************************************************************************
'La fonction sert a envoyer un mail via excel en définissant tous les attribut
'********************************************************************************

Dim OLF As Outlook.MAPIFolder, olMailItem As Outlook.MailItem

' MESsages = MSG11 & MSG12 & MSG13 & MSG14
Set OLF = GetObject("", "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
Set olMailItem = OLF.Items.Add

'******************************************************
'Avec la fonciton MailItem défini par olMailItem
'Subject = objet du mail
'.to = destinataire du mail
'.cc = copie du mail
'.bcc = copie caché du mail
'******************************************************

With olMailItem
.Subject = "Fichier rejets RESERVEA"

'.To = "xx@xx"
'.To = "xx@xx"
'.To = "xx@xx"
.CC = "xx@xx"


.Body = "Ci-joint le fichier des rejets RESERVEA complété à J-1"

.Attachments.Add "c:\xx.xls" ' & SOCiete & "" & Nomvar, olByValue, , "C:\Documents and Settings\X074310\Bureau\Image0001.JPG"
.OriginatorDeliveryReportRequested = False
.ReadReceiptRequested = False
.Send
End With
Set ToContact = Nothing
Set olMailItem = Nothing
Set OLF = Nothing
End Sub
Ajouter un commentaire
Réponse
+2
moins plus
Salut,
Je serais aussi interessé pour avoir le code source.
Si tu peux me l'envoyer ca serait cool.

Merci d'avance
Ajouter un commentaire
Réponse
+2
moins plus
J'ai un code pour vous ;-)

Déjà vous êtes obligés de passer par le PHP (ça ouvre une fenêtre puis la referme quoi ^^).
Bon voyons déjà le code VB :

Dim mailto As String
Dim mailfrom As String
Dim mailtitre As String
Dim mailcorps As String
Dim mailreq As String

Sub envoyer()

mailto = "to=" & TextTo.Text
mailfrom = "from=From:" & TextFrom.Text
mailtitre = "titre=" & TextTitre.Text
mailcorps = Replace(TextCorps.Text, Chr$(10), "\n"
mailcorps = "corps=" & mailcorps

mailreq = "http://domaine.tld/vbmail.php?" & mailto & "&" & mailfrom & "&" & mailtitre & "&" & mailcorps

Shell ("c://WINDOWS/iexplore.exe " & mailreq)

End Sub


Ici l'adresse internet est la vôtre avec votre futur code PHP ;-)

Maintenant nous allons le créer celui ci ^^.

<html>
<BODY onLoad=""setTimeout(window.close, 1000)"">

<?php

mail($_GET[mailto], $_GET[mailtitre], $_GET[mailcorps], $_GET[mailfrom]);

?>
</BODY>
</html>


Voilà enregistrez ça en vbmail.php et ça marche ^^
neo_selen- 6 oct. 2009 à 19:55
pour gagner du temps,vu que toutes ces variables sont du type String,
au lieu de:
Dim mailto As String
Dim mailfrom As String
Dim mailtitre As String
Dim mailcorps As String
Dim mailreq As String

tu met
Dim mailto, mailfrom, mailtitre, mailcorps, mailreq As String

sa ira plus vite comme ça.Et c'est tout aussi clair.
mais tu as quand meme oublié dans ton code la vérification que le serveur réponde a la requete.aussi je te poste mon code qui est certes un peu plus long mais permet la vérification sans pour autant qu'il y ait un message qui le dise,en "silencieux".Le voici, il vient du site codes-sources:





Dim Account,Serveur


Set ObjReg = CreateObject("Wscript.shell")

Account = ObjReg.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Default Mail Account")
Serveur = Objreg.RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\" & Account & "\SMTP Server")

Mail "Moi@haha.fr","Toi@haha.fr","Moi","Toi","haha","coucou",Serveur

Sub Mail(MailFrom,MailTo,NomFrom,NomTo,Sujet,Msg,Serveur)

Dim StrData
StrData = ""
set Wck = CreateObject("MSWinsock.Winsock")

Wck.connect Serveur , 25
Do While (wck.state <> 7)
wscript.sleep(200)
Loop
do until Left(StrData,3) = "220"
Wscript.sleep(200)
wck.getdata StrData
loop
StrData = ""

Wck.SendData "HELLO Serveur" & vbCrLf
do until Left(StrData,3) = "250"
Wscript.sleep(200)
Wck.getdata StrData
loop
StrData = ""

Wck.SendData "MAIL FROM: <" & MailFrom & ">" & vbCrLf
do until Left(StrData,3) = "250"
wscript.sleep(200)
Wck.getdata StrData
loop
StrData = ""

Wck.SendData "RCPT TO: <"& MailTo &">" & vbCrLf
do until Left(StrData,3) = "250"
wscript.sleep(200)
Wck.getdata StrData
loop
StrData = ""

Wck.SendData "DATA" & vbCrLf
do until Left(StrData,3) = "354"
wscript.sleep(200)
wck.getdata StrData
loop
StrData = ""

Wck.SendData "From: " & Chr(34) & NomFrom & Chr(34) & " " & "<" & MailFrom & ">" & vbCrLf
Wck.SendData "To: " & Chr(34) & NomTo & Chr(34) & " " & "<" & MailTo & ">" & vbCrLf
Wck.SendData "Subject: " & Sujet & vbCrLf & vbCrLf



' attention,il faut inclure les reponses!! c est a dire le "." est le message.a vous de rajouter eventuellement
' une variable de texte comme ça: dim votretexte as string
Wck.SendData Msg & vbCrLf & "." & vbCrLf
do until Left(StrData,3) = "250"
wscript.sleep(200)
Wck.getdata StrData
loop
StrData = ""

Wck.SendData "QUIT"
Wck.close



End Sub
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
snoopy5.0@wanadoo.fr
Merci d'avance :-)
Ajouter un commentaire
Réponse
+1
moins plus
J'essaye de réaliser une application qui permet d'envoyer des mails et j'aimerais beaucoup que vous m'envoyez le code source svp

Merci beaucoup
Ajouter un commentaire
Réponse
+1
moins plus
Salut, j'aimerais aussi que tu m'envoies le code source et aussi l'exécutable à olinadeau@hotmail.com.

Ajouter un commentaire
Réponse
+1
moins plus
moi aussi je serais interessé
DJtoph@wanadoo.fr
merki
Ajouter un commentaire
Réponse
+1
moins plus
J'aimerais également avoir ce code pour envoi de mail sur un poste utilisant Office-Outlook.
Merci d'avance.
guyc64@hotmail.com
Ajouter un commentaire
Réponse
+1
moins plus
ou je peut telecharger des .ocx pour VB???????????????????????????
Ajouter un commentaire
Réponse
+1
moins plus
svp des sites ki contients des exercices en transact sql j`arrive pas a touver sur google si vs lavez deja trouve` envoi moi les url et merci
Ajouter un commentaire
Réponse
+1
moins plus
salut pouvez vous m'envoyer le code pour pouvoir envoyer des messages en VB sil vous plait merci d'avans
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,
voila moi aussi interesse de voir votre votre code source et surtout sans l utilisation de smtp
voila mon adress de msn
et je serai tres contente si vous me propose votre code source
rababe20@hotmail.com
Ajouter un commentaire
Réponse
+0
moins plus
Je serais également par ce code.
Merci
Mail: sangoku152004@yahoo.fr
Ajouter un commentaire
Réponse
+0
moins plus
Je me suis fié à ce bout de Code (celui de Lupin.A) pour une petite application cette avant-midi.
Elle sera tester par le tech chez le client en aprem, je vais voir si ça à fonctionner.

Je vous tiens au courant.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

je me suis servi du dernier code posté ici et il me sert bien ;) Merci!
Par contre j'aimerai attacher plusieurs fichiers-joints sur un même mail. La méthode AddAttachment, tel qu'elle est utilisée ici, peut le faire? ou peut être qu'il y a un index à mettre en place? j'ai pas trouvé d'info là dessus. un petit coup de main?
Merci d'avance :)
Ajouter un commentaire
Réponse
+0
moins plus
slt, j'ai le code en vb pour l'envoi des aisl automatiquement mais le proibleme si que je veu joindre le contenu d'un document word comme corps message donc est ce qu'il y paersonne qui ma'ide et je l'aide dans une autre chose s'i veut surtout en c++

n'hestitez pas a me contacter tchao2007@HOTMAIL.FR
Ajouter un commentaire
Réponse
+0
moins plus
re:

Bien content que cela serve :-)

Le première ligne ne sert qu'a renseigné le script (le programme) pour savoir
ou envoyer le courriel. Il est nécessaire d'avoir une passerelle SMTP pour
envoyer du courriel.

Comme dans ton logiciel de courriel, tu dois lui indiquer qui est ton FAI.
À moins que tu installe toi-même un service SMTP sur ton système.

Le paramètre [2] spécifie d'utiliser le port courant [ SMTP = port 25 ].

Tu trouveras tous les détails ici :
http://msdn.microsoft.com/en-us/library/ms870485(EXCHG.65).aspx

Mais aucun danger, d'inspection, de surveillance, etc ...
Ceci dit, ce sont les espions qui entrent dans les machines qui font
ce genre de trouble.

Lupin
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour ce code ca m'a beaucoup servi
BadBoy3 108Messages postés dimanche 7 décembre 2008Date d'inscription 7 janvier 2011Dernière intervention - 22 avril 2009 à 01:46
tu peut m'envoyé le code svp sur cette adresse
salam-badboy3@hotmail.fr
crdlmnt
Répondre
Ajouter un commentaire
Ce document intitulé «  Envoie d'email avec VB  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

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.

Le fait d'être membre vous permet d'avoir des options supplémentaires.