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 :

Qui me donne un exemple clair d'envoi de mail ?


Sujet :

Delphi

  1. #1
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut Qui me donne un exemple clair d'envoi de mail ?
    Attention, envoi direct et transparent pour l'utilisateur !
    Qui fonctionne avec Outlook ? Ou autre (gmail par ex. j'y ai un compte), je suis preneur !
    Je trébuche sur cette option d'envoi de mail automatique depuis D7, y'a rien à faire, j'ai écumé tous les exemples de la FAQ, du web, etc... NADA !
    Un exemple de code qui marche, avec des valeurs, pas des "étoiles" dans les champs host par exemple (comment on récupère le host d'un Outlook 2003 par exemple ?) déjà rien que ça...
    J'ai vraiment tout essayé, c'est le merdier total cette histoire (avec Indy, sans Indy (OLE)...).
    Le mieux que j'obtiens, c'est un envoi via objet OLE Outlook, mais il y a une demande de confirmation de connexion qui fait tout capoter hélas... (avec demande d'un temps de confirmation (de 1 à 10 minutes...).

    Merci à qui m'aidera.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par peter27x Voir le message
    Attention, envoi direct et transparent pour l'utilisateur !
    Qui fonctionne avec Outlook ? Ou autre (gmail par ex. j'y ai un compte), je suis preneur !
    Je trébuche sur cette option d'envoi de mail automatique depuis D7, y'a rien à faire, j'ai écumé tous les exemples de la FAQ, du web, etc... NADA !
    Un exemple de code qui marche, avec des valeurs, pas des "étoiles" dans les champs host par exemple (comment on récupère le host d'un Outlook 2003 par exemple ?) déjà rien que ça...
    J'ai vraiment tout essayé, c'est le merdier total cette histoire (avec Indy, sans Indy (OLE)...).
    Le mieux que j'obtiens, c'est un envoi via objet OLE Outlook, mais il y a une demande de confirmation de connexion qui fait tout capoter hélas... (avec demande d'un temps de confirmation (de 1 à 10 minutes...).

    Merci à qui m'aidera.
    il est très simple d'envoyer un email avec Delphi...à partir du moment ou tu as un serveur SMTP.

    il est plus compliqué de retrouver le serveur SMTP de l'utilisateur, car il peut être configuré n'importe où dans n'importe quel logiciel, et il peux réclamer une authentification.

    il reste des possibilités

    1) déterminer par une requête DNS le mailhost du destinataire afin d'envoyer le mail directement au serveur destinataire. Sauf que la pluspart des serveurs refusent ce genre de connexion directe.

    2) utiliser un serveur SMTP public...qui sont généralement refusés par les serveurs de messagerie car ils sont vecteur de spam

    3) posséder son propre serveur SMTP correctement déclaré (notamment avec un reverse DNS vers une adresse MX) qui se chargera d'envoyer le mail...par contre il est possible que le poste client n'ai pas l'autorisation d'utiliser SMTP

    4) envoyer en HTTP le mail vers un serveur Web qui fera l'envoie de mail en SMTP

    5) configurer l'application Delphi avec le nom du serveur SMTP du client...tient c'est pas bête ça
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Mon cher Paul, pour ton "5) ... tiens pas bête", les exemples de la FAQ avec envoi via messagerie par défaut ne fonctionnent pas chez moi, par contre voilà mon bout de code qui fonctionne (avec Outlook, mais on peut imposer aux pc clients d'avoir Outlook, donc pas un pb en soi)) sauf qu'il y a le message de confirmation d'Outlook :

    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
    48
    49
    50
    51
     
    procedure TForm1.SendOutlookMail;
    const
      olMailItem = 0;
    var
      Outlook: OleVariant;
      vMailItem: variant;
      i: integer;
      email,emails : string;
    begin
     
      if editEMail.Text = '' then
      begin
        ShowMessage('Pas d''emails !');
        exit;
      end;
     
      try
        Outlook := GetActiveOleObject('Outlook.Application');
      except
        Outlook := CreateOleObject('Outlook.Application');
      end;
      vMailItem := Outlook.CreateItem(olMailItem);
     
      // emails destinataires
      emails := editEMail.Text;
      i := pos(',',eMails);
      while i > 0 do
      begin
        email := leftStr(emails,i-1);
        vMailItem.Recipients.Add(email);
        // on garde que la partie non traitée pour la suite
        emails := rightStr(emails, length(emails) - i);
        // recherche séparateur suivant
        i := pos(',',eMails);
      end;
      // ajout dernier email (ou premier si un seul saisi)
      vMailItem.Recipients.Add(emails);
     
      // objet du mail
      vMailItem.Subject := EditObjet.Text;
     
      // message du mail
      vMailItem.Body := EditMessage.Text;
     
      vMailItem.Attachments.Add('C:\image.jpg');
     
      vMailItem.Send;
     
      VarClear(Outlook);
    end;
    Les exemples avec Indy, je ne trouve pas le bon "host" à leur fournir, j'ai essayé localhost en désespoir de cause, je récupère des erreurs socket 10061 tout au mieux...

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par peter27x Voir le message
    Les exemples avec Indy, je ne trouve pas le bon "host" à leur fournir, j'ai essayé localhost en désespoir de cause, je récupère des erreurs socket 10061 tout au mieux...
    Le Host dans Indy cela correspond à l'adresse Email de l'expéditeur

    Dans ma signature, j'ai fait des unités d'exemple avec indy dont tu peux t'inspirer (Attention ca en fonctionnera pas avec D7 vu que j'ai fait pour D2005 et +)
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    J'ai aussi testé ça, je dis à la fin ce qui merdoie :

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
      //Enumération qui décrit le niveau de priorité du mail
      enumImportance=(Bas=olImportanceLow,Normal=olImportanceNormal,Haut=olImportanceHigh);
     
      //Structure qui décrit entièrement le mail à envoyer
      TEmail = record
        dDateRecept   : TDateTime;
        dDateCreation : TDateTime;
        sSenderName   : String;
        sSenderMail   : String;
        sCC           : String;
        sDestinataires : String;
        sSujet        : String;
        sContenu      : String;
        iPriorite     : enumImportance;
        iSize         : integer;  // en octet
        iNbPiecesJointes      : integer;
        tCheminPiecesJointes  : array of string;
      end;
     
    (...)
     
    function TForm1.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(attachments[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;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMail('sujet', 'texte', 'Alain Laffite', 'a.laffite@copmania.fr',
      'Sophie Caran', 's.caran@copmania.fr', []);
    end;
    Deux problèmes ici :

    1 - ça affiche l'écran d'envoi de mail de Outlook, certes rempli, mais c'est pas direct et transparent.
    2 - les mails ne sont jamais envoyés, je reçois un retour indiquant que les destinataires n'ont pu être atteints (pourtant noms et adresses sont bons...).

    Bref, comme dit la chanson, je tourne en rond, je tourne en rond...

  6. #6
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Le Host dans Indy cela correspond à l'adresse Email de l'expéditeur
    Tu crois ? Pas sûr, car dans l'exemple Indy, y'a un champ pour les deux, c'est bien distinct, voici le code que tu reconnaitras peut être :

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient,
      IdSMTP, IdBaseComponent, IdMessage, StdCtrls, Mask, ComCtrls;
    
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        GroupBox1: TGroupBox;
        Edit3: TEdit;
        MaskEdit1: TMaskEdit;
        Label3: TLabel;
        Edit4: TEdit;
        Memo1: TMemo;
        Edit5: TEdit;
        Label4: TLabel;
        Label5: TLabel;
        Button1: TButton;
        Button2: TButton;
        IdMessage1: TIdMessage;
        IdSMTP1: TIdSMTP;
        StatusBar1: TStatusBar;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
     application.Terminate;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with IdMessage1 do
      begin
      IdMessage1.Body.Assign(Memo1.Lines);
      IdMessage1.From.Text := Edit1.Text;
      IdMessage1.Recipients.EMailAddresses := Edit2.Text;
      IdMessage1.Subject := Edit5.Text;
      IdSMTP1.AuthenticationType := atLogin;
      IdSMTP1.Username :=  Edit3.Text;
      IdSMTP1.Password := MaskEdit1.Text;
      end;
      IdSMTP1.Host :=  Edit4.Text;
      IdSMTP1.Port := 25;
    
      StatusBar1.Panels[0].Text := 'Connection au serveur ...';
       IdSMTP1.Connect;
       try
        IdSMTP1.Send(IdMessage1);
       finally
        IdSMTP1.Disconnect;
       end;
      StatusBar1.Panels[0].Text := 'Message envoyé !';
    end;
    
    end.

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par peter27x Voir le message
    Tu crois ? Pas sûr, car dans l'exemple Indy, y'a un champ pour les deux, c'est bien distinct, voici le code que tu reconnaitras peut être :
    Pardon, le Host correspond à l'adresse SMTP de l'expéditeur
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Pardon, le Host correspond à l'adresse SMTP de l'expéditeur
    Ben oui je sais mais apparemment avec Outlook 2003 pas évident de la trouver.
    Si quelqu'un sait...
    J'ai aussi essayé avec le smtp de gmail avec cet exemple Indy, mais j'ai un message comme quoi il faut d'abord faire un startTLS... J'ai tenté un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IdSMTP1.SendCmd('STARTTLS', 220);
    trouvé sur le web comme solution au pb, juste après le "connect", mais hop erreur 10060 délai dépassé...
    Bref j'y suis toujours pas et je désespère...

  9. #9
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Pour info, par rapports aux écrans de ce lien : http://www.authsmtp.com/outlook-2003/default-port.html

    Ici sur mon Outlook 2003, je n'ai pas du tout la même chose pour l'écran "Email Accounts", j'ai juste une ligne avec "Serveur Microsoft Exchange"... je n'ai pas d'utilisateur à proprement parler, il y a une ligne "remette le courrier à" suivi de mon nom.
    Du coup où trouver le smtp ??? vous voyez le pb ?
    Car dans un cas normal comme dans le lien ce dessus, on arrive ensuite à un écran donnant le smtp, le pop3 (en cliquant sur le bouton "change", moi ici rien ! Juste le nom de domaine d'un serveur... C'est là misère...

  10. #10
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    En fait tu n'as peux être tout simplement pas de messagerie internet...

    Une messagerie Exchange ce n'est pas une messagerie internet. Tu as un serveur exchange au lieu d'un serveur SMTP pour l'envoie et un serveur POP3 pour la lecture... Et c'est exchange qui se chargera de faire la passerelle vers une messagerie internet le cas échéant.
    Dans ton exemple de code, tu utilises Outlook en OLE pour faire l'envoi du mail. Outlook va faire l'envoi via exchange et non pas en SMTP.

    Pour faire de l'envoi de mail en SMTP, il faut que ton réseau dispose également d'un serveur SMTP...

    Je suis dans le même cas que toi. On a une messagerie Exchange, et pour faire des envois de mails classique, on a également un serveur SMTP. Ce sont nos admins qui m'ont donné les paramètres du serveur à utiliser.

  11. #11
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    Comme tu le dis au début sur tes testes "impossible de se libérer de l'autorisation de outlook pour l'envoi du mail", je te confirme que je n'y suis jamais arrivé.
    Et ensuite ici tu pârle de Serveur Miocrosoft Exchange pour récupérer le SMTP, mais là on s'en fou quand tu génére ton mail sur le poste de l'utilisateur aillant Outllok 2003 tu autorise ensuite l'accès à outlook, ton mail se créé tu n'a plus qu'a faire envoyé, puisque le lien Exchange et déjà mis en place sur le serveur et c'est le serveur qui exécutera la demande de l'utilisateur.

    Actuellement c'est excatement ce que je fais.

    A part le pb d'autorisation, cela fonctionne bien. Enfin reste le coup de la signature aussi qu'on ne peut pas intégrer au mail, obligé de le mettre après.

  12. #12
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Je viens de tenter l'exemple Indy avec cette fois un compte yahooMail, "erreur socket 11004" dès le "IdSMTP1.Connect;"... c'est la foire à l'ail cette affaire...

  13. #13
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    bon alors je ne sais pas s'il est possible d'envoyer un mail de façon totalement transparente via outlook, mais personnellement je trouverais cela totalement anormal !

    je lance un soft X et hop, il envoie un mail de ma part à qui il veux sans que j'ai mon mot à dire ? c'est quoi ce délire ?!

    non, soit le soft sait envoyé des mails, notamment parce que je lui ai donné les informations nécessaire à cet envoie, soit il se débrouille sans mon compte messagerie !
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    bon alors je ne sais pas s'il est possible d'envoyer un mail de façon totalement transparente via outlook, mais personnellement je trouverais cela totalement anormal !
    je lance un soft X et hop, il envoie un mail de ma part à qui il veux sans que j'ai mon mot à dire ? c'est quoi ce délire ?!
    Ha bon et pourquoi donc dans la mesure où l'utilisateur donne lui même au programme ses paramètres d'envoi via son compte Outlook ?


    Citation Envoyé par Paul TOTH Voir le message
    non, soit le soft sait envoyé des mails, notamment parce que je lui ai donné les informations nécessaire à cet envoie, soit il se débrouille sans mon compte messagerie !
    Ben pour le moment le soft il sait pas !!

    Moi je veux bien, mais que ce soit par gmail ou yahooMail (via Indy) ça passe toujours pas ! (voir plus haut)... anyone knows ??? Thanx to him...

  15. #15
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Erreur socket 11004 en tentant via Indy sur smtp.mail.yahoo.fr ... pourquoi tant de haine ?

  16. #16
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par peter27x Voir le message
    Erreur socket 11004 en tentant via Indy sur smtp.mail.yahoo.fr ... pourquoi tant de haine ?
    comme expliqué plus haut, il n'y a généralement que le serveur SMTP de ton fournisseur d'accès qui acceptera de faire suivre tes mails...et encore quand tu utilises leur connexion (si tu es chez free, tu peux utiliser smtp.free.fr...DE CHEZ TOI, mais pas depuis une connexion Orange par exemple)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  17. #17
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Bon OK, donc je peux laisser tomber quoi.
    Tant pis.

  18. #18
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Et si tu allais regarder à quoi correspond cette erreur sur le net

    Rien qu'en cherchant avec 11004 sur developpez j'ai eu des pistes via des composants FTP indiquant un problème d'écriture du host.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  19. #19
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Rayek Voir le message
    Et si tu allais regarder à quoi correspond cette erreur sur le net

    Rien qu'en cherchant avec 11004 sur developpez j'ai eu des pistes via des composants FTP indiquant un problème d'écriture du host.
    Tu crois que je l'ai pas fait ?

    Ça m'avance pas plus !

  20. #20
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    De toute façon je laisse tomber via yahoo ou gmail... Paul semblant de plus me faire comprendre que dans mon cas c'est râpe.

    Je m'oriente plus vers cette solution mentionnée plus haut :

    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
    48
    49
    50
     
    function TForm1.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(attachments[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;
     
     
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SendMail('sujet', 'texte', 'raoul', '',
      'alain', '', []);
    end;
    Maintenant le message après clic sur le bouton envoyer de Outlook passe bien, car alain et raoul sont connus dans la base d'email d'outlook (en mettant en plus les email dans les paramètres ça me marchent pas par contre, bref).

    Du coup je me demande et vais essayer de voir si je ne pourrais pas simuler le clic sur le bouton envoyer depuis l'appli Delphi... si vous avez des idées...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Base de données d'exemple qui ne marche pas
    Par kedare dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 29/11/2007, 03h21
  2. Réponses: 1
    Dernier message: 24/10/2007, 03h39
  3. balise img qui ne donne rien online
    Par Pro-Phil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/10/2005, 11h17
  4. requette qui me donne la premiere lettre d'1 colonne?
    Par mounir_e dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/12/2004, 18h49
  5. Rnd qui ne donne pas que des bonnes valeurs
    Par kubito dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2004, 18h00

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