Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Mail Indy unter IOS kein Anhang sichtbar (https://www.delphipraxis.net/196334-mail-indy-unter-ios-kein-anhang-sichtbar.html)

arnof 13. Mai 2018 12:06

Mail Indy unter IOS kein Anhang sichtbar
 
Hi,

ich Maile erfolgreich mit INDY und mit Outlook, Gmail, usw. ist alles so wie gewünscht.

Unter IOS (Exchange 2016 Postfach) ist aber kein Anhang sichtbar, obwohl er in der Mail ist (gleiches Postfach).

Kennt jemand eine Lösung ?

Ich denke es liegt an irgendeiner Kodierungseinstellung :?:

Delphi-Quellcode:
IdMessage1.ContentType := 'multipart/related; type="text/plain'; ///"text/html"'; //'text';


hier mal meine Mailfunktion incl. SSL support:

Delphi-Quellcode:
function TDataModule1.Mail(an,cc,bcc,subject,bodytext,att:string):boolean;
var Zaehler,
    Anzahl,i      : LongInt;
    IdMessage1     : TIdMessage;
    IdPart        : TIdMessageParts;
    IdAtt         : TIdAttachmentFile;
    str           : TStringList;
begin
  IdMessage1:=Nil;
  if IdSMTP1.Connected then IdSMTP1.Disconnect;
  //
  //
  // Einrichten
  IdSMTP1.Host:=SMTP_Server;
  IdSMTP1.Username:=SMTP_USER;
  IdSMTP1.Port:=StrToInt(SMTP_PORT);
  IdSMTP1.Password:=SMTP_Pass;
  IdSMTP1.MailAgent:='AFS-Messeplanner';
  //
  if IdSMTP1.Port>25 then begin
   IdSSLIOHandlerSocketOpenSSL1.Destination:=IdSMTP1.Host+':'+IntToStr(IdSMTP1.Port);
   IdSSLIOHandlerSocketOpenSSL1.Host:=IdSMTP1.Host;
   IdSSLIOHandlerSocketOpenSSL1.Port:=IdSMTP1.Port;
   IdSMTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
   IdSMTP1.UseTLS:=utUseExplicitTLS;
  end;
  //
  //Write_Protokoll('Mail config Port: '+SMTP_PORT+' '+IdSMTP1.Host);
  result:=False; // wird bei onConnect auf True gesetze
  try
    IdSMTP1.Connect;
  except
   on E: Exception do begin
    Write_Protokoll('Es konnte keine Verbindung aufgebaut werden!'+#13+e.Message);
   end;
  end;
  //
  //Write_Protokoll('connected: '+IdSMTP1.Connected.ToString+' '+att);
  //
  str:=TStringList.Create;
  IdMessage1:=TIdMessage.Create(self);
  //
  IdMessage1.From.Address:=SMTP_Mail;
  IdMessage1.From.DisplayName:=SMTP_MailDisplay;
  //
  IdMessage1.ContentType := 'multipart/related; type="text/plain'; ///"text/html"'; //'text';
  IdMessage1.CharSet:='UTF-8';
  IdMessage1.Subject:= AnsiToUtf8(subject);
  if Trim(IdMessage1.Subject)='' then IdMessage1.Subject:='kein Betreff';
  IdMessage1.Body.Text:=AnsiToUtf8(bodytext);
  //
  with TIdText.Create(IdMessage1.MessageParts, nil) do
  begin
    Body.Text := AnsiToUtf8(bodytext);
    ContentType := 'text/plain';
    CharSet:='UTF-8';
  end;
  //
  if trim(att)<>'' then begin
   str.Text:=att;
   for i:=0 to str.Count-1 do begin
    if FileExists(Trim(str[i])) then begin
     IdAtt:=TIdAttachmentFile.Create(IdMessage1.MessageParts,Trim(str[i]));
    end;
   end;
  end;
  //
  str.Text:=an;
  if str.Count>0 then begin
     for i:=str.Count-1 downto 0 do begin
      if p_Instr(1,str[i],'@')>0 then begin
       if IdMessage1.Recipients.EMailAddresses<>'' then IdMessage1.Recipients.EMailAddresses:=IdMessage1.Recipients.EMailAddresses+';';
       IdMessage1.Recipients.EMailAddresses :=IdMessage1.Recipients.EMailAddresses+str[i];
      end;
     end;
  end;
  str.Text:=cc;
  IdMessage1.ccList.EMailAddresses:='';
  if str.Count>0 then begin
     for i:=0 to str.Count-1 do begin
      if p_Instr(1,str[i],'@')>0 then begin
       if IdMessage1.ccList.EMailAddresses<>'' then IdMessage1.ccList.EMailAddresses:=IdMessage1.ccList.EMailAddresses+';';
       IdMessage1.ccList.EMailAddresses :=IdMessage1.ccList.EMailAddresses+str[i];
      end;
     end;
  end;
  str.Text:=bcc;
  IdMessage1.BccList.EMailAddresses:='';
  if str.Count>0 then begin
     for i:=0 to str.Count-1 do begin
      if p_Instr(1,str[i],'@')>0 then begin
       if IdMessage1.BccList.EMailAddresses<>'' then IdMessage1.BccList.EMailAddresses:=IdMessage1.BccList.EMailAddresses+';';
       IdMessage1.BccList.EMailAddresses :=IdMessage1.BccList.EMailAddresses+str[i];
      end;
     end;
  end;
  //
  try
    IdSMTP1.Send(IdMessage1);
    result:=True;
  except
    on E: Exception do begin
     Write_Protokoll('es ist ein Fehler beim E-Mail senden aufgetreten!'+#13+e.Message);
    end;
  end;
  try
    if IdSMTP1.Connected then IdSMTP1.Disconnect;
    //
    FreeAndNil(IdMessage1);
    FreeAndNil(str);
    //
  except
  end;
end;

CCRDude 14. Mai 2018 06:55

AW: Mail Indy unter IOS kein Anhang sichtbar
 
In Deiner zitierten Zeile ist ein Quoting-Fehler.
Und was ist multipart/related?

https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html

Ich nehme an Du hast von dort kopiert und nicht gesehen, dass die schließenden Anführungszeichen in der nächsten Zeile folgen?

Warum nicht einfach multipart/mixed, ohne weiteren Krams?

Auch an der Fehlerbehandlung würde ich noch arbeiten, die Mail weiter zu verschicken zu versuchen, wenn schon das Connect scheitert, bringt ja nichts ;)

arnof 14. Mai 2018 09:31

AW: Mail Indy unter IOS kein Anhang sichtbar
 
nach gefühlten 1000 Testmail habe ich es nun hinbekommen, so das es überall richtig dargestellt wird:

Delphi-Quellcode:
IdMessage1.ContentType := 'multipart/mixed;';

arnof 14. Mai 2018 09:42

AW: Mail Indy unter IOS kein Anhang sichtbar
 
Zitat:

Zitat von CCRDude (Beitrag 1401994)
In Deiner zitierten Zeile ist ein Quoting-Fehler.
Und was ist multipart/related?

Auch an der Fehlerbehandlung würde ich noch arbeiten, die Mail weiter zu verschicken zu versuchen, wenn schon das Connect scheitert, bringt ja nichts ;)

Ja da haste Recht ....

für die, die das mal suchen und dann gefunden haben, hier nochmals verbesserte Fehlerbehandlung (ich weiss das kann man schöner machen) :

Delphi-Quellcode:
  result:=False; // wird bei onConnect auf True gesetze
  try
    IdSMTP1.Connect;
  except
   on E: Exception do begin
    Write_Protokoll('Es konnte keine Verbindung aufgebaut werden!'+#13+e.Message);
    Result:=False;
    Exit;
   end;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz