begin process at 2012 02 12 19:33:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > ENVOYER UN MAIL (GÈRE LES FICHIERS JOINTS ET LE HTML) EN VB.NET (2002,2003,2005) VIA SYSTEM.NET.DLL OU SYSTEM.WEB.DLL

ENVOYER UN MAIL (GÈRE LES FICHIERS JOINTS ET LE HTML) EN VB.NET (2002,2003,2005) VIA SYSTEM.NET.DLL OU SYSTEM.WEB.DLL


 Information sur la source

Note :
9,75 / 10 - par 4 personnes
9,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Source .NET ( DotNet ) Classé sous :mail, piece, joint, html, envoyer Niveau :Débutant Date de création :18/01/2003 Date de mise à jour :12/02/2007 11:00:02 Vu / téléchargé :20 566 / 1 650

Auteur : hvb

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note


 Description

Voila j'ai écrit ce petit exemple apres avoir trouver comment utiliser cette dll, je pense que cela pourra etre utile à certains, donc je le poste...

Source

  • 'MAJ : j'ai supprimé le code 2002/2003 (.net framework 1.0 1.1, qui utilisait l'obsolete System.Web.Mail). Celui ci est encore accessible dans le zip, qui n'a pas été mis à jour.
  • Imports System.Net.Mail ' a ajouter avant la definition de votre classe
  • 'version 2005, compatible il me semble vb2003 fonction renvoyant sous forme de chaine le resultat de l'envoi :
  • Public Function sendmail(ByVal Mfrom As String, ByVal Mto As String, ByVal Msubject As String, ByVal Mbody As String, ByVal Mcc As String, ByVal smtpsrv As String, ByVal ishtml As Boolean, Optional ByVal login As String = "", Optional ByVal pass As String = "", Optional ByVal attachedfile As String = "") As String
  • Try
  • Dim DotNetMail As New MailMessage(New MailAddress(Mfrom), New MailAddress(Mto))
  • With DotNetMail
  • .Subject = Msubject
  • .Body = Mbody
  • .IsBodyHtml = ishtml
  • If attachedfile <> "" Then
  • .Attachments.Add(New Attachment(attachedfile))
  • End If
  • End With
  • Dim SmtpMail As SmtpClient = New Net.Mail.SmtpClient(smtpsrv)
  • If (login <> "" And pass <> "") Then SmtpMail.Credentials = New System.Net.NetworkCredential(login, pass)
  • SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network
  • SmtpMail.Send(DotNetMail)
  • SmtpMail = Nothing
  • Return "Mail envoyé avec succés"
  • Catch err As Exception
  • MsgBox("Erreur: " + err.Message)
  • Return "Erreur lors de l'envoie du message : " & err.Message
  • End Try
  • End Function
'MAJ : j'ai supprimé le code 2002/2003 (.net framework 1.0 1.1, qui utilisait l'obsolete System.Web.Mail). Celui ci est encore accessible dans le zip, qui n'a pas été mis à jour.

Imports System.Net.Mail ' a ajouter avant la definition de votre classe

'version 2005, compatible il me semble vb2003 fonction renvoyant sous forme de chaine le resultat de l'envoi :
    Public Function sendmail(ByVal Mfrom As String, ByVal Mto As String, ByVal Msubject As String, ByVal Mbody As String, ByVal Mcc As String, ByVal smtpsrv As String, ByVal ishtml As Boolean, Optional ByVal login As String = "", Optional ByVal pass As String = "", Optional ByVal attachedfile As String = "") As String
        Try
            Dim DotNetMail As New MailMessage(New MailAddress(Mfrom), New MailAddress(Mto))
            With DotNetMail
                .Subject = Msubject
                .Body = Mbody
                .IsBodyHtml = ishtml
                If attachedfile <> "" Then
                    .Attachments.Add(New Attachment(attachedfile))
                End If
            End With
            Dim SmtpMail As SmtpClient = New Net.Mail.SmtpClient(smtpsrv)
            If (login <> "" And pass <> "") Then SmtpMail.Credentials = New System.Net.NetworkCredential(login, pass)
            SmtpMail.DeliveryMethod = SmtpDeliveryMethod.Network
            SmtpMail.Send(DotNetMail)
            SmtpMail = Nothing
            Return "Mail envoyé avec succés"
        Catch err As Exception
            MsgBox("Erreur: " + err.Message)
            Return "Erreur lors de l'envoie du message : " & err.Message
        End Try
    End Function

 Conclusion

Attention :
Si votre serveur smtp ne supporte pas l'envoie de mails sans etre logué,
Si le serveur de l'email de l'envoyeur n'est pas valide,
Vous recevrez une erreur de type : "Could not access 'CDO.Message' object" .


Voila, il y a les commentaires pour toutes remarques...


PS: le serveur smtp de votre provider (en general smtp.votreprovider.xxx) fait office d'open relay si votre ip fait partie de ses plages.

En clair, vous etes chez wanadoo, mettez smtp.wanadoo.fr  ... chez free smtp.free.fr ... etc etc.

Attention c'est votre provider (fournisseur d'accés) ...  pas le serveur de votre addresse mail.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 octobre 2004 03:03:24 :
Edit pour l'info "provider = open relay" qui semblait pas si evidente que ça....
12 février 2007 11:00:02 :
Mise à jour du code pour le framework 2.0 (seulement dans le cadre code, pas dans le zip= Ajout de la possiblité de s'identifier (credential)

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) FOND DE FEUILLE ANIMÉ : DÉGRADÉ MOUVANT POUR ABOUT OU SPLASH...
Source avec Zip Source avec une capture Source .NET (Dotnet) FONT VIEWER : VISIONNEUSE DE POLICES SYSTEMES.
Source avec Zip Source avec une capture Source .NET (Dotnet) HBSNAPSHOTERV3.0 : GESTIONNAIRE DE CAPTURES D'ÉCRAN
Source avec Zip Source avec une capture Source .NET (Dotnet) JEU : PICROSS OU "PUZZLE JAPONAIS"
Source avec Zip Source .NET (Dotnet) [.NET2] COMPRESSION/DÉCOMPRESSION GZIP DE FICHIER GRÂCE À IO...

 Sources de la même categorie

Source avec Zip Source avec une capture GESTIONNAIRE DE TÉLÉCHARGEMENT, AVEC REPRISE ET MULTITHREADI... par Madx23
Source avec Zip Source avec une capture CONVERTIR DU TEXTE RTF EN CODE HTML ET VICE-VERSA par vicosta
Source avec Zip Source avec une capture DICTIONAIRE TEXT/AUDIO/VISUELLE ANGLAIS AVEC WEBBROWSER CONT... par majnounmajda
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI... par ShareVB
Source avec Zip Source avec une capture MINI SEVEUR HTTP AVEC INTERFACE GRAPHIQUE ET IMPLÉMENTATIONS... par lemout

 Sources en rapport avec celle ci

GÉNÉRATEUR DE MAIL OUTLOOK AVEC MISE EN FORME VIA UNE SYNTAX... par 8Tnerolf8
Source avec Zip Source avec une capture [HTA] SMTP MAIL CLIENT AVEC PIÈCE-JOINTE par hackoo
Source avec Zip Source avec une capture [VBS] ENVOYER UN E-MAIL EN HTML AVEC PIÈCE-JOINTE EN VBSCRIP... par hackoo
GÉNÉRATEUR DE MAIL LOTUS NOTES AVEC MISE EN FORME VIA UNE SY... par 8Tnerolf8
Source avec Zip Source .NET (Dotnet) ENVOYER MAIL AVEC SERVEUR SMTP ET CONNEXION AVEC LOGIN OU PA... par thepoe

Commentaires et avis

Commentaire de Fornikator le 19/01/2003 01:12:01

Jarrive pas a le faire fonctionner sinon 6/10

Commentaire de hvb le 19/01/2003 04:01:44

c'est pas parcque tu sais pas lancer une source et trouver un server en open relay qu'il faudrait sous-noter le code... ca ne merite pas vraiment de note, c'est surtout la à titre d'exemple...

Commentaire de ronanry le 19/01/2003 10:06:23

et comment peut on faire si on est oblige d'avoir un serveur loggue???

Commentaire de iubito le 19/01/2003 12:31:41

j'arrive pas à le faire marcher. Eske ça fonctionne avec smtp.free.fr ?

Commentaire de hvb le 19/01/2003 14:27:22

non smtp.free.fr n'est pas open relay... voila une toute petite liste de serveur dont c'est le cas (je vais pas non plus pousser au spam, si vous en voulez plus, mailez moi ou laisser un msg ici)  vu qu'apparement c'est de moins en moins courant (moi mon provider le fait, mais je le donne pas ^^ ) :

ns2.heartlandexpress.com
pool-129-44-35-231.ny325.east.verizon.net
194.204.205.15
194.206.228.97
200.27.165.233

apres tous sont + ou - rapides... je suis en train de creer une liste a mettre a jour de serveurs open relay, mailez moi si cela vous interesse.

Et pour ce qui est de la question de ronanry, je vais essayer de voir ca... mais au pire il reste les sockets.

Commentaire de badconex le 19/01/2003 20:19:25

Ah merci,  justement
j'essayait d'utiliser cet dll ya quelque jour mé jy suis pas arrivé, c sympa

vive vb.net

10/10

Commentaire de jockos le 20/01/2003 14:55:17

Moi, j'ai développé un code qui marche juste avec Winsock...(pas besoin de passer par Outlook).
J'envoie les données avec le protocol SMTP à un serveur quelconque...(smtp.wanadoo.fr par exemple).

On peut envoyer plusieurs fichiers joints, à plusieurs destinataires...
Si ça interresse des personnes, je le mettrais sur ce site, car je ne suis pas sûr qu'il y ait dejà des sources qui fasse cela...

Commentaire de guyvdv le 20/01/2003 18:30:54

Biensur Jockos, metre sur le site est une bonne idee.
Je veux essayer d'en faire un programme pour envoie d'un mailling a mais clients.
GUY van der Velden

Commentaire de cbjp85 le 07/02/2003 23:03:46

Le code source génère une erreur : Impossible d'acceder à l'objet 'CDO.Message'.
Je suis débutant en VB et je ne sais pas ce que je peux faire. Pouvez vous m'aider svp !!??

Commentaire de hvb le 08/02/2003 01:36:44

si tu avais lu entierement mon post, tu aurais lu que cette erreur se genere lorsque le server smtp utilisé n'est pas free relay... pour une liste de serveur free relay...contactes moi...

Commentaire de fraboulet le 01/12/2003 13:37:52

OK, l'idée est bonne, mais il est dommage qu'elle nécessite un serveur open relay!
jockos, je suis très intéressé par ton prog avec winsock, j'ai essayé avec VB6 et je ne parviens pas à faire fonctionner le MIME!

Commentaire de jockos le 01/12/2003 14:10:30

le MIME, c'est un vrai casse tête...
;)
pour faire un bon client Mail en VB, il faut bien comrpendre MIME. Il y a une assez bonne description sur ce site : www.salemioche.com
Ou carrément se plonger dans la RFC.

