Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Indy MTP multipart/mixed mit nur einem Teil (https://www.delphipraxis.net/201165-indy-mtp-multipart-mixed-mit-nur-einem-teil.html)

hoika 28. Jun 2019 13:48

Indy MTP multipart/mixed mit nur einem Teil
 
Hallo,
klingt etwas komisch, kommt aber nicht von mir.

Ich soll eine Multipart-Message erzeugen, obwohl die E-Mail keinen Body und nur einen Anhang hat,
also nur einen "Part" hat.

Weiss jemand, wie das mit Indy geht, ohne das ich tief in den Quellen rumfummeln muss.

Ist das überhaupt erlaubt?

Delphi.Narium 28. Jun 2019 14:44

AW: Indy MTP multipart/mixed mit nur einem Teil
 
Die Anforderung ist ok.

'nen Body muss man nicht haben, bzw. bei Multipart hat man dann (vermutlich) mehrere leere Bodys. Einmal nix als Text-Body und einmal nix als HTML-Body.

Anhänge können 0 bis n sein.

Nur mal so hingesponnen:
Delphi-Quellcode:
  IdMessage.Clear;
  IdMessage.ClearBody;
  IdMessage.ClearHeader;
  IdMessage.MessageParts.Clear;
  IdMessage.Date                     := Now;
  IdMessage.From.Address             := 'hoika@irgendwas.de';
  IdMessage.Recipients.EMailAddresses := 'Delphi.Narium@woanders.de';
  IdMessage.ReplyTo.EMailAddresses   := 'eventuell@irgendwas.anderes';
  IdMessage.Subject                  := 'Das soll jetzt echt ''ne Mail werden?';
  IdMessage.Sender.Address           := 'hoika@irgendwas.de';
  IdMessage.UseNowForDate            := True;
  IdMessage.ContentType              := 'multipart/mixed';
  IdMessage.Body.Text                := '';
  TIDAttachment.Create(IdMessage.MessageParts,'C:\Temp\IrgendeineDatei.IrgendeineEndung');

hoika 28. Jun 2019 14:50

AW: Indy MTP multipart/mixed mit nur einem Teil
 
Hallo,
danke schön. :)
Probiere ich nachher gleich mal aus.

hoika 1. Jul 2019 07:26

AW: Indy MTP multipart/mixed mit nur einem Teil
 
Hallo,
das habe ich mir genau so gedacht.
Klappt natürlich nicht ;(

Indy erzeugt eine multipart-Message nur, wenn mindestens 2 Anhänge da sind.
Bei genau einem Anhang wird der Teil des Bodys.
Das ist auch normaler RFC-Standard.

Nur mein Ziel-Mail-Server will das nicht so haben.

Also doch wieder rein in die Quellen wie beim letzten "Fehler".

Codehunter 1. Jul 2019 08:34

AW: Indy MTP multipart/mixed mit nur einem Teil
 
Ja solche Non-Standard-Dienste kosten mir auch öfters mal viel Zeit. Wobei mich schon wundert dass Indy sich da so zickig hat. Versuch doch mal, den Anhang zuerst zu erzeugen und dann erst den Mime-Typ zuzuweisen.

hoika 1. Jul 2019 09:09

AW: Indy MTP multipart/mixed mit nur einem Teil
 
Hallo,
die folgende Zeile aus IdMessage.pas verursacht das Problem

FIsMsgSinglePartMime := (Encoding = meMIME) and (MessageParts.Count = 1) and IsBodyEmpty;

Hier wird in meinem FIsMsgSinglePartMime=True
und damit wird der Anhang in den Body geschrieben.

Quellcode sei dank habe ich das jetzt umschifft mit einer zusätzlichen Variable in TIdMessage (bSinglePartMime: Boolean)

Delphi-Quellcode:
if not bSinglePartMime then
begin
  FIsMsgSinglePartMime := (Encoding = meMIME) and (MessageParts.Count = 1) and IsBodyEmpty;
  FIsMsgSinglePartMime:= False;
end;

Zumindestens das Problem ist erledigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:38 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