![]() |
E-Mail senden
Guten Tag Delphianer,
ich möchte eine E-Mail senden. Im Body der E-Mail befindet sich ein Bild. Wenn ich nun die E-Mail sende, wird der Text korrekt übermittelt, aber das Bild im Body nicht. Nun habe ich schon verschiedene ContentType ausprobiert, aber es gelingt nicht.
Delphi-Quellcode:
Welchen ContentType muss ich nehmen? Oder liegt es am CharSet??
idmsgSendeMail.ContentType := 'multipart/mixed';
idmsgSendeMail.CharSet := 'UTF-8'; // idmsgSendeMail.ContentType := 'multipart/Image; // idmsgSendeMail.CharSet := 'windows-1256'; idmsgSendeMail.ContentTransferEncoding := '64bit'; Weiß mir keinen Rat mehr. Vielleicht hat ja jemand eine Lösung?? Mit gruß HPB |
AW: E-Mail senden
Ich hatte mal ein
![]() Das sollte zum Testen genügen. Inline - Images erfordern schon ein paar besondere Bemühungen... Frank |
AW: E-Mail senden
Indy 10 hat da schon was vorbereitet:
Delphi-Quellcode:
uses
IdMessageBuilder, IdMessage; procedure TForm1.Button2Click( Sender: TObject ); var b: TIdMessageBuilderRtf; m: TIdMessage; s: TStringStream; begin s := TSTringStream.Create; try RichEdit1.Lines.SaveToStream( s ); m := TIdMessage.Create( nil ); try b := TIdMessageBuilderRtf.Create; try s.Position := 0; b.Rtf.LoadFromStream( s ); b.FillMessage( m ); finally b.Free; end; // Wir zeigen die Mail einfach nur mal an s.Clear; m.SaveToStream( s ); finally m.Free; end; ShowMessage( s.DataString ); finally s.Free; end; end; |
AW: E-Mail senden
Falls du ein Bild mitsenden möchtest, habe ich eine fertige Funktion dafür:
In ImageFiles stehen die Bilder mit Pfad drinnen. Diese Indy Units werden benötigt:
Code:
Komponente idSMTP liegt bei mir in einer Form, kannst aber mitgeben oder createn etc. wie du möchtest.
IdSMTPBase, IdSMTP, IdMessage, IdMessageParts, IdText, IdAttachment, IdAttachmentFile, idGlobal
Code:
function TMailThread.SendMail(ToAddress, Subject : String; MailText : String; ImageFiles : TStringDynArray) : Boolean;
var IdMessage: TIdMessage; lTextPart: TIdText; idAttachment: TIdAttachment; Stream: TStream; Enc: TIdTextEncoding; i : Integer; begin Result := False; IdMessage := TIdMessage.Create(nil); IdMessage.Subject := Subject; with IdMessage do begin ContentType := 'multipart/related; type="text/html"'; CharSet:= 'ISO-8859-1'; ContentTransferEncoding := 'quoted-printable'; From.Address := MailSettings.FromAddress; From.Name := MailSettings.FromName; Recipients.EMailAddresses := ToAddress; end; with TIdText.Create(IdMessage.MessageParts, nil) do begin Body.Text := MailText; ContentType := 'text/html'; CharSet := 'ISO-8859-1'; end; for i := 0 to High(ImageFiles) do with TIdAttachmentFile.Create(IdMessage.MessageParts, ImageFiles[i]) do begin ContentID := 'image' + IntToStr(i+1); ContentType := 'image/jpeg'; end; try IdSMTP.Send(IdMessage); Result := True; finally IdMessage.Free; end; end; |
AW: E-Mail senden
Guten Tag Delphianer,
vielen Dank für Eure Hilfe. Zu Koloss es sollen keine Dateien angehängt werden. Sondern das Bild das im Body eingefügt worden ist, soll mit übertragen werden. Zu SirRufo Ich benutze eine TADVRichEditor-Komponente. Diese Komponente kennt die Eigenschaft "Lines" nicht. Zu Dataspider Den begefügten Quellcode werde ich mir mal ansehen. Vielleicht weiss ja jemand noch eine andere Lösung? Mit Gruß HPB |
AW: E-Mail senden
Moin,
Zitat:
![]() Seite 12 erste Zeile lautet: SaveToStream(const AStream: TStream); Save a document in the .RTE file format to stream mfg S.Simon |
AW: E-Mail senden
Zitat:
Welches Format benutzt du für Bodytext - RTF oder HTML? Bei RTF kannst du ja Sir Rufo' s Vorschlag testen. Ich habe nie RTF benutzt, weil oft vor der Benutzung gewarnt wird. Es kann wohl nicht jeder Client damit umgehen. Bei HTML musst du die Bilder "rausholen", die werden als Anhang versendet. Dann kannst du mein Beispiel benutzen. Es bleibt dann das Problem der Trennung von Text und Bild. Und ich habe bisher außer WPTools nichts gefunden, was das kann. Frank |
AW: E-Mail senden
Oder man bindet das Bild Base64-kodiert direkt in den
![]() |
AW: E-Mail senden
So ähnlich wie in #4 beschrieben funktioniert das mit den Indies sehr gut. Hier mal mein Beispiel dazu. Ich verwende es unter Anderem um Mahnungen per E-Mail zu versenden. Hier darf auch keine separate Dateianlage vorhanden sein. Die Grafik muss direkt in den HTML-Text eingebunden sein.
Delphi-Quellcode:
function MeinMailVersand(const aAbsender,
aMailCopyTo, aUserName, aHost, aPassword, aEmpfaenger, aSubject, aTextBody, aHtmlBody, aDateianlage: string; var aMsg: string) : boolean; var Html: TStrings; HtmPart, TxtPart: TIdText; SMTP: TIdSMTP; BmpPart: TIdAttachmentFile; EMail: TIdMessage; begin aMsg := ''; Result := false; EMail := nil; Html := nil; SMTP := nil; try SMTP := TIdSMTP.Create; Html := TStringList.Create; EMail := TIdMessage.Create(nil); {-HTML-Daten-} Html.Add('<html>'); Html.Add('<head>'); Html.Add('</head>'); Html.Add('<body>'+aHtmlBody); Html.Add('<img src="cid:us.jpg" />'); Html.Add('</body>'); Html.Add('</html>'); {-Mail-Daten-} EMail.From.Address := aAbsender; EMail.Recipients.EMailAddresses := aEmpfaenger; EMail.Subject := aSubject; EMail.ContentType := 'multipart/mixed'; EMail.Body.Assign(Html); {-Lesebestätigung-} EMail.ExtraHeaders.AddValue('Disposition-Notification-To', aAbsender); {-Text-Part-} if aTextBody <> '' then begin TxtPart := TIdText.Create(email.MessageParts); TxtPart.ContentType := 'text/plain'; TxtPart.Body.Text := aTextBody; end; {-Dateianlage-} HtmPart := TIdText.Create(email.MessageParts, html); HtmPart.ContentType := 'text/html'; BmpPart := TIdAttachmentFile.Create(EMail.MessageParts, aDateianlage); BmpPart.ContentType := 'image/jpeg'; BmpPart.ContentDisposition := 'inline'; BmpPart.ExtraHeaders.Values['content-id'] := 'us.jpg'; BmpPart.DisplayName := 'us.jpg'; {-Benutzerdaten-} SMTP.Username := aUserName; SMTP.Host := aHost; SMTP.Password := aPassword; {-fertig zum Versenden-} try SMTP.Connect; try SMTP.Send(EMail); if aMailCopyTo <> '' then begin EMail.Subject := '[Kopie E-Mail an ' + aEmpfaenger+ '] - ' + EMail.Subject; EMail.Recipients.EMailAddresses := aAbsender; EMail.ExtraHeaders.Clear; SMTP.Send(EMail); end; aMsg := 'E-Mail an <'+aEmpfaenger+'> erfolgreich gesendet um ' + DateTimeToStr(Now); Result := True; except on E: Exception do aMsg := 'Fehler beim Mail-Versand: ' + E.Message; end; finally SMTP.Disconnect; end; finally EMail.Free; Html.Free; SMTP.Free; end; end; |
AW: E-Mail senden
Der TE hat ein RTF Dokument was er als Mail versenden möchte (ja, hat er im ersten Beitrag nicht explizit geschrieben und dafür gibt es auch noch hinten einen drauf :mrgreen:)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz