begin process at 2012 02 13 11:59:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > VMAIL X - CLIENT SMTP POUR L'ENVOI DE MAIL + EXE/ACTIVEX !

VMAIL X - CLIENT SMTP POUR L'ENVOI DE MAIL + EXE/ACTIVEX !


 Information sur la source

Note :
8,17 / 10 - par 6 personnes
8,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Expert Date de création :15/05/2002 Date de mise à jour :22/05/2003 11:34:11 Vu / téléchargé :7 019 / 1 125

Auteur : cyrilp

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est une de mes grosses réalisations que je vous présente ici...
Tout est y est : Design, code bien gras, fonctionel, etc...

Ce programme est un client SMTP qui permet d'envoyer des mails, comme un tout bête anonymiseur en utilisant Winsock.

Mais il est joli (l'interface est adaptée de celle du site vbfrance, merci Nix, même si je ne t'ai pas demandé ton autorisation)... Et en plus, ce programme est UN EXECUTABLE ACTIVE X !

Un EXE/ActiveX ??? Pourquoi faire ? Et bien, en l'incluant dans les références de vos programmes VB/Access ou autre, vous pourrez utiliser les méthodes/propriétés du programme pour envoyer un mail, créer/lire un fichier ini, crypter/décrypter des fichiers, etc...

Il reste quelques bugs, comme la définition du type MIME d'un fichier... Qui sous NT, par exemple, renvoie toujours "Application Octet/Stream"... L'utilisation de l'ajout de destinataire sous forme de collection (bien que la collection existe, elle ne fonctionne pas encore !!!), le codage au format MIME qui est très lent (evitez les pieces jointes de plus de 500 Ko) et bien sur les bugs qui restent à éliminer...

Pour l'utilisation sous forme d'ActiveX, je joint le code ci dessous :    

Source

  • ' Après avoir ajouté la référence à vmailx.exe dans votre programme
  • ' Voici le code à ajouter, par exemple sur clic d'un bouton
  • Sub cmdMail_OnClick()
  • ' Utilisation de l'envoi de mail
  • Dim MyMail As vMailX.SendMail
  • Set MyMail = New vMailX.SendMail
  • ' On vérifie la connection à Internet
  • If MyMail.EstConnecte = True Then
  • With MyMail
  • .AdresseFrom = "monadresse@moncompte.fr" ' Nom du destinataire
  • .AdresseFromName = "Mon Nom" ' Nom de l'emmeteur
  • ' Ancienne méthode d'ajout de destinataire
  • '.AdresseTo = "destinataire1@compte.fr;destinataire2@compte.fr" ' Destinataire
  • ' Nouvelle méthode sous forme de collection
  • .Destinataire.Add "d1", "destinataire1@compte.fr", MailTo
  • .Destinataire.Add "d2", "destinataire2@compte.fr", MailCc
  • .AttacherFichier.Add , "C:\autoexec.bat", "Fichier Autoexec" ' Ajout d'un fichier
  • .DomainSource = "mon.ordinateur.fr" ' Nom du PC pour le HELO au serveur SMTP
  • .MailObjet = "Objet du mail" ' Objet du mail
  • .MailFormat = eTEXT ' Format du mail
  • .MailContenu = "Corps du mail au format texte" ' Corps du mail
  • .MailPriorite = eNormalPriority ' Priorité du Mail
  • .MailServeur = "mail.serveursmtp.fr" ' Serveur de mail SMTP
  • .TimeOut = 30 ' en secondes
  • .xMailer = "MyMail Mailer" ' Nom du Mailer qui a envoyé le mail
  • ' Si le time out est dépassé, on retente l'envoi
  • .RéessayerEnvoi = True
  • ' On affiche la fenêtre de progression
  • .AfficherEnvoi = True
  • End With
  • MyMail.MailSend
  • If MyMail.ErreurNumber = 0 Then
  • MsgBox "Message correctement envoyé !"
  • Else
  • MsgBox MyMail.ErreurDescription
  • End If
  • End If
  • End Sub
  • Sub cmdSaveValue_Click()
  • ' Utilisation des fichiers INI
  • Dim MyIni As vMailX.Ini
  • Set MyIni = New vMailX.Ini
  • With MyIni
  • .IniFile = "C:\myinifile.ini"
  • .WriteIni "TEST", "CONFIG", "ceci est un test"
  • End With
  • MsgBox MyIni.ReadIni("TEST", "CONFIG", "Je sais pas ?")
  • End Sub
  • Sub cmdGetInfo_Click()
  • ' Utilisation des infos systèmes
  • Dim MyInfo As vMailX.LocalInfo
  • Set MyInfo = New vMailX.LocalInfo
  • With MyInfo
  • MsgBox "Nom de l'ordinateur : " & .CurrentComputer
  • MsgBox "Nom de l'utilisateur : " & .CurrentUser
  • MsgBox "Version de Windows : " & .WindowsVersion
  • ' etc...
  • End With
  • End Sub
  • ' Ne sont pas présent les démonstrations pour Cryptage et Codage...
  • ' (c) Cyril PORTET, Janvier 2002 - Avril 2002
  • ' vMail X version 0.1.60
