Récupération d'un objet listbox et changer en string [Résolu]

Signaler
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour, je créer ce post pour vous présenter mon problème.
Voilà, cela fait quelque temps que j'essaye de créer une application capable d'envoyer un e-mail et une pièce-jointe, seulement, je voudrais que la pièce-jointe s'ajoute automatiquement à partir d'un dossier que j'aurais prédéfini, de manière à ce que, quel que soit l'email envoyé, la pièce-jointe serait toujours la même, l'ajout de la pièce jointe doit se faire automatiquement
, c'est le but de l'application, l'utilisateur n'aura pas à faire quoi que ce soit.

J'ai réussi à créer la partie pour récupérer le chemin d'accès de la pièce-jointe dans une listbox invisible, j'ai aussi réussi à définir l'envoi de message, le seul problème est que le nom du fichier joint change sans arrêt, mais ne change pas de dossier, j'ai donc fait un code permettant d'obtenir le chemin d'accès de tout fichier dans le-dit dossier.

Mon problème est que je n'arrive pas à entrer le chemin d'accès du dossier de la pièce jointe ET le nouveau nom de la pièce jointe (qui apparaît dans la listbox grâce au code permettant d'obtenir le nom de de tout fichier dans le dossier).
Il faudrait donc que je puisse combiner le chemin d'accès du dossier avec le nom du fichier contenu dans la listbox.
Je ne suis qu'un tout jeune débutant, mais il me semble qu'il faudra intercepter le nom du fichier de la listbox, le changer en type string ? Et l'ajouter au lien du dossier.

Cela fait quelques temps que je ne trouve pas de solution à mon problème, s'il vous plait pourriez vous m'aider et si possible m'expliquer en détail ?
Merci beaucoup.
Eresea

11 réponses

Problème résolu, le code qu'il manquait:
For Each valeur As [String] In ListBox1.Items
            Console.WriteLine(valeur)
            ListBox2.Items.Add(valeur)
            Dim Finish = mystring & valeur
            ListBox3.Items.Add(Finish)
         Next

Merci pour votre aide
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut

Tu compliques les choses.
Que ton nom de fichier se trouve dans une ListBox, c'est ton choix.
A toi de savoir relire cet item. Ton problème est-il là ?

Envoyer des mails : As-tu écris quelque chose ?
Sur quoi bloques-tu ?

LeCheminEtFichier = VariableChemin & "" & VariableNomFichier
C'est tout se qu'on peut te répondre, ne connaissant rien de l'avancement de ton projet.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Merci pour cette réponse rapide, je vais détailler.
Voici le code permettant l'envoi du mail, mon seul problème est que je voudrais envoyer des fichier joint (
MyMailMessage.Attachments.Add(New System.Net.Mail.Attachment(Fichier))
) de tous les fichiers d'un dossier, je ne sais pas comment m'y prendre malheureusement.
Voici le code :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim MyMailMessage As New MailMessage()
        Dim SMTPServer As New SmtpClient("smtp.gmail.com")
        Dim Fichier As String = "Chemin vers le dossier"
        Dim FileName As String
        Dim Path As String

        Path = "Chemin vers le dossier"
        FileName = Dir(Path)
        While FileName <> ""
            Debug.Print(FileName)
            FileName = Dir()
        End While

        'Email
        MyMailMessage.From = New MailAddress("Déstinataire@gmail.com") 'Destinataire
        MyMailMessage.To.Add("Expéditeur@gmail.com") 'Expéditeur
        MyMailMessage.Subject = ("Nouveau Message !") 'Sujet
        MyMailMessage.Body = ("Text1: " & TextBox1.Text & " Text2: " & TextBox2.Text) 'Corps
        For Each Lines As String In Fichier
            MyMailMessage.Attachments.Add(New System.Net.Mail.Attachment(Fichier))
        Next

        'SMTP
        SMTPServer.Port = ("587")
        SMTPServer.Credentials = New System.Net.NetworkCredential("Mail@gmail.com", "mot de passe") 'Email (+Pass)
        SMTPServer.EnableSsl = True

        Try
            SMTPServer.Send(MyMailMessage) 'Envoi


