Ce logiciel permet d'envoyer un email en exécutant blat avec en pièces jointes tous les fichiers d'un dossier. On peut mettre une ou plusieurs adresses mail en argument ou dans un fichier ini.
Une fois transmis les fichiers peuvent être archivés.
Le prog peut se refermer automatiquement ou rester ouvert
Source / Exemple :
Imports System.Object
Imports System.Runtime.InteropServices.Marshal
Imports System.IO
Imports System
Public Class sendmails
Public blat_instructions$
Public blat_to$
Public dossier_temp$
Public dossier_archives$
Public chemin_courrant$
Public fermetureauto$
Public liste_attachements$
Public archivage$
Private Declare Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedBuffer As IntPtr, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
Public argument As String
'Retourne la valeur de la clé "Cle" de la section "Section" du fichier "File"
Public Function GetCle(ByVal File As String, ByVal Section As String, ByVal Cle As String) As String
Dim PtrCh As IntPtr
Dim Lng As Integer
Dim Chaine As String
PtrCh = StringToHGlobalAnsi(New String(vbNullChar, 1024))
Lng = GetPrivateProfileString(Section, Cle, "", PtrCh, 255, File)
Chaine = PtrToStringAnsi(PtrCh, Lng)
FreeHGlobal(PtrCh)
GetCle = Chaine
End Function
Private Sub sendmails_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dirInfo As DirectoryInfo
Dim arguments As [String]() = Environment.GetCommandLineArgs()
chemin_courrant$ = Application.StartupPath
'récupérer l'argument
If arguments.Length > 1 Then argument = arguments(1)
If argument = "" Then
argument = "DEFAULT"
blat_to = GetCle(chemin_courrant$ + "\sendmails.ini", argument, "to")
Else
blat_to = argument
End If
'lecture du fichier ini
fermetureauto = GetCle(chemin_courrant$ + "\sendmails.ini", "DEFAULT", "fermetureauto")
archivage = GetCle(chemin_courrant$ + "\sendmails.ini", "DEFAULT", "archivage")
blat_instructions = GetCle(chemin_courrant$ + "\sendmails.ini", "BLAT", "instructions")
dossier_temp = GetCle(chemin_courrant$ + "\sendmails.ini", "DOSSIERS", "temp")
dossier_archives = GetCle(chemin_courrant$ + "\sendmails.ini", "DOSSIERS", "archives")
Dim Liste_fichiers As String() = Directory.GetFileSystemEntries(dossier_temp$)
Dim Entree As String
Dim monStreamWriter1 As StreamWriter = New StreamWriter(chemin_courrant + "\sendmails.log", True, System.Text.Encoding.UTF8)
Dim monStreamWriter2 As StreamWriter = New StreamWriter(chemin_courrant + "\attach.txt", True, System.Text.Encoding.UTF8)
'lecture du dossier temporaire et création de la liste des piéces jointes
For Each Entree In Liste_fichiers 'Pour chaque entrée de la liste
If File.Exists(Entree) Then 'Si c'est un fichier
liste_attachements = liste_attachements + "," + Entree
End If
Next (Entree)
'écriture de la liste dasn sun fichier texte
monStreamWriter2.WriteLine(liste_attachements)
monStreamWriter2.Close()
ListBox1.Items.Add(argument)
If liste_attachements <> "" Then ListBox1.Items.Add(liste_attachements)
ListBox1.Items.Add(blat_instructions + " -to " + blat_to + " -af " + chemin_courrant + "\attach.txt")
'exécution de blat
Shell(blat_instructions + " -to " + blat_to + " -af " + chemin_courrant + "\attach.txt", AppWinStyle.NormalFocus, True, -1)
If archivage = "Oui" Then 'si archivage = oui, création des dossiers si nécessaire et déplacement des fichiers
dirInfo = New DirectoryInfo(dossier_archives + "\" + Str(Now.Year))
If dirInfo.Exists Then 'le dossier année existe't'il ?
dirInfo = New DirectoryInfo(dossier_archives + "\" + Str(Now.Year) + "\" + Str(Now.Month))
If dirInfo.Exists = False Then Directory.CreateDirectory(dossier_archives + "\" + Str(Now.Year) + "\" + Str(Now.Month)) 'si le dossier mois n'existe pas, le creer
Else
Directory.CreateDirectory(dossier_archives + "\" + Str(Now.Year)) 'creer le dossier année
Directory.CreateDirectory(dossier_archives + "\" + Str(Now.Year) + "\" + Str(Now.Month)) 'ceer le dossier mois
End If
dossier_archives = dossier_archives + "\" + Str(Now.Year) + "\" + Str(Now.Month)
For Each Entree In Liste_fichiers 'Pour chaque entrée de la liste
Dim TmpName As String = Microsoft.VisualBasic.Mid(Entree, Len(dossier_temp$) + 1)
TmpName = Replace(TmpName, "'\'", "") 'récupérer le nom du fichier
If File.Exists(Entree) Then 'Si c'est un fichier
File.Move(Entree, dossier_archives + TmpName) ' le déplace dans le dossier archives
End If
Next (Entree)
Else
For Each Entree In Liste_fichiers 'Pour chaque entrée de la liste
Dim TmpName As String = Microsoft.VisualBasic.Mid(Entree, Len(dossier_temp$) + 1)
TmpName = Replace(TmpName, "'\'", "") 'récupérer le nom du fichier
If File.Exists(Entree) Then 'Si c'est un fichier
File.Delete(dossier_archives + TmpName) ' le déplace dans le dossier archives
End If
Next (Entree)
End If
'Ecriture du texte dans le fichier log
monStreamWriter1.WriteLine(Now)
monStreamWriter1.WriteLine("argument :" & argument)
monStreamWriter1.WriteLine("Pieces jointes :" & liste_attachements)
monStreamWriter1.WriteLine(blat_instructions + " -to " + blat_to + " -af " + chemin_courrant + "\attach.txt")
'Fermeture du StreamWriter
monStreamWriter1.Close()
'suppression du fichier liste des pieces jointes
File.Delete(chemin_courrant + "\attach.txt")
If fermetureauto = "Oui" Then End
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
End Sub
End Class
Conclusion :
Dans le zip on trouve la source, blat et les doc(word) html
décompresser le zip sur d: renseigner le fichier ini, mettre un petit fichier dans le dossier temp et executer sendmails.exe
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.