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 :

Envoi de mail via Outlook


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Envoi de mail via Outlook
    Bonjour

    Je développe une petite application en visual basic 2005.
    J'essaie d'envoyer un email via Outlook
    J'utilise ce bout de code

    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
     
    Public Sub SendEmailtoContacts(ByVal AdresseMail As String)
        Dim subjectEmail As String = "Sujetdumail"
        Dim bodyEmail As String = "Corpsdumessage"
        CreateEmailItem(subjectEmail, AdresseMail, bodyEmail)
    End Sub
     
    Private Sub CreateEmailItem(ByVal subjectEmail As String, _
        ByVal toEmail As String, ByVal bodyEmail As String)
        Dim Outlook As Microsoft.Office.Interop.Outlook.Application
     
        Outlook = New Microsoft.Office.Interop.Outlook.Application
        Dim eMail As Microsoft.Office.Interop.Outlook.MailItem = _
                Outlook.CreateItem(Outlook.OlItemType.olMailItem)
        With eMail
            .Subject = subjectEmail
            .To = toEmail
            .Body = bodyEmail
            .Importance = Outlook.OlImportance.olImportanceLow
            .Send()
        End With
     
    End Sub

    J'obtiens le message d'erreur suivant :
    Impossible de créer le composant ActiveX.
    Quelqu'un aurait-il une idée ?

    Merci d'avance

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    A priori tu utilise un composant ActiveX pour ton automation OUtlook (pas trop conseillé en .net). Il faut necessairement que tu utilises Outlook? parce que les fonctions de mails sont incluses dans le framework 2

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour emap

    En fait je découvre visualbasic2005.
    Je ne souhaite pas forcement utiliser un composant activeX.
    Je voulais simplement utiliser outlook pour envoyer un email.
    Quelle l'autre facon de procéder?

    Deuxiemement, je ne souhaite pas forcement utiliser outlook. Si il y a un moyen de créer un email en récuperant l'appli de messagerie par défault je suis preneur.

    En plus je me suis aperçu en installant mon appli sur un autre poste qui utilise office2003 (moi j'ai 2007) que l'install était impossible car il ne trouvait pas l'assembly office outlook 12 !!.
    Comment peut-on utiliser une référence sans bloquer sur les versions ?

    Merci d'avance

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    regarde du coté de l'espace de noms System.Net.Mail (assembly System dans system.dll). Tu devrais deja trouver ton bonheur.
    Le pb c'est que c'est pas de l'automation, donc aucune traces dans Outlook. Par contre si tu as un serveur de messagerie Excchange, la y a mmoyen de faire des trucs pas mal, du coté de outlook je connais pas.

  5. #5
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci Aspic

    Mais je préferais une solution ou il ne faut saisir de serveur smtp.
    Car je souhaite pouvoir diffuser mon appli autour de moi sans pour autant la configurer avec mon smtp (loggin et pwd).
    Merci quand meme

    Peut-on utiliser les api windows ou faut-il utiliser outlook.
    En fait je voudrais avoir la meme action que lorsqu'on clique dans internet explorer sur un email : cela ouvre la messagerie par défault et crée un nouveau mail.

    MErci

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    pour utiliser le client mail par défaut, il suffit d'exécuter cette URL avec ShellExecute:
    mailto:destinataire@domaine.com?subject=le_sujet&body=le_corps_du_message

    Par contre ca n'enverra pas le mail automatiquement, il faudra que l'utilisateur clique sur envoyer...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci Tomlev

    C'est ce que je voulais. Le probleme est que j'ai un message d'erreur lorsque j'utilise Shellexecute :

    Un appel à la fonction PInvoke 'Traducteur MonAppli!Appli.Module::ShellExecute' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.
    Quelqu'un sait-il ce que veut dire ce message car je ne le comprends pas du tout !
    Merci d'avance

  9. #9
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Tu utiliserais pas une API ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    oui l'aPI Shellexecute pourquoi ?

  11. #11
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par mooneck Voir le message
    oui l'aPI Shellexecute pourquoi ?
    Donne moi la déclaration de ton API, je parie qu'il y a une erreur dedans

  12. #12
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Donne moi la déclaration de ton API, je parie qu'il y a une erreur dedans
    Je parie sur du Long <-> Integer, tu suis ?

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    voici la déclaration de l'API que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal HWND As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
        Private Const SW_NORMAL As Long = 1
    et voici l'appel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CodeRet = ShellExecute(CLng(My.Forms.Form1.Handle), CStr("open"), CStr("mailto:" & MailTo), CStr(""), CStr(""), SW_NORMAL)

  14. #14
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Je parie sur du Long <-> Integer, tu suis ?
    Mdr, tu lis dans mes pensée !

    Et oui dans el mille

    Voila la déclaration à faire pour ton API :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal HWND As Integer, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Integer) As Integer
        Private Const SW_NORMAL As Integer= 1
    Il faut remplacer les Long par des Integer car en VB6 un Long était un entier 32 Bits et en VB.NET c'est un entier 64 bits donc ===> la pile est déséquilibrée (j'espère que j'ai pas dit de betises )

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    C'était bien ça
    merci beaucoup

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

Discussions similaires

  1. [VS 2005] Envoi de mail via outlook
    Par HULK dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/03/2009, 00h16
  2. Réponses: 1
    Dernier message: 12/12/2007, 23h54
  3. Envoi de mail via outlook Express
    Par skillipo dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/12/2007, 21h22
  4. [VBA] Envoie de mail via outlook
    Par sperchey dans le forum Access
    Réponses: 7
    Dernier message: 21/02/2007, 16h35
  5. Envoi de mail via Outlook
    Par Chromatic dans le forum Access
    Réponses: 8
    Dernier message: 14/02/2006, 11h30

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