![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Собственно говоря в теме и вопрос. Я пробую отправить почту через synapse (http://synapse.ararat.cz/), там какая-то неразбериха с TLS
вот код: bResult := SendToEx('***1@gmail.com','***2@gmail.com','sub','smtp.gmai l.com:465',saVal,'***1','***1'); в исходниках Synapse в процедуре function SendToRaw(const MailFrom, MailTo, SMTPHost: string; const MailData: TStrings; const Username, Password: string): Boolean; var SMTP: TSMTPSend; s, t: string; begin Result := False; SMTP := TSMTPSend.Create; try // if you need SOCKS5 support, uncomment next lines: // SMTP.Sock.SocksIP := '127.0.0.1'; // SMTP.Sock.SocksPort := '1080'; // if you need support for upgrade session to TSL/SSL, uncomment next lines: // расскомментил строку SMTP.AutoTLS := True; ... Вобщем все по началу идет как надо, но потом в прцедуре Код:
function TSMTPSend.ReadResult: Integer;
var
s: string;
begin
Result := 0;
FFullResult.Clear;
repeat
// на этой строке все повисает
s := FSock.RecvString(FTimeout);
FResultString := s;
FFullResult.Add(s);
if FSock.LastError <> 0 then
Break;
until Pos('-', s) <> 4;
s := FFullResult[0];
if Length(s) >= 3 then
Result := StrToIntDef(Copy(s, 1, 3), 0);
FResultCode := Result;
EnhancedCode(s);
end;
Эта процедура вызывается из ф-ии Код:
function TSMTPSend.Login: Boolean;
var
n: Integer;
auths: string;
s: string;
begin
Result := False;
FESMTP := True;
FAuthDone := False;
FESMTPcap.clear;
FESMTPSize := False;
FMaxSize := 0;
if not Connect then
Exit;
if ReadResult <> 220 then
Exit;
if not Ehlo then
...
Причем, если вызывать без указания порта bResult := SendToEx('***1@gmail.com','***2@gmail.com','sub','smtp.gmai l.com',saVal,'***1','***1'); то, это место проходит, но проблема возникает дальше =( Вобщем, если у кого есть немного времени, помогите плиз разобраться - очень нужно!!! Спасибо! Последний раз редактировалось 4kusNick, 30.06.2012 в 13:57. |
|
#2
|
||||
|
||||
|
Ладно, хрен с ним с синапсом, сделал я эту отправку через инди (10) и теперь жалею, что поленился разобраться с MAPI.
В общем, вот Код:
sPort := '587';
sHost := 'smtp.gmail.com';
IdSMTP.Host := sHost;
IdSMTP.Password := sPassword;
IdSMTP.Username := sUsername;
IdSMTP.Port := StrToInt(sPort);
IdSMTP.UseTLS := utUseExplicitTLS;
IdSSLIOHandlerSocketOpenSSL.Destination := sHost + ':' + sPort;
IdSSLIOHandlerSocketOpenSSL.Host := sHost;
IdSSLIOHandlerSocketOpenSSL.Port := StrToInt(sPort);
IdMessage.Body.AddStrings(saVal);
IdMessage.From.Address := sFromAddress;
IdMessage.From.Name := sFromName;
IdMessage.Recipients.Add;
IdMessage.Recipients.Items[0].Address := sToAddress;
IdMessage.Recipients.Items[0].Name := sToName;
IdMessage.Subject := sSubject;
IdSMTP.Connect;
IdSMTP.Send(IdMessage);
IdSMTP.Disconnect();
{ вот на этой ^ строке отладка выходит из-под контроля (F10 и статус - Running),
показывается MessageBox с ошибкой "Connection Closed Gracefully" и непонятно,
почему =( В общем, я уже копался, копался, так не до чего и не докопался.
Пробовал исключение в спиок игнорируемых добавлять - то же самое, пробовал в
try..except.end помещать - все равно, весь код, что идет после этого try..except не
работает и т.д. Плиз, если кто шарит, помогите разобраться с этим gmail'ом и TLS'ом
Может кто знает, как пользоваться MAPI правильно и с аутентификацией?
Любая инфа будет полезна}Последний раз редактировалось 4kusNick, 06.07.2007 в 07:04. |