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

Web & réseau Delphi Discussion :

Envoyer un mail effectivement avec Delphi 7


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Par défaut Envoyer un mail effectivement avec Delphi 7
    Bonjour à tous,

    Bien, je suppose que l'on vous a posé de nombreuses fois la question et je ne sais pas si je suis au bon endroit, mais il faut bien se lancer.

    Voilà mon blème :

    J'ai réalisé une application qui nécessite l'envoi de mails. J'ai juste besoin d'adresser de simples mails sans pièce jointe.
    Je me suis donc lancé dans un ShellExecute.

    Mon idée est d'utiliser ThunderBird et je sais que la solution existe depuis pas mal de temps.
    Mais les solutions que j'ai trouvées fonctionnent bien sauf que ça ouvre la fenêtre de saisie d'envoi d'un mail, rempli sous ThunderBird, et rien d'autre ne se produit.
    Mes paramètres d'envoi sont tous présents mais l'envoi ne se produit pas.

    Voici ma procédure :

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      fichier     : string;
      parametres  : string;
      adresse     : string;
      sujet       : string;
      msg         : string;
      info : PAnsiChar;
    begin
      sujet := 'Envoi de commande';
      msg := 'Test Envoi de commande.';
      adresse := 'monadressemail';
      parametres := 'mailto:' + adresse +'?subject=' + sujet + '&body=' + msg;
      ShellExecute(Handle,'open', Pchar(parametres), nil, nil, SW_SHOWDEFAULT);
    end;
    Or moi ce que je veux c'est que mon programme l'adresse effectivement.
    Il me faudrait donc juste envoyer au handle de la fenêtre ThunderBird une simple combinaison de touches "CTRL+ENTER" pour valider l'envoi.

    Quelqu'un a-t-il une solution ?

    Merci par avance.

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par ARAKIS_2 Voir le message
    Bien, je suppose que l'on vous a posé de nombreuses fois la question et je ne sais pas si je suis au bon endroit, mais il faut bien se lancer.
    Quant à moi, je constate que vous depuis 2007, vous n'avez pas assimilé les règles d'utilisation des forums : pas de balise [ CODE ] [ /CODE ] pour le code présenté, pas de lecture de la , pas de

    Donc reprenez cette question de la FAQ : http://delphi.developpez.com/faq/?pa...ail-par-defaut

    Etudiez les paramètres de la fonction MapiSendMail en consultant l'unité mapi.pas ou en consultant le site de Microsoft : https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
    Vous verrez qu'en adaptant le code fourni dans la FAQ (suppression du paramètre MAPI_DIALOG), vous obtiendrez une solution opérationnelle à votre problème !

    Et si vous avez une version de Delphi XE2 ou ultérieure, vous devrez modifier le type de certains paramètres de String vers AnsiString et PChar vers PAnsiChar.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 604
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par Ph. B. Voir le message
    Quant à moi, je constate que vous depuis 2007, vous n'avez pas assimilé les règles d'utilisation des forums : pas de balise [ CODE ] [ /CODE ]
    et j'en rajoute une couche , quoique j'ai modifié le message pour les Quotes

    Et si vous avez une version de Delphi XE2 ou ultérieure, vous devrez modifier le type de certains paramètres de String vers AnsiString et PChar vers PAnsiChar.
    il était indiqué D7 mais c'est, je pense, à partir de D2009 qu'il faut opérer ces changements

  4. #4
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Par défaut Envoi de mail
    Bonjour,

    Ok les gars -> reçu fort et clair. Je vous en remercie.

    Cela fait un petit moment que je suis, effectivement, inscrit sur "Developpez.com"
    mais je passe très rarement. Du moins pas comme vous l'entendez.
    Je suis plutôt un lecteur des nouveautés et en tant que vieux crabe
    accordez moi au moins un peu de sénilité.

    Je vais éplucher les liens que vous m'avez indiqués.

    Merci encore.

    Cordialement,
    P.S : Comme je reste fidèle à Borland, j'ai Delphi 7. Je sais ce n'est pas sérieux mais je n'ai pas les moyens non plus. Ceci explique cela.

  5. #5
    Membre actif
    Homme Profil pro
    Autodidacte
    Inscrit en
    Septembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Septembre 2007
    Messages : 23
    Par défaut Envoi de mail
    Me revoilou les gars,

    Au fait, j'ai trouvé une petite erreur de frappe pour la fonction décrite dans la page
    que présente ce lien : http://delphi.developpez.com/faq/?pa...ail-par-defaut.
    Sans compter qu'il n'est mentionné nul part qu'il faut utiliser l'unité Mapi pour que cette fonction soit opérationnelle.
    Mais je suppose que c'était pour m'inciter à chercher. Vous voyez je l'ai fait.
    Voici le programme intitulé "Comment envoyer un e-mail avec le client mail par défaut ?" et l'erreur juste après :

    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
    function SendMail(const Subject, MessageText, MailFromName, MailFromAddress, MailToName,
    MailToAddress: String; const attachments:   array of String; WinHandle: THandle = 0): boolean;  
    
    var  
      MAPIError: DWord;  
      MapiMessage: TMapiMessage;  
      Originator, Recipient: TMapiRecipDesc;  
      Files, FilesTmp: PMapiFileDesc;  
      FilesCount: Integer;  
    begin  
      FillChar(MapiMessage, Sizeof(TMapiMessage), 0);  
      MapiMessage.lpszSubject := PChar(Subject);  
      MapiMessage.lpszNoteText := PChar(MessageText);  
      FillChar(Originator, Sizeof(TMapiRecipDesc), 0);  
      Originator.lpszName := PChar(MailFromName);  
      Originator.lpszAddress := PChar(MailFromAddress);  
      MapiMessage.lpOriginator := @Originator;  
      MapiMessage.nRecipCount := 1;  
      FillChar(Recipient, Sizeof(TMapiRecipDesc), 0);  
      Recipient.ulRecipClass := MAPI_TO;  
      Recipient.lpszName := PChar(MailToName);  
      Recipient.lpszAddress := PChar(MailToAddress);  
      MapiMessage.lpRecips := @Recipient;  
      MapiMessage.nFileCount := High(attachments) - Low(attachments) + 1;  
      Files := AllocMem(SizeOf(TMapiFileDesc) * MapiMessage.nFileCount);  
      MapiMessage.lpFiles := Files;  
      FilesTmp := Files;  
      for FilesCount := Low(attachments) to High(attachments) do  
      begin  
        FilesTmp.nPosition := $FFFFFFFF;  
        FilesTmp.lpszPathName := PChar(attchments[FilesCount]);  
        Inc(FilesTmp)  
      end;  
      try  
        MAPIError := MapiSendMail(0, 0,  
          MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);  
        result:= MAPIError = 0;  
      finally  
        FreeMem(Files)  
      end  
    end;
    En effet, pour que ça fonctionne il faut lire (ligne en rouge) - il manque le "a" de attachments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        FilesTmp.lpszPathName := PChar(attachments[FilesCount]);
    Le blème c'est que c'est rigoureusement identique à Thunderbird : je me retrouve avec une fenêtre ouverte.
    Mais je n'ai pas encore étudié le petit programme juste au-dessus : Comment envoyer et/ou recevoir des e-mails ?
    Si je trouve, je vous promet de venir mettre ma solution.

    A plus les gars.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 604
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    tu n'as qu'à utiliser la fonction d'envoi de mail de la bibliothèque Indy (si je me souviens bien elle est fournie avec D7)
    ainsi tu ne verras pas le logiciel de messagerie.

    Des exemples d'envoi de mail avec INDY se trouvent facilement soit dans ce forum, soit dans la doc fournie avec D7, soit sur Google, je suis trop mode vacances pour mettre un exemple de code , très proche de celui fait avec MAPI d'ailleurs

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

Discussions similaires

  1. [Bouncy castle] Envoyer un mail chiffré avec piece jointe
    Par finalevirus dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 27/04/2013, 23h34
  2. Réponses: 1
    Dernier message: 19/11/2009, 09h30
  3. Comment envoyer un mail HTML avec Tinymce
    Par sws2008 dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2008, 18h23
  4. [Mail] Envoyer des mails simplement avec PHP
    Par mailou dans le forum Langage
    Réponses: 4
    Dernier message: 29/01/2006, 17h21

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