Einzelnen Beitrag anzeigen

Informatik2012

Registriert seit: 30. Mai 2011
30 Beiträge
 
#1

IdSMTP sendet nicht und IdMessage wird nicht gespeichert.

  Alt 15. Apr 2012, 15: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.
  Mit Zitat antworten Zitat