Попробуйте пжст SMTP + Synapse под Linux - код внутри

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Попробуйте пжст SMTP + Synapse под Linux - код внутри

Сообщение Aleks69 » 12.11.2015 12:35:26

Приветствую!

Случай можно сказать канонический. Нужно отправлять почту через защищенное соединение. Увы, почтовики уже давно не работают по 25 порту.

Взял пример на Synapse. Под Windows все работает отлично. Но мне нужно это на Raspberry. Там разновидность Debian и lazarus работает без проблем.
Но вот именно отправка а=почты не работает из примера. Типа ошибка авторизации.

Попробуйте, пожалуйста приложенный код, у кого есть lazarus под Линуксами на IBM PC. Может, это вообще по UNIX работает не так, как в Windows...
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  smtpsend,ssl_openssl,mimemess,mimepart;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }


Procedure MailSend(Const sSmtpHost, sSmtpPort, sSmtpUser, sSmtpPasswd, sFrom, sTo, sSubject, sMesBody: String);
Var
  smtp: TSMTPSend;
  msg_lines: TStringList;
Begin
  msg_lines := TStringList.Create;
  //Create SMTP object
  smtp := TSMTPSend.Create;
  Try
    //Fill in the content of future mail
    msg_lines.Add('From: ' + sFrom);
    msg_lines.Add('To: ' + sTo);
    msg_lines.Add('Subject: ' + sSubject);
    If Length(sMesBody) > 0 Then
    Begin
        msg_lines.Add('');
        msg_lines.Add(sMesBody);
    End;
    //====================================
   //If authorization is required, then fill in username
    smtp.UserName := sSmtpUser;
   //Specify user's password
    smtp.Password := sSmtpPasswd;
   //Specify target server IP (or symbolic name)
    smtp.TargetHost := sSmtpHost;
   //Specify target server port
    smtp.TargetPort := sSmtpPort;

   //Enable SSL|TLS protocols
    smtp.autoTLS := true;

    smtp.FullSSL := True;




   //Connect to SMTP server
    If Not smtp.Login() Then
        Showmessage('SMTP ERROR: Login:' + smtp.EnhCodeString);
   //If you successfully pass authorization to the remote server
    If smtp.AuthDone Then
    Begin
        //Send MAIL FROM SMTP command to set sender’s e-mail address.
        If Not smtp.MailFrom(sFrom, Length(sFrom))Then
            Showmessage('SMTP ERROR: MailFrom:' + smtp.EnhCodeString);
        //Send RCPT TO SMTP command to set receiver’s e-mail address.
        If Not smtp.MailTo(sTo) Then
            Showmessage('SMTP ERROR: MailTo:' + smtp.EnhCodeString);
      //Send DATA SMTP command and transmit message data.
        If Not smtp.MailData(msg_lines) Then
            Showmessage('SMTP ERROR: MailData:' + smtp.EnhCodeString);
    End;
    //Close SMTP session (QUIT command) and disconnect from SMTP server.
    If Not smtp.Logout() Then
        Showmessage('SMTP ERROR: Logout:' + smtp.EnhCodeString);
  Finally
    msg_lines.Free;
    smtp.Free;
  End;
End;





procedure TForm1.Button2Click(Sender: TObject);
begin


  MailSend('smtp.mail.ru', '465', 'user', 'passw', 'from', 'to', 'subject', 'Message - To use this package in your code, first you have to add mfk_Synapse to the ‘Uses’ section of your module.');


end;

end.
Aleks69
новенький
 
Сообщения: 35
Зарегистрирован: 29.03.2009 14:25:01

Re: Попробуйте пжст SMTP + Synapse под Linux - код внутри

Сообщение Xenar » 13.11.2015 09:01:33

Насколько я помню там нужно устанавливать дополнительный пакет, название точно не помню но ssl есть в названии
Последний раз редактировалось Xenar 13.11.2015 16:07:30, всего редактировалось 1 раз.
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: Попробуйте пжст SMTP + Synapse под Linux - код внутри

Сообщение Alexx2000 » 13.11.2015 10:22:26

Пакет libssl-dev
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Попробуйте пжст SMTP + Synapse под Linux - код внутри

Сообщение Aleks69 » 13.11.2015 12:16:58

Приветствую!

Т.е. Uses ssl_openssl не достаточно? Хм. программа компилируется и запускается. Кстати, попробовал на на Indy - тоже какая-то беда.
Программа запускается и не вызывает видимых ошибок - но письма не доходят.

Я конечно помудрю с обработчиками сегодня вечером, но странно все это...
Aleks69
новенький
 
Сообщения: 35
Зарегистрирован: 29.03.2009 14:25:01

Re: Попробуйте пжст SMTP + Synapse под Linux - код внутри

Сообщение Alexx2000 » 13.11.2015 14:40:15

Ничего странного, каким чудом программа должна работать если библиотек поддержки ssl физически нет на компьютере?
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 489
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Попробуйте пжст SMTP + Synapse под Linux - код внутри

Сообщение Aleks69 » 13.11.2015 16:18:16

Alexx2000 Приветствую! Просто удивило то, что под Windows например, если, например, нет какой-то DLL, то всегда появляется сообщение об ошибке. Тут все тихо. Но попробу. конечно! Спасибо за ответ.
Aleks69
новенький
 
Сообщения: 35
Зарегистрирован: 29.03.2009 14:25:01


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 232

Рейтинг@Mail.ru