Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2014, 14:39   #1
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию Synapse+SSL. Отправка почты средствами Делфи 7

Всем привет!

С введением обязательного SSL столкнулся с проблемой отправкой почты. Перепробовал кучу советов и вариантов, ничего не работает. Может есть у кого 100% рабочий пример?

Вот как делаю я:

Код:
uses
{.....} ssl_openssl, SMTPSend, MIMEPart, MIMEMess

{.....}

Procedure SendMail (Host, Subject, pTo, From , TextBody,
				HTMLBody, login,password : string);
var Msg : TMimeMess;
    StringList : TStringList;
    MIMEPart : TMimePart;
begin
  Msg := TMimeMess.Create;
  StringList := TStringList.Create;
  try
    Msg.Header.Subject := Subject;
    Msg.Header.From := From;
    Msg.Header.ToList.Add(pTo);
    MIMEPart := Msg.AddPartMultipart('alternative', nil);
    if length(TextBody)=0 then

      begin
        StringList.Text := HTMLBody;
        Msg.AddPartHTML(StringList, MIMEPart);
      end
    else
      begin
        StringList.Text := TextBody;
        Msg.AddPartText(StringList, MIMEPart);
      end;
    Msg.EncodeMessage;
    if smtpsend.SendToRaw(From,pTo,Host,Msg.Lines,login,password) then
        ShowMessage('Отправлено')
    else
        ShowMessage('Хрен тебе');
 finally
   Msg.Free;
   StringList.Free;
 end;
end;

procedure TForm10.Button1Click(Sender: TObject);
var
st:TStrings;
begin
 SendMail('smtp.gmail.com', 'Тема сообщения, 'grominfo@yandex.ru', 'testing68g@gmail.com', 'Текст сообщения', '', 'testing68g@gmail.com','пароль');
end;
Качал разные варианты библиотек libeay32.dll и ssleay32.dll, которые необходимы для работы с SSL, глушил антивирус - все безрезультатно.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 30.10.2014, 16:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Давненько было. Еще добавлял zip-вложение AddPartBinaryFromFile. А так код такой же практически. Да, вспомнил, SendToRaw кажись правил - заремил SMTP.FullSSL := True (а может другое что-то, не помню) и dll нормальные не с 1-го раза нашел. Код рабочим у меня 2 года назад был, но не использовался после этого. Вот отлаживался и работало. Точками забил приватные данные
Код:
procedure TForm2.Button1Click(Sender: TObject);
var xMsg: TMimeMess;
    xMIMEPart: TMimePart;
    xList: TStringList;
begin
  xMsg:=TMimeMess.Create;
  xList:=TStringList.Create;
  try
    xMsg.Header.Subject:='Почта для впечатывания'; {тема сообщения}
    xMsg.Header.From:='..........';        {имя и адрес отправителя}
    xMsg.Header.ToList.Add('................');  {имя и адрес получателя}
    xMIMEPart:=xMsg.AddPartMultipart('alternative',nil);
    xList.Text:='Почта для впечатывания';
    xMsg.AddPartHTML(xList,xMIMEPart);
    xMsg.AddPartBinaryFromFile('e:\F150002.zip',xMIMEPart);
    xMsg.EncodeMessage;
    if not SendToRaw('................','...................','........................',xMsg.Lines,'............','............')
      then ShowMessage('Письмо не отправлено');
  finally
    xMsg.Free;
    xList.Free;
  end;
end;
Код:
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;
// if you need support for TSL/SSL tunnel, uncomment next lines:
    // SMTP.FullSSL := True;
    SMTP.TargetHost := Trim(SeparateLeft(SMTPHost, ':'));
    s := Trim(SeparateRight(SMTPHost, ':'));
    if (s <> '') and (s <> SMTPHost) then
      SMTP.TargetPort := s;
    SMTP.Username := Username;
    SMTP.Password := Password;
    if SMTP.Login then
    begin
      if SMTP.MailFrom(GetEmailAddr(MailFrom), Length(MailData.Text)) then
      begin
        s := MailTo;
        repeat
          t := GetEmailAddr(Trim(FetchEx(s, ',', '"')));
          if t <> '' then
            Result := SMTP.MailTo(t);
          if not Result then
            Break;
        until s = '';
        if Result then
          Result := SMTP.MailData(MailData);
      end;
      SMTP.Logout;
    end;
  finally
    SMTP.Free;
  end;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.10.2014 в 17:02.
Аватар вне форума Ответить с цитированием
Старый 30.10.2014, 21:59   #3
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Аватар, спасибо, завтра проверю
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lazarus. SSL + Synapse на Linux Lardes Lazarus, Free Pascal, CodeTyphon 2 18.05.2014 17:05
Реализация TCP+SSL клиент-сервера через Synapse 3D Hunter Работа с сетью в Delphi 19 06.09.2013 08:08
Synapse + SSL + Socks5 = виснут соединения Puhovoi Работа с сетью в Delphi 2 01.12.2012 22:39
Отправка почты через SMTP с использованием Synapse chandrasecar Работа с сетью в Delphi 5 26.06.2012 13:04
Проверка почты по SSL соединению km-msk Работа с сетью в Delphi 4 14.08.2009 15:37