Commentaire de fraboulet le 01/12/2003 14:18:51

Déja fait...C'est de ce site que je me suis inspiré pour faire mon client...mais j'ai tout de même des prbs!
Ton prog en question utilise le MIME? Si oui, n'hesite pas à me le mailer (si tu l'as encore!)sinon t'utilises quoi pour attacher sans utiliser MAPI??

Commentaire de jockos le 01/12/2003 16:22:52

Il faut encoder en base64 ton fichier (algo style UUEncode) et ensuite ajouté le fichier encodé au mail (à la fin en séparant les parties MIME par des balises BOUNDARY).

C'est pas très compliqué à joindre un fichier à un mail en respectant MIME...


Private Function AddHeaderFileSMTP() As String
    Dim i As Byte
    Const Boundary As String = "TonBoundary"
    
    AddHeaderFileSMTP = "MIME-Version: 1.0" + vbCrLf + _
                "Content-Type: multipart/mixed; " + _
                "boundary=" + """" + "----=_" + Boundary + """" + vbCrLf + _
                "X-Mailer: VB jock" + vbCrLf + vbCrLf + _
                "This is a multi-part message in MIME format." + vbCrLf + vbCrLf

    AddHeaderFileSMTP = AddHeaderFileSMTP + _
                    "------=_" + Boundary + vbCrLf + _
                    "Content-Type: text/plain; charset=" + """" + "iso-8859-1" + """" + vbCrLf + _
                    "Content-Transfer-Encoding: 8bit" + vbCrLf + vbCrLf

    
    'Contenu du mail
    AddHeaderFileSMTP = AddHeaderFileSMTP + _
                    strBody + vbCrLf + vbCr + vbCrLf + vbCrLf
    
    ' Joint un ou plusieurs fichiers au mail, dont le Path de chaque fichier est contenu dans la liste 'tabFileAttach' (tableau de String)

    If nbFileAttach = 0 Then
        Exit Function
      End If
            
        i = 0
        Do While i &lt; nbFileAttach
                
            strFile = OpenFileAPI(tabFileAttach(i).Path)

            If strFile = "" Then
                'Erreur d'ouverture du fichier à joindre au mail
                    strErreurSMTP = "Erreur d'ouverture du fichier :" + vbCrLf + """" + tabFileAttach(i).Path + """."
                    DoEvents
                    Exit Function
           End If
            
           strFileNameSend = tabFileAttach(i).name

           AddHeaderFileSMTP = AddHeaderFileSMTP + _
               "------=_" + Boundary + vbCrLf + _
               "Content-Type: application/octet-stream;" + vbCrLf + _
               "   name=" + """" + strFileNameSend + """" + vbCrLf + _
               "Content-Transfer-Encoding: 7bit" + vbCrLf + _
               "Content-Disposition: attachment;" + vbCrLf + _
               "   filename=" + """" + strFileNameSend + """" + vbCrLf + vbCrLf
            
           AddHeaderFileSMTP = AddHeaderFileSMTP + _
                                UUEncode(strFile) + vbCrLf
            
            i = i + 1
        Loop
        
    AddHeaderFileSMTP = AddHeaderFileSMTP + _
                        "------=_" + Boundary + vbCrLf
                        
