AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy MTP multipart/mixed mit nur einem Teil
Thema durchsuchen
Ansicht
Themen-Optionen

Indy MTP multipart/mixed mit nur einem Teil

Ein Thema von hoika · begonnen am 28. Jun 2019 · letzter Beitrag vom 1. Jul 2019
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

Indy MTP multipart/mixed mit nur einem Teil

  Alt 28. Jun 2019, 13:48
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?
Heiko
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#2

AW: Indy MTP multipart/mixed mit nur einem Teil

  Alt 28. Jun 2019, 14:44
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');
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Indy MTP multipart/mixed mit nur einem Teil

  Alt 28. Jun 2019, 14:50
Hallo,
danke schön.
Probiere ich nachher gleich mal aus.
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Indy MTP multipart/mixed mit nur einem Teil

  Alt 1. Jul 2019, 07:26
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".
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Indy MTP multipart/mixed mit nur einem Teil

  Alt 1. Jul 2019, 08:34
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.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Indy MTP multipart/mixed mit nur einem Teil

  Alt 1. Jul 2019, 09:09
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.
Heiko

Geändert von hoika ( 1. Jul 2019 um 15:06 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 18:44 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