' Après avoir ajouté la référence à vmailx.exe dans votre programme
' Voici le code à ajouter, par exemple sur clic d'un bouton

Sub cmdMail_OnClick()
    ' Utilisation de l'envoi de mail
    
    Dim MyMail As vMailX.SendMail
    Set MyMail = New vMailX.SendMail
    
    ' On vérifie la connection à Internet
    If MyMail.EstConnecte = True Then
    
        With MyMail
            .AdresseFrom = "monadresse@moncompte.fr" ' Nom du destinataire
            .AdresseFromName = "Mon Nom" ' Nom de l'emmeteur
            
            ' Ancienne méthode d'ajout de destinataire
            '.AdresseTo = "destinataire1@compte.fr;destinataire2@compte.fr" ' Destinataire
            ' Nouvelle méthode sous forme de collection
            .Destinataire.Add "d1", "destinataire1@compte.fr", MailTo
            .Destinataire.Add "d2", "destinataire2@compte.fr", MailCc
            
            .AttacherFichier.Add , "C:\autoexec.bat", "Fichier Autoexec" ' Ajout d'un fichier
            .DomainSource = "mon.ordinateur.fr" ' Nom du PC pour le HELO au serveur SMTP
            .MailObjet = "Objet du mail" ' Objet du mail
            .MailFormat = eTEXT ' Format du mail
            .MailContenu = "Corps du mail au format texte" ' Corps du mail
            .MailPriorite = eNormalPriority ' Priorité du Mail
            .MailServeur = "mail.serveursmtp.fr" ' Serveur de mail SMTP
            .TimeOut = 30 ' en secondes
            .xMailer = "MyMail Mailer" ' Nom du Mailer qui a envoyé le mail
            ' Si le time out est dépassé, on retente l'envoi
            .RéessayerEnvoi = True
            ' On affiche la fenêtre de progression
            .AfficherEnvoi = True
        End With
    
        MyMail.MailSend
        
        If MyMail.ErreurNumber = 0 Then
            MsgBox "Message correctement envoyé !"
        Else
            MsgBox MyMail.ErreurDescription
        End If
        
    End If
End Sub

Sub cmdSaveValue_Click()
    ' Utilisation des fichiers INI
    
    Dim MyIni As vMailX.Ini
    Set MyIni = New vMailX.Ini
    
    With MyIni
        .IniFile = "C:\myinifile.ini"
        .WriteIni "TEST", "CONFIG", "ceci est un test"
    End With
    
    MsgBox MyIni.ReadIni("TEST", "CONFIG", "Je sais pas ?")
End Sub

Sub cmdGetInfo_Click()
    ' Utilisation des infos systèmes
    
    Dim MyInfo As vMailX.LocalInfo
    Set MyInfo = New vMailX.LocalInfo
    
    With MyInfo
        MsgBox "Nom de l'ordinateur : " & .CurrentComputer
        MsgBox "Nom de l'utilisateur : " & .CurrentUser
        MsgBox "Version de Windows : " & .WindowsVersion
        ' etc...
    End With
End Sub