End Function

Avec cette fonction, tu peux joindre autant de fichier que tu veux et envoyer le flux au serveur SMTP (dans l'étape de fin DATA du protocole).

Je vais me motiver pour mettre ma source sur le site, ce sera plus simple...

Commentaire de fraboulet le 01/12/2003 20:01:58

Super, je ne sais pas encore si le code fonctionne!mais je compte l'essayer très vite!
RQ : N'HESITE PAS A PLACER TON SOURCE SI IL FONCTIONNE CAR IL EST DIFFICILE DE TROUVER UN CLIENT SMTP COMPLET!! (MAIL + FICHIER JOINT)
Merci encore!

Commentaire de monstros2003 le 21/12/2004 13:23:10

Presque 2 ans après...
Voici ce qu'il faut rajouter pour être authentifié sur un serveur non open relay tel que free, laposte, ect...
Avant l'envoi du mail, ajouter :
DotNetMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1")
DotNetMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "nom")
DotNetMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "mdp")

Commentaire de ahmani24 le 24/04/2006 17:37:44

Super,je l'ai essayé est ça marche tres bien.

Commentaire de hackoustik le 30/04/2006 09:06:16

Bjr, jai fais un pti prog pour envoyer mes mails, sa marche, mais la je lis et envois les lignes d'une page HTML et je pensai que mon compte Hotmail me les afficherai en tant que page HTML, alors quil m'affiche les lignes HTML, kelk1 sait si cest parceque jai oublier une option ?, yaurai pas une histoire avec Content-Type ?

Commentaire de thepoe le 21/11/2006 01:32:13

Je viens de réussir a faire plus simple et plus clair. je travaille sur le html en ce moment.
Le lien vers la source : http://www.vbfrance.com/code.aspx?ID=40401

Salutations

Commentaire de hvb le 21/11/2006 18:48:31

mouais, plus clair... plus simpe peut etre, vu que tu as fais une classe contenant UNE fonction, mais explique moi en quoi ta source est plus clair.
La grosse difference, c'est que tu utilise pas la toute premiere version du framework (ce qui etait le cas ici) et donc que tu peux specifier le serveur smtp sans bidouilles. ^^
et si j'etais pas une grosse faignasse, je mettrais ma source à jour mais bon... :)

Commentaire de thepoe le 21/11/2006 19:29:43

En effet, une fonction pour une classe, lol j'aurais pu faire mieux... Plus clair, j'ai dit ca parceque j'avais juste regardé le souce affiché plus haut qui n'est pas complet.
Désolé pour mon imprécision, et merci à tous pour la diffusion du code source, une des rares choses encore paragées sur la planete... Salutations

Commentaire de timotep le 12/11/2007 21:05:02

Bonjour,

Bon code, il m'a bien servi.
Cependant, j'ai une question. J'ai le problème suivant. Pendant l'envoi de l'email, la pièce jointe est en lecture seule. Mon problème, c'est que dans mon appli, même après que le message soit envoyé, le fichier joint reste en lecture seule (base de données). Y a t il des ressources à libérer? car je suppose que l'objet créé pour attacher le fichier n'est pas détruit et donc que la pièce reste en lecture seule, jusqu'à ce que l'appli se femre complètement.

