Posiljanje maile preko GMail
Posiljanje maile preko GMail
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.
Mogoče še kakšen konkreten primer kode za koga drugega, npr Hotmail.
Re: Posiljanje maile preko GMail
port 465 SSL, port 587 autotls, port 25 je najbrž zaprt za pošiljanje..
V vsakem primeru pa potrebuješ user/pass za pošiljanje
V vsakem primeru pa potrebuješ user/pass za pošiljanje
Re: Posiljanje maile preko GMail
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.
Re: Posiljanje maile preko GMail
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
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
Re: Posiljanje maile preko GMail
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?
Re: Posiljanje maile preko GMail
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;
Re: Posiljanje maile preko GMail
Ž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
Šele ko sem dodal še
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
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);
Koda: Izberi vse
IdSMTP.ReadTimeout := 60000;
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
Re: Posiljanje maile preko GMail
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
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