Posiljanje maile preko GMail

Vse kar se tiče programiranja za internet.
Odgovori
odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Posiljanje maile preko GMail

Odgovor Napisal/-a odisej » 02.12.2010 11:54:23

Matram se, iščem po netu, pa mi ne uspe spravit skup delujočega primera. Connect gre še skoz, Send pa obvisi. Ima kdo kakšen konkreten primer kode. Delphi 2007 in Indy 10.
Mogoče še kakšen konkreten primer kode za koga drugega, npr Hotmail.

Uporabniški avatar
krho
Prispevkov: 709
Pridružen: 11.01.2003 23:02:56

Re: Posiljanje maile preko GMail

Odgovor Napisal/-a krho » 02.12.2010 12:28:48

port 465 SSL, port 587 autotls, port 25 je najbrž zaprt za pošiljanje..
V vsakem primeru pa potrebuješ user/pass za pošiljanje

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Re: Posiljanje maile preko GMail

Odgovor Napisal/-a odisej » 02.12.2010 21:48:53

Hvala za odgovor, žal pa še vedno ne znam stvari povezati. Tudi na internetu sem bral o portih in open ssl pa še kaj, ampak ne znam stvari povezati v celoto.

Fortuna
Prispevkov: 1097
Pridružen: 26.06.2004 09:59:52

Re: Posiljanje maile preko GMail

Odgovor Napisal/-a Fortuna » 03.12.2010 08:17:51

Gmail ima pri pošiljanju cel kup omejitev.

Ena od zelo hudih je da ko prebiješ 500 mailov na dan te zablokira za vsaj za 24 ur.

Tvoj ponudnik interneta te pa zablokira če pošlješ več kot 100 oz 150 mailov na uro.

Sem napisal program v lazarusu, vendar sem potem našel boljšo rešitev, ki jo pa še ne ne uporabljam.

Tu je link. Deluje v seh operacijskih sistemih.
http://caspian.dotconf.net/menu/Software/SendEmail/

V lazarusu je demo,ki deluje. Čeprav mislim da je prejšnji link boljši.
http://www.lazarus.freepascal.org/index ... 843.0.html

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Re: Posiljanje maile preko GMail

Odgovor Napisal/-a odisej » 03.12.2010 08:39:41

Krho, ti maš SiMail a ne? A ta tvoj klient zna pošiljat mail preko gmaila? A je open sourse? Kaj uporablja za pošiljanje mailov? Mogoče izsek dela kode?

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Re: Posiljanje maile preko GMail

Odgovor Napisal/-a odisej » 03.12.2010 10:19:45

U redu je, najdi kodo.

Koda: Izberi vse

procedure TForm1.Button2Click(Sender: TObject);
var
  IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
  IdSMTP: TIdSMTP;
  IdMsg: TIdMessage;
begin
  IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    IdSSLIOHandlerSocketOpenSSL.Destination := 'smtp.gmail.com:587';
    IdSSLIOHandlerSocketOpenSSL.Host := 'smtp.gmail.com';
    //IdSSLIOHandlerSocketOpenSSL.MaxLineAction := ;
    IdSSLIOHandlerSocketOpenSSL.Port := 587;
    IdSSLIOHandlerSocketOpenSSL.DefaultPort := 0;
    IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method := sslvTLSv1;
    IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode := sslmUnassigned;
    IdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode := [];
    IdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyDepth := 0;

    IdSMTP := TIdSMTP.Create(nil);
    try
      IdSMTP.IOHandler := IdSSLIOHandlerSocketOpenSSL;
      IdSMTP.Host := 'smtp.gmail.com';
      IdSMTP.Port := 587;
      IdSMTP.UseTLS := utUseExplicitTLS;

      IdSMTP.Username := 'myusername';
      IdSMTP.Password := 'mypass';

      IdSMTP.Connect;
      try
        IdMsg := TIdMessage.Create;
        try
          IdMsg.From.Address := 'mymail' + '@gmail.com';

          IdMsg.Recipients.EMailAddresses := 'her_mail';

          IdMsg.Subject := 'subject';
          IdMsg.Body.Text := 'body';

          //if attachment <> '' then
          //begin
          //if FileExists(attachment) then
          //TIdAttachmentFile.Create(IdMsg.MessageParts, attachment)
          //else
          //raise Exception.Create('"' + attachment + '" not found.');
          //end;

          IdSMTP.Send(IdMsg);
        finally
          IdMsg.Free;
        end;
      finally
        IdSMTP.Disconnect;
      end;
    finally
      IdSMTP.Free;
    end;
  finally
    IdSSLIOHandlerSocketOpenSSL.Free;
  end;
end;

Matija
Prispevkov: 10
Pridružen: 22.02.2012 16:20:31

Re: Posiljanje maile preko GMail

Odgovor Napisal/-a Matija » 13.09.2013 15:04:52

Živjo,
s pomočjo zgornjih prispevkov in drugih virov sem naredil enostavno pošiljanje pošte preko gmaila.
Zadeva deluje OK, dokler sem na razvojem računalniku (Win7 32bit), ko pa sem programček probal na drugem računalniku,
ki ima inštaliran samo Win7 64bit pa se zadeva ustavi (zacikla) pri vrstici

Koda: Izberi vse

 IdSMTP.Send(IdMsg); 
Šele ko sem dodal še

Koda: Izberi vse

 IdSMTP.ReadTimeout := 60000;
se mi je program po 1min nadaljeval, seveda brez poslane pošte, vendar z napako Read timed out.

Enako je tudi na Win XP sistemu.

Ima kdo kakšno idejo, kaj mi manjka na drugih računalnikih. Kodo prevajam polno (vklučim vse knjižmice), v izvršno mapo sem dodal tudi oba Indy dll-ja, pa še vedno isto.

Hvala in lp,
Matija

zippo
Prispevkov: 264
Pridružen: 14.07.2002 12:11:29

Re: Posiljanje maile preko GMail

Odgovor Napisal/-a zippo » 23.12.2013 11:44:43

Dodaj še ConnectTimeout in ga nastavi na >0.

Jaz sem imel pred kratkim podobno težavo na Win8 in je to pomagalo. Če želiš, ti pošljem testni programček + kodo, ki preverjeno dela na Win8. Programček sem napisal, ker sem imel tudi jaz težave v kompleksnejšem programu, pa sem si pripravil ločen primer.

lp,
m@rko

Odgovori