Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TIDSMTP, ошибка, SSL, не отправляет письмо 
V
    Опции темы
boobie
Дата 13.9.2017, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

Репутация: нет
Всего: нет



Добрый день!
Все делаю по рецепту, кидаю на форму компоненты IdSMTP, IdMessage, IdSSLIOHandlerSocket, IdSocksInfo.

DLL-ки для SSL-шифрования качаю отсюда: http://indy.fulgan.com/SSL/
Закидываю их в папку с моим exe-шником.
Пробовал openssl-1.0.2l-i386-win32.zip и openssl-1.0.2l-x64_86-win64.zip  и более ранние 0.9... 

Вот листинг:
Код

unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdIOHandler,
IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL,
IdCustomTransparentProxy, IdSocks, IdMessage, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient,
IdSMTPBase, IdSMTP;

type
TForm1 = class(TForm)
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
IdSocksInfo1: TIdSocksInfo;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin


IdSMTP1.CreateIOHandler(nil);
idMessage1.Create(nil);
IdSMTP1.AuthType := satDefault;
IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions. Method := sslvTLSv1;
IdSSLIOHandlerSocketOpenSSL1. SSLOptions.Mode:= sslmUnassigned;
IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
IdSMTP1.UseTLS := utUseImplicitTLS;
IdMessage1.From.Address:= 'ОТ КОГО@gmail.com';
IdMessage1.ContentType := 'text/plain; charset=WINDOWS-1251;';
IdMessage1.Subject:='Demo Email (ПРОВЕРКА)';
IdMessage1.Body.Text:='Почта SSL';
IdMessage1.Recipients. EMailAddresses:='КОМУ@mail.ru';
IdSMTP1.Host:='smtp.gmail.com';
IdSMTP1.Port:=587;
IdSMTP1.Username:='ОТ КОГО@gmail.com';
IdSMTP1.Password:='ПАРОЛЬ';
IdSMTP1.Connect;
IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;


end;
end.


При нажатии на кнопку вылетает ошибка:
Error connecting with SSL.
error: 1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number.

На С# все работает из коробки, без лишних ДЛЛ-ок.
Как на дельфях отправить письмо используя SSL?
PM   Вверх
Snowy
Дата 13.9.2017, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



SSL3, а ты выставляешь sslvTLSv1
Установи метод в sslvSSLv3
PM MAIL   Вверх
boobie
Дата 13.9.2017, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

Репутация: нет
Всего: нет



Так, ошибся...
Поменял на sslvSSLv3, ошибка та же.
P.S. Indy 10.6.2, Delphi 10.2...
В дизайнере никакие сво-ва у компонентов не менял, библиотеки к проекту не линковал (а надо?)...

Это сообщение отредактировал(а) boobie - 13.9.2017, 11:51
PM   Вверх
Snowy
Дата 14.9.2017, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Нет, библиотеки линковать не нужно. Достаточно просто положить в папку с проектом. Они подхватываются автоматически.
Посмотри вот этот вариант:
http://forum.vingrad.ru/forum/topic-100619.html
PM MAIL   Вверх
boobie
Дата 18.9.2017, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 16.9.2011

Репутация: нет
Всего: нет



Спасибо!
Нашел работающий вариант:
Код

function tForm1.SendEMail(const ASubject, ABody: String;
  const AFileAttach: String = ''): Boolean;
var
  IdSMTP: TidSMTP;
  IdSSLIOHandlerSocketOpenSSL: TIdSSLIOHandlerSocketOpenSSL;
  IdMessage: TIdMessage;
  IdtTextPart: TIdText;
  IdAttachment: TIdAttachmentFile;
begin
  IdSMTP := TidSMTP.Create(nil);
  IdSMTP.AuthType := satDefault;
  IdSSLIOHandlerSocketOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
  IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method := sslvTLSv1;
  IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode := sslmUnassigned;
  IdSMTP.IOHandler := IdSSLIOHandlerSocketOpenSSL;
  IdSMTP.UseTLS := utUseImplicitTLS;
  IdMessage := TIdMessage.Create(nil);
  IdAttachment := nil;
  if (AFileAttach <> '') and FileExists(AFileAttach) then
    IdAttachment := TIdAttachmentFile.Create(IdMessage.MessageParts,
      AFileAttach);
  IdtTextPart := TIdText.Create(IdMessage.MessageParts, nil);
  try
    IdSMTP.Host := 'smtp.gmail.com';
    IdSMTP.Port := 465;
    IdSMTP.ConnectTimeout := 5000;
    IdSMTP.Username := 'отправитель@gmail.com';
    IdSMTP.Password := 'пароль';
 
    IdMessage.From.Name := 'получатель';
    IdMessage.From.Address := 'отправитель@gmail.com';
    IdMessage.Recipients.EMailAddresses := 'получатель@yandex.ru';
    IdMessage.Subject := ASubject;
    IdtTextPart.ContentType := 'text/plain';
    IdtTextPart.CharSet := 'Windows-1251';
    IdtTextPart.Body.Text := ABody;
 
    IdSMTP.Connect;
    if IdSMTP.Connected then
      try
        IdSMTP.Send(IdMessage);
      except
        on E: Exception do
         caption:='SendEMail.Send';
      end;
    IdSMTP.Disconnect(true);
  except
    on E: Exception do
         caption:='SendEMail.Send2';
  end;
  IdtTextPart.Free;
  if Assigned(IdAttachment) then
    IdAttachment.Free;
  IdMessage.Free;
  IdSSLIOHandlerSocketOpenSSL.Free;
  IdSMTP.Free;
end;


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.