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

Delphi Discussion :

Envoyer un mail avec Indy


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut Envoyer un mail avec Indy
    Bonjour

    J'ai un programme installé sur plusieurs machines avec un bouton permettant de m'envoyer un mail pour une demande de renseignements.
    Je connais évidemment l'adresse du destinataire puisque c'est moi, mais non les coordonnées de l'expéditeur.

    Or le composant TIdSMTP requiert ces données.

    Comment doi-je procéder ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Yop !
    Un jour j'ai trouvé ce qui suit qqpart, peut-être ici... :
    --
    jp
    - - - -
    Pour assigner les valeur par défaut pour l'expédition de mail, il suffit de récupérer les valeurs du client mail par défaut de l'utilisateur.

    Les exemples d'utilisation de ces informations sont donnés avec les composants Indy, mais elles peuvent être utilisées sur tous les types de composant POP et SMTP.


    Pour récupérer les information d'Outlook ( le client mail le plus utilisé )
    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
     
    procedure TMain.RetrieveIdMailFromOutlook;
    var
      Registry: TRegistry;
    begin
      Registry := TRegistry.Create;
      try
        Registry.RootKey := HKEY_CURRENT_USER;
        if Registry.OpenKeyReadOnly('Software\microsoft\internet account manager\Accounts\00000001') then
          begin
            edtHost.Text := Registry.ReadString('SMTP Server');
            IdSMTP.Host := edtHost.Text;
            IdMessage.Sender.Address := Registry.ReadString('SMTP EMail Address');
            IdMessage.Sender.Name := Registry.ReadString('SMTP Display Name');
            { Assignation des champs From afin de les faire correspondre avec l'envoyeur }
            IdMessage.From.Assign(IdMessage.Sender);
          end else
            raise exception.Create('Don''t match outlook data !');
      finally
        Registry.Free;
      end;
    end;
    Pour récupérer les information d'Eudora.
    Eudora stocke seulement quelques infos dans la base de registre, le chemin d'accès à ses fichiers de configuration qui sont sous forme de fichier TIni...
    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
    procedure TMain.RetrieveIdMailFromEudora;
    var
      IniPath: string;
      Registry: TRegistry;
      IniEudora: TIniFile;
    begin
      Registry := TRegistry.Create;
      try
        Registry.RootKey := HKEY_CURRENT_USER;
        if Registry.OpenKeyReadOnly('Software\Qualcomm\Eudora\CommandLine') then
          begin
            IniPath := Registry.ReadString('Current');
            { Récupération du Chemin/Nom du fichier de configuration pour l'utilisateur }
            { de l'ordinateur (loggé) qui est le dernier dans la chaîne }
            while pos(' ',IniPath) <> 0 do 
              delete(IniPath,1,pos(' ',IniPath));
            IniEudora := TIniFile.Create(IniPath);
            edtHost.Text := IniEudora.ReadString('Settings','SMTPServer','');
            IdSMTP.Host := edtHost.Text;
            IdMessage.Sender.Address := IniEudora.ReadString('Settings','ReturnAddress','');
            IdMessage.Sender.Name := IniEudora.ReadString('Settings','RealName','');
            { Assignation des champs From afin de les faire correspondre avec l'envoyeur }
            IdMessage.From.Assign(IdMessage.Sender);
          end;
      finally
        FreeAndNil(Registry);
        FreeAndNil(IniEudora);
      end;
    end;

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    N'est-il pas possible de passer par la messagerie par défaut de l'expéditeur ?

  4. #4
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut Mail et caractères accentués
    Bonjour

    Je constate que quand j'envoie des mails en utilisant la messagerie par défaut avec l'instruction ShellExecute(Handle,'open',PChar(Email),nil,nil,SW_SHOW), le mail arrive sans caractères spéciaux.
    Je n'arrive pas à trouver les valeurs que je dois appliquer à ces caractères (àéèëöüùç...) pour une conversion qui les rendrait visible.
    A noter que les balises du genre &eacute n'y changent rien.

    Merci d'avance à tout qui aurait la solution

  5. #5
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Ton mail est au format HTML ou texte brut ?
    En fait, je doute que Delphi soit à l'origine de ce problème puisqu'il ne fait qu'exécuter le programme de messagerie...
    Tu peux toujours essayer avec ces exemples trouvés avec Google :

    Citation Envoyé par • delphipage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Var email,destinataire,sujet,messge:String;
    begin 
    destinataire:='monemail@monemail.fr';
    sujet:='Mon titre';
    messge:='Mon message';
    email:='mailto:'+destinataire+'?subject='+sujet+'&body='+messge; 
    ShellExecute (Handle,'open',PChar(email),nil,nil,SW_SHOW); 
    end;
    Citation Envoyé par • micropic.free.fr
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Uses WinTypes, ShellAPI;
     
    begin
      ShellExecute( 0, Nil, PChar('mailto:offset@multimania.com'),Nil, Nil, SW_NORMAL );
    end;
    Un autre lien, mais avec VB : http://vb-helper.com/howto_shell_mail.html

    [EDIT]-> Sujets fusionnés

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    J'ai remplacé le Handle de Shellexecute par 0 et le premier caractère accentué d'une chaine ne passe toujours pas alors que les suivant bien ???

    Quant à mon message d'origine sur l'envoi d'un mail avec les composants indy sans connaître le nom et le mot de passe de l'expéditeur, je ne vois toujours pas de solution.

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Citation Envoyé par defluc
    J'ai remplacé le Handle de Shellexecute par 0 et le premier caractère accentué d'une chaine ne passe toujours pas alors que les suivant bien ???
    Je ne pense pas que cela à quoi que ce soit à voir avec Delphi, mais plutôt en rapport avec le format de ton mail, son encodage. A propos, tu n'as pas répondu à ma question : Format HTML ou texte brut ?

    Citation Envoyé par defluc
    Quant à mon message d'origine sur l'envoi d'un mail avec les composants indy sans connaître le nom et le mot de passe de l'expéditeur, je ne vois toujours pas de solution.
    Je ne pense pas qu'il soit possible (pour des raisons évidentes de sécurité et de confidentialité) de récupérer l'adresse mail du client sans son intervention. En tous les cas, je n'aimerai pas qu'un programme puisse récupérer mon adresse mail sans rien me demander (ou alors possible que je n'ai pas bien saisi ton objectif, je ne suis pas assez renseigné sur le sujet). En tous les cas, imagine que cela soit possible, la porte ouverte aux spams... Les anti-virus bloqueront probablement cette fonctionalité, du moins j'espère.

    Alors récupérer le mot de passe du compte, n'y pense même pas !

  8. #8
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Je comprends ces arguments.
    Mais la commande Shellexecute(0,'open',PChar(Email),nil,nil,SW_SHOW) ouvre bien la messagerie par défaut de la machine qui exécute le programme.
    Alors, ma question est simplement de savoir comment faire de même avec un composant qui permettrait à l'utilisateur de mon programme de m'envoyer une demande de renseignements que j'aurais préformatée avec un message par défaut.

Discussions similaires

  1. [Indy] Envoyer un mail avec Delphi
    Par Hmalik dans le forum Composants VCL
    Réponses: 1
    Dernier message: 13/03/2011, 17h18
  2. envoyer un mail avec mon programme
    Par shrek dans le forum C++Builder
    Réponses: 8
    Dernier message: 06/12/2006, 12h27
  3. Comment envoyer un mail avec la commande mail
    Par pi3141563 dans le forum Réseau
    Réponses: 5
    Dernier message: 21/10/2004, 13h34
  4. Envoyer un mail avec mailto de haute importance
    Par VirginieGE dans le forum ASP
    Réponses: 3
    Dernier message: 13/08/2004, 13h41
  5. Envoyer un mailling avec Indy
    Par bidochon dans le forum Web & réseau
    Réponses: 5
    Dernier message: 03/08/2004, 19h29

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