Registriert seit: 30. Mai 2011
30 Beiträge
|
IdSMTP sendet nicht und IdMessage wird nicht gespeichert.
15. Apr 2012, 16:50
Ich probiere hier aus und es funktioniert. Mein SMTPSocket sendet die Emails nicht und bringt beim Disconnecten eine Fehlermeldung.
Kann mir da jemand helfen? Hier der Quelltext:
Delphi-Quellcode:
function login_SMTP(Username,PW,Server : String;Port : Integer; SMTPSocket : TIdSMTP):boolean;
var SetUp : TEinstellungen;
SSLIOHandler : TIdSSLIOHandlerSocketOpenSSL;
begin
SetUp := LadeEinstellungen(Form2);
if SMTPSocket.Connected then
SMTPSocket.Disconnect();
SMTPSocket.Username := Username;
SMTPSocket.Password := PW;
SMTPSocket.Port := Port;
SMTPSocket.Host := Server;
if Setup.smtpssl = true then
begin
SSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create();
SSLIOHandler.PassThrough := True;
SSLIOHandler.StartSSL;
SMTPSocket.IOHandler:= SSLIOHandler;
SMTPSocket.UseTLS:=TIdUseTLS(2);
end else
begin
SMTPSocket.UseTLS:=utNoTLSSupport;
end;
SMTPSocket.AuthType := satDefault;
SMTPSocket.Connect;
Result := SMTPSocket.Connected;
end;
procedure logoff_SMTP(SMTPSocket : TIdSMTP);
begin
SMTPSocket.Disconnect();
end;
procedure sendMessage(Username,PW,Server : String;Port, Priority : Integer; fromMail,Betreff: String;Anhang : TStringList;toMail : TStringList;Nachricht : TRichEdit; SMTPSocket : TIdSMTP);
var IdNachricht : TIdMessage;
i : integer;
s : String;
IdAnhang : TIdAttachmentFile;
begin
if SMTPSocket.Connected = true then
begin
IdNachricht := TIdMessage.Create(nil);
with TIdText.Create(IdNachricht.MessageParts, nil) do
begin
ContentType := 'text/plain';
Body.Text := Nachricht.Text;
end;
s := '';
with IdNachricht do
begin
ContentType := 'multipart/*';
From.Text := fromMail;
ReplyTo.EMailAddresses := fromMail;
Subject := Betreff;
Priority := TIdMessagePriority(Priority);
s := BccList.EmailAddresses;
for i := 0 to toMail.Count -1 do
begin
s := s+ toMail.Strings[i];
end;
BccList.EMailAddresses := s;
end;
if Anhang.Count >= 1 then
begin
for i := 0 to Anhang.Count -1 do
IdAnhang := TIdAttachmentFile.Create(IdNachricht.MessageParts,Anhang[i]);
end;
SMTPSocket.SendMsg(IdNachricht);
end;
end;
procedure TFrame3.SpeedButton2Click(Sender: TObject);
var s,hToMail : String;
F : File;
i,k : integer;
leerArray : Array of Integer;
jahr,monat,tag,stunde,minute,sekunde,millisekunde : Word;
begin
SetUp:=ladeEinstellungen(Form2);
SMTPSocket := TIdSMTP.Create();
toMail := TStringList.Create;
s := Edit1.Text;
SetLength(leerArray,0);
for i := 1 to Length(s) do
begin
if s[i]=' ' then
begin
Setlength(leerArray,length(leerArray)+1);
leerArray[length(leerArray)-1] := i;
end;
end;
hToMail := '';
for i := 1 to leerArray[0]-1 do
begin
hToMail:=hToMail+s[i];
end;
toMail.Add(hToMail);
hToMail := '';
for i := 1 to length(leerArray)-1 do
begin
if i <= length(leerArray)-2 then
begin
for k := leerArray[i]+1 to leerArray[i+1]-1 do
begin
hToMail := hToMail+s[k];
end;
hToMail := '';
end
else
begin
for k := leerArray[length(leerArray)-1]+1 to length(s) do
begin
hToMail := hToMail + s[k];
end;
end;
end;
login_SMTP(SetUp.Username,SetUp.Passwort,SetUp.SMTPServer,SetUp.SMTPPOrt,SMTPSocket);
sendMessage(SetUp.Username,SetUp.Passwort,SetUp.SMTPServer,SetUp.SMTPPort,2,SetUp.Username,Edit2.Text,Attachment,toMail,Richedit1,SMTPSocket);
logoff_SMTP(SMTPSocket);
Showmessage('Gesendet');
NMessage := TIdMessage.Create();
NMessage.Body.Text := Richedit1.Text;
NMessage.Subject := Edit2.Text;
s := NMessage.BccList.EmailAddresses;
for i := 0 to toMail.Count -1 do
begin
s := s+ toMail.Strings[i];
end;
NMessage.BccList.EMailAddresses := s;
NMessage.Date := Now;
s:=DateToStr(NMessage.Date);
CreateFile(PWideChar(extractfilepath(paramstr(0))+'\MailClient\Mails\gesendet\'+NMessage.Subject+s+'.msg'),0,0,0,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,0);
NMessage.SaveToFile(extractfilepath(paramstr(0))+'\MailClient\Mails\gesendet\'+NMessage.Subject+s+'.msg');
Form2.Frame51.ListBox1.Items.Add('gesendet');
Form2.Frame51.ListBox2.Items.Add(NMessage.BccList.EMailAddresses);
Form2.Frame51.ListBox3.Items.Add(NMessage.Subject);
Form2.Frame51.ListBox4.Items.Add(inttostr(tag)+'.'+inttostr(monat)+'.'+inttostr(jahr)+' '+inttostr(stunde)+':'+inttostr(minute)+'.'+inttostr(Sekunde));
end;
Also Das SaveToFile gibt eine Fehlermeldung dass es nicht zu speichern geht. und beim logoff kommt auch eine, sodass die Nachricht nicht gesendet wird.
|
|
Zitat
|