Merci pour votre aide
Eresea
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Bah ....
Avec ton programme, tu sembles vouloir expédier chaque fichier contenu dans une liste nommée 'Fichier'.
Or, 'Fichier' est une String simple contenant "Chemin vers le dossier".
Donc, ça va pas, c'est sûr.

Au début, tu voulais envoyer 1 pièce jointe.
Maintenant, c'est plusieurs.
Il va falloir être plus clair.

Que donne ta boucle While ?
Correspond-elle à la liste de tous les fichiers que tu dois joindre ?
Pour faire simple, j'aimerais récupérer tous les fichiers d'un dossier et implanter leurs chemin d'accès dans des strings différents, cela permettrais de n'insérer que les différentes string comme 'Fichier', donc les chemin d'accès aux fichiers en fichier joint, ainsi d'envoyer automatiquement tous les fichiers du dossier.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Oui, le principe, j'avais compris.

Je te demande juste de relire ces lignes qui sont incohérentes :
For Each Lines As String In Fichier
    MyMailMessage.Attachments.Add(New System.Net.Mail.Attachment(Fichier))
Next
- Tu veux énumérer des lignes à partir d'une chaine de caractère "Fichier" ... qui n'en a pas : ça n'a pas de sens
Il faudrait que Fichier soit un dictionnaire, non ?
- Tu énumères un objet "Lines" et tu ne t'en sers pas ensuite : pas plus de sens
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Pour ce qui est de l'énumération des fichiers d'une répertoire, un question TRÈS récente http://www.vbfrance.com/forum/sujet-LISTE-FICHIERS-REPERTOIR_1607108.aspx te montre comment faire avec les objets .Net et pas les instructions comme DIR, héritées de VB6.
Je te demande juste de relire ces lignes qui sont incohérentes :

Il s'agit en fait d'une tentative que j'ai abandonnée en réalité, désoler pour cette erreur de ma part et merci pour l'aide dans ce post, je vais m'y concentrer.
Avec l'aide du post indiqué j'ai réussi à obtenir un code me permettant de récupérer les nom de fichier et extensions d'un dossier prédéfini.
Imports System.IO
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        Dim opendir As String = "C:\Users\Eresea\Desktop\Test\INFOS"

        Dim di As New IO.DirectoryInfo(opendir)
        Dim extFi As IO.FileInfo() = di.GetFiles("*.*") 'filtrer les fichiers
        Dim fi As IO.FileInfo
        For Each fi In extFi
            ListBox1.Items.Add(fi.Name) 'affiche les noms avec extension

            'ListBox1.Items.Add(fi.Name.Replace(fi.Extension, ""))'affiche les noms sans extension

        Next
    End Sub
End Class


Cependant, je ne sais pas comment faire parvenir leurs chemin d'accès (incluant les fichiers) à la fonction qui ajoute le fichier au mail, Help ! Je ne m'en sort vraiment pas
Merci encore pour votre aide, elle m'est très utile.
Bonsoir, pour clarifié mon problème :
Connaissez vous un moyen de créer une "partie" (comme une string) à partir d'une string avec le chemin d'accès du dossier et la partie contenant les noms de fichier ( au dessus fi ) ?

Autrement dit, fusionner le chemin d'accès avec la première ligne de la Listbox, puis la deuxième etc...
Je comprend que je demande beaucoup d'aide mais ce projet est important et j'ai du mal à comprendre.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
J'ai rien compris.
Ce code n'a rien à voir avec le code présenté au début.
Bref; Je te donnais la solution dans ma première réponse
LeCheminEtFichier = VariableChemin & "" & VariableNomFichier
suffisait d'adapter