Problème de connection Smtp et gmail [Résolu]

Signaler
-
 Utilisateur anonyme -
Bonjour à tous;
Je n'arrive pas à envoyer des mails depuis mon compte gmail.
avec mon autre compte bbox, le programme marche super bien, mais pas si je change pour gmail.
j'ai essayé de changer le port: 25, 465, 587
voici le message d'erreur:
ERROR: Socket Error # 10060 Connection timed out.
ou bien connection closed gracefuly
pourriez-vous m'aider ??,
c'est; je pense juste une erreur de paramétrage du smtp

Merci d'avance
Cordialement

6 réponses

Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Utilisateur anonyme
bonsoir Korgis;
c'est pas une réponse ça , pour moi
cordialement
Messages postés
675
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
19 février 2019
13 > Utilisateur anonyme
Si tu veux de l'aide montre nous ton bout de code qui pose problème !
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16 > Utilisateur anonyme
@cs_sagitarius

Euh... c'est pas bien clair.

Qu'est-ce qui n'est pas une réponse : la mienne ou celle vers laquelle je t'aiguille ?

Bonjour à tous;
Merci pour votre aide;
@Korgis, non, t'inquiète pas , c'est que je suis en colère de ne pas réussir et la réponse du lien n'est pas explicite, et ne réponds pas au problème.
donc, voici mon code :
procedure TMailerForm.Envoyer_MailClick(Sender: TObject);
begin
  MemoStatus.Clear;
  IdMessage.From.Address := From.Text;
  IdMessage.Recipients.EMailAddresses := Destinataire.Text + ',' + CC.Text;
  IdMessage.Subject := Subject.Text;
  IdMessage.Body.Text := Body.Text;
  try
if FileExists(FichiersJoints.Text) then
  TIdAttachmentFile.Create(IdMessage.MessageParts,FichiersJoints.Text);
    try
      SMTP.Connect;
      SMTP.Send(IdMessage);
      MemoStatus.Lines.Insert(0,'le message à bien été envoyé avec succès');
    except
      on E:Exception do
        MemoStatus.Lines.Insert(0, 'ERREUR: ' + E.Message);
    end;    
{ERREUR: Socket Error # 10060 ou soit Connection timed out.}
  finally
    if SMTP.Connected then SMTP.Disconnect;
  end;
end; 

Voici les deux types d'erreurs rencontrées:
ERREUR: Socket "Error # 10060"
ou soit "Connection timed out".

J'ai mis aussi, un IdSSLIOHandlerSocketOpenSSL1.
Mais je débute et je n'arrive pas à le paramétrer je pense, j'ai essayé plusieurs solutions de paramétrages, mais, rien n'à faire ça marche pas.
Désactivé les sécurité de mon compte Google pour accepté les applications, nada marche pas.
Soit c'est mon programme soit c'est sur mon compte Gmail, qui faut paramétrer.
Faut-il d'autres fichiers ???. (dll, certificat d'accès à gmail....)

Et j'aimerais bien envoyer mes devis et factures(.doc) avec mon programme, si quelqu'un pouvait m'aider.
Merci d'avance;
Cordialement,
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
Salut,

je t'ai fait une version simplifié mais fonctionnelle
libeay32.dll & ssleay.dll doivent se trouver dans le répertoire de l'exe:
uses ... 
IdIOHandler, IdIOHandlerSocket,
  IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdMessage, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase,
  IdMessageClient, IdSMTPBase, IdSMTP;

function SendEmail(const aRecipient, aSubject, aBody: string): Boolean;
var
  aIOHandler        : TIdSSLIOHandlerSocketOpenSSL;
  aMessage          : TIdMessage;
begin
  Result := False;
    // création d'un TIdSSLIOHandlerSocketOpenSSL
  aIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
      // paramétrage du IOHandler
    aIOHandler.SSLOptions.Method := sslvTLSv1;
      // crée le SMTP pour l'envoie du mail
    with TIdSMTP.Create(nil) do
    try
      Username := 'TonAdresseMail@gmail.com';
      Password := 'Ton Mot de Passe';
      Port := 587;
      Host := 'smtp.gmail.com';
      MailAgent := 'Mail Demo by Cirec';
      IOHandler := aIOHandler;
      // cette ligne doit être après l'assignation de IOHandler
      UseTLS := utUseExplicitTLS;
        // crée le corps du mesage
      aMessage := TIdMessage.Create(nil);
      try
        with aMessage do
        begin
          From.Address := Username;
          Recipients.EMailAddresses := aRecipient;
          Subject := aSubject;
          Body.Text := aBody;
        end;
        // connexion et envoie du mail
        Connect;
        Send(aMessage);
        Disconnect;
        // si on arrive jusque ici c'est que le mail est parti
        Result := True;
      finally
        aMessage.Free;
      end;
    finally
      free;
    end;
  finally
    aIOHandler.Free;
  end;
end;

procedure Tfrm_MailDemo.btn_SendClick(Sender: TObject);
begin
  if SendEmail('Destinataire@XXX.XX', 'Sujet du message', 'Texte du message à envoyer') then
    Caption := 'votre EMail a été envoyé'
  else
    Caption := 'votre EMail n''a pas été envoyé';
end;

Voilà y a pas plus simple

Cordialement,
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Salut Cirec,

ça a l'air cool... B-)
Il va vraiment falloir que j'installe Indy10 sur mon D7!
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
Salut,

ce code devrait aussi fonctionner, avec de petites modifications, sous D7 & Indy9 ;)
si ça t’intéresse je peux le tenter ^^
Cordialement,
     
@+ Cirec la belle voix de mon filleul
Utilisateur anonyme
Bonsoir Cirec;
UN GRAND MERCI POUR TON AIDE !!!!!!!!!!!,

j'avais un message d'erreur: EIdOSSL
"n'a pas pu charger la bibliothèque SSL"
il me manquait les fichiers dll !!,
J'ai cherché , puis, j'ai retrouvé le lien que tu m'avais déjà donné,
http://indy.fulgan.com/SSL/Archive/
puis, j'ai téléchargé le fichier: indy_OpenSSL096m.zip
et voilà !!!,

salut Korgis !!

Un grand MERCI À VOUS POUR VOTRE SYMPATHIE !!
très cordialement
et bon codding et bon week-end !!!
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
re,
tous spécialement pour mon ami Korgis ;)
la version Indy9 testé avec D7:
uses IdIOHandler, IdIOHandlerSocket,
  IdSSLOpenSSL, IdMessage, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient,
  IdMessageClient, IdSMTP;
...
function SendEmail(const aRecipient, aSubject, aBody: string): Boolean;
var
  aIOHandler        : TIdSSLIOHandlerSocket;        { ******* Modifié ******* }
  aMessage          : TIdMessage;
begin
  Result := False;
    // création d'un TIdSSLIOHandlerSocketOpenSSL
  aIOHandler := TIdSSLIOHandlerSocket.Create(nil);  { ******* Modifié ******* }
  try
      // paramétrage du IOHandler
    aIOHandler.SSLOptions.Method := sslvSSLv23;

      // crée le SMTP pour l'envoie du mail
    with TIdSMTP.Create(nil) do
    try
      AuthenticationType := atLogin;                { ******* Ajouté ******* }
      Username := 'TonAdresseMail@gmail.com';
      Password := 'Ton Mot de Passe';
      Port := 465;                                  { ******* Modifié ******* }
      Host := 'smtp.gmail.com';
      MailAgent := 'Mail Demo by Cirec';
      IOHandler := aIOHandler;
      {// cette ligne doit être après l'assignation de IOHandler
      UseTLS := utUseExplicitTLS;}                  { ******* Retiré ******* }
        // crée le corps du mesage
      aMessage := TIdMessage.Create(nil);
      try
        with aMessage do
        begin
          From.Address := Username;
          Recipients.EMailAddresses := aRecipient;
          Subject := aSubject;
          Body.Text := aBody;
        end;
        // connexion et envoie du mail
        Connect;
        Send(aMessage);
        Disconnect;
        // si on arrive jusque ici c'est que le mail est parti
        Result := True;
      finally
        aMessage.Free;
      end;
    finally
      free;
    end;
  finally
    aIOHandler.Free;
  end;
end;


voilà si ça peut servir ... c'est avec plaisir ;)

Cordialement,
     
@+ Cirec la belle voix de mon filleul

bonsoir,
Merci Cirec pour tes réponses, je ne comprends toujours pas pourquoi, ça ne fonctionnait pas avec mon code, je n'ai pas eu le temps de regarder, bien que j'avais les fichiers dll dans le même répertoire , mais pas téléchargé sur le bon site, je pense.
maintenant, c'est pour insérer une image dans mon TRichEdit et le format texte qui, à l'arrivé n'est pas en gras ou en couleur, ...
Bref, je vais mettre un nouveau post.
merci de ta gentillesse
cordialement