+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: invio mail con INDY

  1. #1
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    55

    invio mail con INDY

    buongiorno a tutti,
    ho un problema con l'utilizzo dei componenti INDY per l'invio di mail da programma:
    sto utilizzando due componenti TIdSMTPe TIdMessage della libreria INDY
    e cerco di inviare una mail a più destinatari elencati in una TlistBox, uso le
    indicazioni di codice riportate nel manuale DELPHI 7 (Cantù) e quindi lancio :
    codice:
    procedure TForm1.SendAllBtnClick(Sender: TObject);
    var
      nItem: integer;
    
    begin
    
       nItem := ListBox1.ItemIndex
    
       //....connessione
       IdSMTP1.Host := 'smtp.gmail.com';
       IdSMTP1.Username := 'miaMail@gmail.com';
       IdSMTP1.Port := '465';
       IdSMTP1.Password := 'miaPassword';
       IdSMTP1.AuthenticationType := atLogin;
    
    
       IdSMTP1.Connect;
    
       //...........invio dei messaggi
       try
          //...imposta la parte fissa intestazione
          IdMessage1.From.Name := 'mio Nome';
          IdMessage1.Subject := 'test invio';
          IdMessage1.Body.Insert(0, 'Hello Test');
          while nItem < ListBox1.Items.Count do begin
             //....mostra la selezione corrente
             Application.ProcessMessages;
             ListBox1.ItemIndex := nItem;
             IdMessage1.Body[0] := 'Hello '+ListBox1.Items[nItem];
             IdSMTP1.Send(IdMessage1);
             Inc(nItem);
          end;
       finally
          IdSMTP1.Disconnect;
       end;
    end;
    ma al comando:
    codice:
    IdSMTP1.Connect;
    ricevo un messaggio 'Connect closed gracefully'
    e passa alla disconnessione
    codice:
    IdSMTP1.Disconnect;
    dove sbaglio ?

  2. #2
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,051
    Stai effettuando una connessione con un server che usa SSL, pertanto è necessario una configurazione aggiuntiva altrimenti non puoi connetterti con il server GMail sulla porta indicata.

    Qui c'è un approfondimento sul problema con un esempio di codice, che riporto nel forum per completezza:


    begin
    IDSMTP1 := TIDSMTP.Create;
    IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create;
    try

    with IDSMTP1 do
    begin
    Host := srvr.Host;
    Port := srvr.Port;
    if (srvr.needAuthentication = 'Y') then
    AuthType := satDefault
    else
    AuthType := satNone;
    IOHandler := IdSSLIOHandlerSocketOpenSSL1;

    if (srvr.secureMode = 'Y') then
    UseTLS := utUseRequireTLS
    else
    UseTLS := utNoTLSSupport;

    Username := srvr.Username;
    Password := srvr.Password;
    end;

    idMBHTML := TIdMessageBuilderHTML.Create;
    Idmessage1 := TIDMessage.Create;

    try
    with idMBHTML do
    begin
    enc := TEncoding.Unicode;
    HTML.LoadFromStream(FEmlMsg.MsgBody, enc);
    for c := 0 to FEmlMsg.Attachmnts.Count - 1 do
    Attachments.Add(FEmlMsg.Attachmnts[c]);
    FillMessage(IDMessage1);
    end;

    with Idmessage1 do
    begin
    Subject := FEmlMsg.MsgSubject;
    From.Address := FEmlMsg.FromAddress;
    From.Name := FEmlMsg.FromName;
    Recipients.EMailAddresses := FEmlMsg.RecipientAddress;
    if FEmlMsg.ReceiptRecipientAddress <> '' then
    ReceiptRecipient.Address := FEmlMsg.ReceiptRecipientAddress;
    if FEmlMsg.ReceiptRecipientName <> '' then
    ReceiptRecipient.Name := FEmlMsg.ReceiptRecipientName;
    end;

    with IDSMTP1 do
    begin
    if not Connected then
    Connect;
    Send(IdMessage1);
    end;

    finally
    Idmessage1.Free;
    idMBHTML.Free;
    end;
    finally
    IDSMTP1.Free;
    IdSSLIOHandlerSocketOpenSSL1.Free;
    end;
    end;


    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  3. #3
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    55
    ok,
    mi cofermi che devo aggiornare la versione di INDY che ho (9) alla nuova (10)
    perchè alcuni di questi parametri la 9 non li riconosce...
    Modifico e riprovo...

    grazie

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi