Back to workplace and I could try my email send test program. It works
That means that Indy works under Lazarus / Debian... Except of minor problems... Eg. my initial problem.
That problem still exists that Lazarus does not display the properties, events, methods little window when writing program. So first I have to write the program under windows,
then I can port it to Linux... Hoping that it work well under Linux too... Lets hope this will change in the future
Here is my test program :
---------------------------------------------------------------------------------------------------------------------------------------
unit emtest2;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, IdSMTP, IdMessage,IdAttachmentFile, IdMessageCoderMIME;
type
{ TEmTestF }
TEmTestF = class(TForm)
BAddAttach: TButton;
Bevel1: TBevel;
BSend: TButton;
IdMsg: TIdMessage;
IdSMTP: TIdSMTP;
Label1: TLabel;
Label2: TLabel;
LBAttach: TListBox;
LEAddresses: TLabeledEdit;
LEBCopies: TLabeledEdit;
LECopies: TLabeledEdit;
LEFrom: TLabeledEdit;
LESMTP: TLabeledEdit;
LESubject: TLabeledEdit;
LEUsername: TLabeledEdit;
Memo1: TMemo;
OpenDlg: TOpenDialog;
procedure FormOnClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormOnActivate(Sender: TObject);
procedure BAddAttachClick(Sender: TObject);
procedure BSendClick(Sender: TObject);
procedure FormOnCreate(Sender: TObject);
private
{ private declarations }
function UTF8ToDos(StrIn:shortstring):shortstring;
public
{ public declarations }
end;
var
EmTestF: TEmTestF;
implementation
{$R *.lfm}
var Activated:boolean;
{********************************************************************}
procedure TEmTestF.FormOnCreate(Sender: TObject);
begin
Activated:=False;
end; { procedure TEmTestF.FormOnCreate }
{********************************************************************}
procedure TEmTestF.FormOnActivate(Sender: TObject);
begin
if Not Activated then
begin
Activated:=True;
EmTestF.LBAttach.Items.Clear;
// árvíztűrő tükörfúrógép - test string with hungarian chars
// ÁRVÍZTŰRŐ TÜKÖRFÚRÓGÉP
end; { if Not Activated then }
end; { procedure TEmTestF.FormOnActivate }
{********************************************************************}
procedure TEmTestF.BAddAttachClick(Sender: TObject);
begin
if EmTestF.OpenDlg.Execute then
begin
TIdAttachmentFile.Create(EmTestF.IdMsg.MessageParts,EmTestF.OpenDlg.FileName);
EmTestF.LBAttach.Items.Add(EmTestF.OpenDlg.FileName);
end; { if EmTestF.OpenDlg.Execute then }
end; { procedure TEmTestF.BAddAttachClick }
{********************************************************************}
function TEmTestF.UTF8ToDos(StrIn:shortstring):shortstring;
{ Needs this conversion subroutine that the hungarian characters }
{ should be displayed correctly by the receiver }
var s0,s1:shortstring;
i:word;
begin
s0:=StrIn;
s1:='';
if Length(s0)>0 then
for i:=1 to Length(s0) do
if Not(s0
in [#$C3,#$C5]) then
case s0 of
#$AD:s1:=s1+#$ED; { í }
#$A9:s1:=s1+#$E9; { é }
#$A1:s1:=s1+#$E1; { á }
#$B1:s1:=s1+#$FB; { ű }
#$91:s1:=s1+#$F5; { ő }
#$BA:s1:=s1+#$FA; { ú }
#$B6:s1:=s1+#$F6; { ö }
#$BC:s1:=s1+#$FC; { ü }
#$B3:s1:=s1+#$F3; { ó }
#$8D:s1:=s1+#$CD; { Í }
#$89:s1:=s1+#$C9; { É }
#$81:s1:=s1+#$C1; { Á }
#$B0:s1:=s1+#$DB; { Ű }
#$90:s1:=s1+#$D5; { Ő }
#$9A:s1:=s1+#$DA; { Ú }
#$96:s1:=s1+#$D6; { Ö }
#$9C:s1:=s1+#$DC; { Ü }
#$93:s1:=s1+#$D3; { Ó }
else
if Byte(s0)<=128 then
s1:=s1+s0
else
s1:=s1+'_';
end; { case }
UTF8ToDos:=s1;
end; { function TEmTestF.ConvertUTF8ToDos }
{*******************************************************************}
procedure TEmTestF.BSendClick(Sender: TObject);
var i:word;
s0:shortstring;
begin
EmTestF.IdSMTP.Host:=EmTestF.LESMTP.Text;
EmTestF.IdSMTP.Port:=25;
EmTestF.IdSMTP.AuthType:=satNone;
EmTestF.IdSMTP.Username:=EmTestF.LEUsername.Text;
// EmTestF.IdMsg.AttachmentEncoding:='MIME';
// EmTestF.IdMsg.Encoding:=meMIME;
EmTestF.IdMsg.NoDecode:=False;
EmtestF.IdMsg.NoEncode:=False;
EmTestF.IdMsg.Recipients.EMailAddresses:=EmTestF.LEAddresses.Text;
EmTestF.IdMsg.From.Text:=EmTestF.LEFrom.Text;
EmTestF.IdMsg.Subject:=EmTestF.UTF8ToDos(EmTestF.LESubject.Text);
EmTestF.IdMsg.CCList.EMailAddresses:=EmTestF.LECopies.Text;
EmTestF.IdMsg.BccList.EMailAddresses:=EmTestF.LEBCopies.Text;
EmTestF.IdMsg.Body.Clear;
for i:=0 to EmTestF.Memo1.Lines.Count-1 do
begin
s0:=EmTestF.Memo1.Lines;
s0:=EmTestF.UTF8ToDos(s0);
EmTestF.IdMsg.Body.Add(s0); { use this because TMemo has a bug with UTF8 }
end; { for }
EmTestF.Memo1.Lines.SaveToFile('memo1.txt');
try
EmTestF.IdSMTP.Connect;
try
EmTestF.IdSMTP.Send(EmTestF.IdMsg);
except
ShowMessage('Cannot send the email !');
end; { try }
EmTestF.IdSMTP.Disconnect;
except
ShowMessage('Cannot connect to SMTP server !');
end; { try }
if EmTestF.IdMsg.MessageParts.Count>0 then
EmTestF.IdMsg.MessageParts.Clear;
end; { procedure TEmTestF.BSendClick }
{********************************************************************}
procedure TEmTestF.FormOnClose(Sender: TObject; var CloseAction: TCloseAction);
begin
Activated:=False;
CloseAction:=caFree;
end; { procedure TEmTestF.FormOnClose }
{********************************************************************}
end.
---------------------------------------------------------------------------------------------------------------------------------------
Thank You very much for everybody who tried to help me and helped a lot
Sincerelly
Zoltán