IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

VB NET : La Méthode Attachments.Add(source,nomfichier) pour envoyer une PJ [Débutant]


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2016
    Messages : 43
    Points : 29
    Points
    29
    Par défaut VB NET : La Méthode Attachments.Add(source,nomfichier) pour envoyer une PJ
    Bonjour,

    J'ai un code VB qui fait plusieurs choses dont l'envoi d'un mail avec PJ (via Outlook) .
    Mon code vb qui permet d'envoyer un mail avec une pj m'indique une erreur concernant la Méthode oattachs.add(source,nomfichier)
    C'est une erreur de type "Invalid castexception" qui me dit que la conversion du chemin de ma pj en "Integer" n'est pas valide. Message réel : "La conversion de la chaîne "C:chemin\test2." en type 'Integer' n'est pas valide.

    Comme je suis débutante et que je passe mon temps sur le MSDN de Microsoft qui m'embrouille des fois plus qu'autre chose si vous pouviez me guider sur le code à modifier pour que cela fonctionne.

    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Imports Microsoft.Office.Interop.Outlook
    Imports Microsoft.Office.Interop
    Imports System.Runtime.InteropServices
    ----
     
     ' créer une session 
            Dim oApp As Outlook._Application
            oApp = New Outlook.Application()
     
            ' création du mail 
            Dim oMsg As Outlook._MailItem
            oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
            oMsg.Subject = "sujet"
            oMsg.Body = "blablabody" & vbCr & vbCr
     
            oMsg.To = "test@test.com"
     
            ' ajout de la pj 
            Dim sSource As VariantType = recoit_pj.Text
            Dim sDisplayName As String = ajout_pj.SafeFileName
            Dim oAttachs As Outlook.Attachments = oMsg.Attachments
            Dim oAttach As Outlook.Attachment
            oAttach = oAttachs.Add(sSource, , ,sDisplayName)
     
            ' Envoi du mail 
            oMsg.Send()
     
            ' suppression 
            oApp = Nothing
            oMsg = Nothing
            oAttach = Nothing
            oAttachs = Nothing
    Pour info, pour aller chercher un fichier à joindre au mail, j'utilise dans mon Windows form un openfiledialog dont voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub Chercher_pj_Click(sender As Object, e As EventArgs) Handles Chercher_pj.Click
            ajout_pj.Title = "Choisissez un fichier"
            ajout_pj.InitialDirectory = "C:\Users\"
            ajout_pj.ShowDialog()
            recoit_pj.Text = ajout_pj.FileName
     
        End Sub

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    D'après Msdn, le second paramètre n'est pas une String mais un Long qui correspond au type d'attachement. Ceci explique cela.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2016
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Bonjour ,

    Merci de ta réponse mais en faite les 2ème, 3ème et 4ème paramètre de cette méthode sont optionnels. Du coup, je n'utilise que le 1er et 4ème paramètre. Mais en te disant ça, j'ai une lumière , ne faut-il pas mettre des virgules dans la parenthèse à la place des 2ème et 3ème paramètres ?
    Je vais essayer...

    Bon après l'essai ça bug toujours. Je ne m'en sors pas du tout avec cet envoi de mail. Je n'ai presque plus de cheveux

    Citation Envoyé par ebastien Voir le message
    Bonjour,
    D'après Msdn, le second paramètre n'est pas une String mais un Long qui correspond au type d'attachement. Ceci explique cela.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    regarde ça c'est du vba mais ça s'adapte sens problème!

    http://www.developpez.net/forums/d14...t/#post7968025

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2016
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Bonjour Rdurupt !

    J'ai essayé, du coup mon code est modifié pour l'adapter à VB :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
            ' Création d'une session outlook
            Dim oApp As Outlook._Application
            oApp = New Outlook.Application()
     
            ' Création d'une message
            Dim oMsg As Outlook._MailItem
            oMsg = oApp.CreateItem(Outlook.OlItemType.olMailItem)
            Dim body As String
            Dim subject As String
            Dim destinataire As String
            Dim I As Integer
            sSource As VariantType
            sSource = recoit_pj.Text
     
            body = "body"
            subject = "sujet"
            destinataire = "test@test.com"
            oMsg.Subject = subject
            oMsg.Body = body
            oMsg.To = destinataire
     
     
            If Not IsMissing(sSource) Then
     
                If TypeName(sSource) = "String" Then
     
                    ' S'il y a des pièces jointes
                    oMsg.Attachments.Add(sSource)
     
                Else
     
                    For I = 0 To UBound(sSource) - 1
                        sSource.Attachments.Add(sSource)(I)
     
                    Next
     
                End If
     
            End If
     
            ' envoi du message
            oMsg.Send()
     
            ' on efface 
            oApp = Nothing
            oMsg = Nothing
    Mais j'ai 4 erreurs maintenant :

    - Method arguments must be enclosed in parentheses. --> pour sSource As VariantType
    - Expression is not a method --> pour sSource.Attachments.Add(sSource)(I)
    - Expression expected. --> pour sSource As VariantType
    - Expression is a value and therefore cannot be the target of an assignment --> pour sSource = recoit_pj.Text

    Si vraiment quelqu'un peut m'aider à m'en sortir avec ce truc !!

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Pour répondre à ton message, lorsqu'une méthode comporte 3 paramètres optionnels par exemple, tu ne peux pas renseigner uniquement le dernier et te passer des autres. Tu dois obligatoirement dans ce cas renseigner les paramètres précédents avec une valeur par défaut (chaine vide, null, 0, default(...) etc...).
    Concernant le code que tu as reposté, je n'ai pas regardé en détail mais je vois que tu affectes à sSource une String puis tente de faire sSource.Attachments.Add(...) ? Je ne comprends pas bien...

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2016
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    je t'avoue que moi non plus je ne comprends plus rien en faite, j'ai essayé moulte choses.

    Merci pour ta réponse, je vais essayer en déclarant les param optionnels alors..

    Bon en testant en ajoutant les params, j'obtiens le même type d'erreur pour laquelle je vous ai solicité plus haut.
    J'obtiens cette erreur sur Dim sSource As VariantType = recoit_pj.Text

    Citation Envoyé par ebastien Voir le message
    Pour répondre à ton message, lorsqu'une méthode comporte 3 paramètres optionnels par exemple, tu ne peux pas renseigner uniquement le dernier et te passer des autres. Tu dois obligatoirement dans ce cas renseigner les paramètres précédents avec une valeur par défaut (chaine vide, null, 0, default(...) etc...).
    Concernant le code que tu as reposté, je n'ai pas regardé en détail mais je vois que tu affectes à sSource une String puis tente de faire sSource.Attachments.Add(...) ? Je ne comprends pas bien...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tu nous à fais du vba à la sauce .net UBound(sSource) Vb.net Connait pas!

    si tu supprime la librairie vb de ton projet, ton programme explose!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim sSource() As String = New String(recoit_pj.Text + ";").Split(";")
     
                    For I as integer  = 1 To sSource.Len - 1
                       If sSource(I).Trim <> "" Then oMsg.Attachments.Add (sSource(I))
     
                    Next
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim oApp As Outlook._Application= New Outlook.Application() ' Création d'une session outlook
    Dim oMsg As Outlook._MailItem = oApp.CreateItem(Outlook.OlItemType.olMailItem) ' Création d'un message
    oMsg.subject = "sujet"
    oMsg.body = "body"
    oMsg.To = "test@test.com"
    Dim sSource() As String = New String(recoit_pj.Text + ";").Split(";")
    For I as integer  = 1 To sSource.Len - 1
        If sSource(I).Trim <> "" Then oMsg.Attachments.Add (sSource(I))
    Next
    oMsg.Send() ' envoi du message
    oApp = Nothing ' on efface  Outlook
    oMsg = Nothing ' on efface message
    Dernière modification par Invité ; 10/03/2016 à 14h15.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2016
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Merci beaucoup, il y a juste une coquille ce n'est pas "Len" mais "Length"

    J'ai une question, je ne comprends pas la condition "For I.. " pourquoi le I ? je ne comprends pas cette partie en faite.

    Le mail part c'est cool ça avance mais sans pj, je cherche

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim sSource() As String = New String(recoit_pj.Text + ";").Split(";")
    ici je force la String(recoit_pj.Text + ";").Split(";") à être un tableau! donc je concordataire un tableau que tu n'ais qu'une valeur ou 10 000!

    Code je déclar I dans la boucle for : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For I as integer  = 0 To sSource.Length- 1 'Merci ceci dit tu as raison il doit commencer à 0
        If sSource(I).Trim <> "" Then oMsg.Attachments.Add (sSource(I)) 'I Index du tableau
    Next

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2016
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    perfect ! super merci vraiment , je vais pouvoir retrouver mes cheveux !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/09/2012, 18h08
  2. Recherche tuto pour envoyer une notification en info bull a un membre
    Par goku19 dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 18/03/2012, 23h10
  3. [Mail] Gros soucis pour envoyer une newsletter en HTML
    Par Marmotton76 dans le forum Langage
    Réponses: 4
    Dernier message: 02/09/2011, 19h16
  4. Problème pour envoyer une pj par mail
    Par bobic dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 15/04/2008, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo