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

Soyez le premier à donner votre avis sur cette source.

Vue 23 119 fois - Téléchargée 1 827 fois


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 / Exemple :


'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.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Sly727
Messages postés
9
Date d'inscription
lundi 30 août 2004
Statut
Membre
Dernière intervention
8 mai 2011

J'ai trouvé tout seul. Il suffit de rajouter: .Bcc.Add(Mcc) après .Body = Mbody
Sly727
Messages postés
9
Date d'inscription
lundi 30 août 2004
Statut
Membre
Dernière intervention
8 mai 2011

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 ?
timotep
Messages postés
34
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
16 janvier 2008

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.
thepoe
Messages postés
30
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
1 juin 2011

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
hvb
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1
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... :)

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 et codes sources.

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