' Ne sont pas présent les démonstrations pour Cryptage et Codage...
' (c) Cyril PORTET, Janvier 2002 - Avril 2002
' vMail X version 0.1.60
   
  

 Conclusion

Note du 23/05/2002 :
Merci de me remonter les bugs, les problemes, les ameliorations a apporter... Et n'hesitez pas à vous en servir, pour l'instant, c'est du tout FREE !

Note du 27/05/2002 :
J'ai fait une mise à jour partielle du code.
Maintenant le destinataire du message se renseigne sous forme d'une collection comme pour les pieces jointes, j'ai corrigé 2 ou 3 petits bugs mineurs, et là j'attaque le format MIME et l'encodage en version plus rapide...

A+
Cyrilp    

 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


 Sources du même auteur

Source avec Zip Source avec une capture OCX (ACTIVEX) KEY LOGGER
Source avec Zip Source avec une capture APPEL D'URL ET MISE À JOUR DE VARIABLES AUTOMATIQUE
Source avec Zip Source avec une capture RÉCUPERER LE TEXTE ET NUMÉRO DE HANDLE DE L'ÉLEMENT SURVOLÉ ...
Source avec Zip Source avec une capture LISTE DES FENÊTRES (HANDLE) ET PROCESS ASSOCIÉS
Source avec Zip Source avec une capture RENDRE UNE FENÊTRE (FORM) TRANSLUCIDE (COULEUR PARAMÉTRABLE)

 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

Commentaires et avis

Commentaire de seboss le 25/05/2002 13:32:14

plutot po mal :-)

Commentaire de jack le 18/07/2002 19:52:05 administrateur CS

Tu rigoles, c'est excellent :
- Très belle présentation
- Des méthodes sures (vb5 d'accord)
Pour le faire fonctionner, il faut juste aller dans le fichier INI et modifier le serveur par le vôtre (pop.free.fr par exemple) au lieu de l'adresse IP bizarre (10.1.0.1) qu'il met.
Si tu allais farfouinner dans la base de registre, tu trouverais tout ce genre de renseignements qui ne s'initialisent pas ici.
Bravo, bravo, ça me plais beaucoup (10)

Commentaire de MarcoPaulo le 19/07/2002 14:28:22

Ta source m'a ete tres utile pour construire mon redirecteur de fax. Merci beaucoup.
Si cela t'interese, j'ai modifie 2 choses.
1) un coup de pop quand je me fais jeter par 500(lock by pop)
2) le system d'encodage

Private Const base64_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="

Public Function b64EncodeFile(strFilePath As String) As String
    On Error GoTo ErrEdit
    Dim lFileSize
    Dim nbligne
    Dim temp As String
    Dim bStr As String * 1
    Dim rStr As String * 3
    Dim inFile As Long
    Dim nPos As Long
    Dim tPos As Long
    Dim pour As String
    b64EncodeFile = ""
    inFile = FreeFile
    rStr = ""
    bStr = 0
    nPos = 0
    tPos = 0
    
    
    If Dir(strFilePath) = "" Then GoTo ErrEdit
    lFileSize = FileLen(strFilePath)
    nbligne = Int(lFileSize / 3)
    Open strFilePath For Binary Access Read As inFile
        Do While nPos < nbligne
            tPos = tPos + 1
            nPos = nPos + 1
            DoEvents
            Get #inFile, , rStr
            temp = temp & base64_enc_buffer(rStr)
            If Len(temp) = 76 Then
                b64EncodeFile = b64EncodeFile & temp & vbCrLf
                temp = ""
            End If
            rStr = ""
        Loop
        If Len(temp) > 0 Then
            b64EncodeFile = b64EncodeFile & temp
        End If
        If lFileSize - (nbligne * 3) > 0 Then
            temp = ""
            For tPos = 1 To lFileSize - (nbligne * 3)
                Get #inFile, , bStr
                temp = temp & bStr
            Next
            b64EncodeFile = b64EncodeFile & base64_enc_buffer(temp) & vbCrLf
        End If
    Close inFile
    b64EncodeFile = b64EncodeFile & vbCrLf
    Exit Function
    