Commentaire de Sly727 le 24/03/2009 15:17:49

Bonjour,

j'ai testé cette source et elle fonctionne plutôt bien. Cependant il y a une chose qui ne fonctionne pas, c'est l'envoi de l'email en copie caché (Bcc), on peut ajouter une adresse email à qui on veut envoyer une copie caché mais dans la fonction, ce n'est pas traité. Donc finalement on rentre une adresse inutilement.

Est-ce que qqun peut me donner un coup de main pour faire fonctionner ça svp ?

Commentaire de Sly727 le 24/03/2009 16:34:54

J'ai trouvé tout seul. Il suffit de rajouter: .Bcc.Add(Mcc) après .Body = Mbody

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

VB6 ---->> Mail au format HTML [ par AlAiN ] s'il vous plait, est il possible d'envoyer des mail au format html avec vb6, pour les mails au format text, le composant mapi fonctionne, mais je cher envoi de mail (fichier joint) [ par M@nu ] Je dois envoyer des mails à une liste de personnes.Pour cela, je me connecte à un serveur smtp via un contrôle winsock. Ca, ça marche.Cependant, je do Envoyer un mail avec piece jointe [ par danounouche ] Salut tout le mondeDesole je sais que cette question reviens toujours mais j'ai besoin d'une reponse tres rapidementJe voudrai savoir comment envoyer Envoyer un mail + une piece jointe en utilisant la messagerie par défaut [ par globule ] Bonjour, Comment envoyer un mail + une piece jointe à partir d'un programme VB en utilisant la messagerie par défaut (l'utilisateur ne doit pas ressai envoyer le contenue d'un webbrowser par mail [ par lordrpg ] voila je cherche comment envoyer le contenue d'un webbrowser par mail sans utiliser le HTML ... si bien sur c'est possible et par la meme occasion com ENVOI MAIL AVEC PIECE JOINTE [ par ARTHUGERAS ] Bonjour,J'utilise un MAPI SESSION ET MAPIMESSAGE pour envoyer un mail avec pièces jointes.Sur la plupart des micros aù je l'ai installé, cela fonction Envoyer un mail au format HTML [ par Bartez_Cool ] Bonjour,Je souhaiterais créer et envoyer un mail au format HTML avec VB6. Voici ce que j'utilise actuellement comme source VB :MAPISession1.SignOnMAPI envoyer un mail htmlen vb6 [ par riderbmx ] Bonjourj'utilise un script d'envoi de mail trouvé ici meme.Ce script se connecte et utilise les commandes smtp pour envoyer le mailJe voudrai pouvoir envoie mail en html [ par clementpat ] bonjour a tous , pas de probleme pour envoyer un mail en textemais comment faire pour l'envoyer en htmlmerci a ceux qui peuvent m'aider .patrick comment envoyer un mail au format HTML avec MAPI ou DDO [ par sorianoc ] comment envoyer un mail au format HTML avec MAPI ou DDO?je galere vraiment la...... merci


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,591 sec (4)

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