AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Mail Indy unter IOS kein Anhang sichtbar
Thema durchsuchen
Ansicht
Themen-Optionen

Mail Indy unter IOS kein Anhang sichtbar

Ein Thema von arnof · begonnen am 13. Mai 2018 · letzter Beitrag vom 14. Mai 2018
Antwort Antwort
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Mail Indy unter IOS kein Anhang sichtbar

  Alt 13. Mai 2018, 13:06
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

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;

Geändert von arnof (13. Mai 2018 um 13:23 Uhr)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Mail Indy unter IOS kein Anhang sichtbar

  Alt 14. Mai 2018, 07:55
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
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Mail Indy unter IOS kein Anhang sichtbar

  Alt 14. Mai 2018, 10:31
nach gefühlten 1000 Testmail habe ich es nun hinbekommen, so das es überall richtig dargestellt wird:

IdMessage1.ContentType := 'multipart/mixed;';
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Mail Indy unter IOS kein Anhang sichtbar

  Alt 14. Mai 2018, 10:42
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;

Geändert von arnof (14. Mai 2018 um 10:45 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 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