ErrEdit:
    b64EncodeFile = ""
    Exit Function
End Function
Private Function base64_enc_buffer(str As String) As String

Dim r1 As String
Dim r2 As String
Dim r3 As String
Dim r4 As String

Select Case Len(str)
Case 0
    r1 = ""
    r2 = ""
    r3 = ""
    r4 = ""
Case 1
    r1 = base64(Int((Asc(Mid(str, 1, 1))) / 4))
    r2 = base64((Asc(Mid(str, 1, 1)) Mod 4) * 16)
    r3 = base64(64)
    r4 = base64(64)
Case 2
    r1 = base64(Int((Asc(Mid(str, 1, 1))) / 4))
    r2 = base64((Int((Asc(Mid(str, 2, 1))) / 16)) + ((Asc(Mid(str, 1, 1)) Mod 4) * 16))
    r3 = base64((Asc(Mid(str, 2, 1)) Mod 16) * 4)
    r4 = base64(64)
Case 3
    r1 = base64(Int((Asc(Mid(str, 1, 1))) / 4))
    r2 = base64((Int((Asc(Mid(str, 2, 1))) / 16)) + ((Asc(Mid(str, 1, 1)) Mod 4) * 16))
    r3 = base64((Int((Asc(Mid(str, 3, 1))) / 64)) + ((Asc(Mid(str, 2, 1)) Mod 16) * 4))
    r4 = base64(Asc(Mid(str, 3, 1)) Mod 64)
End Select

  base64_enc_buffer = r1 & r2 & r3 & r4
End Function
Private Function base64(num As Byte) As String
    If (num < 65 And num > -1) Then
        base64 = Mid(base64_alphabet, num + 1, 1)
    Else
        base64 = ""
    End If
End Function

Commentaire de fofodavid le 19/10/2003 12:43:45

ouiias bof bof

Commentaire de jbel le 09/12/2003 15:27:09

Pas mal ce prog...  même très bien je dois dire! C'est mieux que ce que je cherchais.
J'ai juste un petite question quand même:

en utilisant un serveur "Microsoft Exchange Server" j'arrive à envoyer des mails en interne en mettant le nom de mon serveur, mais comment faire pour envoyer des mails en externe???

Merci ++

Commentaire de syllef le 06/10/2004 10:03:31

Le composant est très bien
Mais, je n'arrive pas à joindre des fichiers
Déjà, il y a une erreur dans le script d'utilisation du composant :
.AttacherFichier.Add , "C:\autoexec.bat", "Fichier
Le premier paramètre n'est pas optionnel.

Lorsque je joins un fichier au mail, il est envoyé sans le fichier...
Pouvez vous m'aider en me donnant un exemple d'un mail avec fichier joint?

Merci

Commentaire de pledoux le 12/01/2005 09:37:42

Vraiment bien mais, pour être vraiment complet, il manque deux choses :
1 - le principe de transparence (cas d'une ligne avec uniquement un point) ex :
       debut message
       .
       fin message
dans ce cas la fin du message n'est pas transmise. Il faut que tu double le point (toute séquence <CRLF>.<CRLF> doit être remplacée par <CRLF>..<CRLF>. Le serveur SMTP interprête pour supprimer le second point.
2 - La gestion du destinataire en copie cachée n'est pas complétement implémentée. Comme pour "to :" et "cc :" il faut envoyer "bcc :" dans la section data

Commentaire de JLN le 15/07/2005 07:55:52

Super et je l'utilise depuis quelques temps, si une nouvelle version est prête je te suggere de la placer ici tu auras toujours autant de fan pour ce type de developpement. Je met 10 parce qu'il n'y a pas plus !

Bonne prog

JLN

Commentaire de anice2 le 18/04/2007 12:17:17

Vraiment trop bien la source mais il me reste un petit soucis : je voulais mettre un login et pass pour le serveur smtp et j'ai pas pu le faire !! si c possible d'ajouter cette option et qu'on puisse ce connecté avec son propre serveur smtp ca va etre sympa .
Merci d'avance et bon courage

 Ajouter un commentaire




Nos sponsors


Sondage...

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 : 0,499 sec (4)

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