|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как отправить почту с использованием TLS?
Собственно говоря в теме и вопрос. Я пробую отправить почту через 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'); то, это место проходит, но проблема возникает дальше =( Вобщем, если у кого есть немного времени, помогите плиз разобраться - очень нужно!!! Спасибо! THE CRACKER IS OUT THERE Последний раз редактировалось 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 правильно и с аутентификацией? Любая инфа будет полезна} THE CRACKER IS OUT THERE Последний раз редактировалось 4kusNick, 06.07.2007 в 07:04. |