AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Email mit JclSimpleSendMail

Ein Thema von harfes · begonnen am 7. Jun 2023 · letzter Beitrag vom 21. Jun 2023
Antwort Antwort
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#1

Email mit JclSimpleSendMail

  Alt 7. Jun 2023, 11:01
Ich nutze JclSimpleSendMail zum Erstellen einer Email in Outlook:

function JclSimpleSendMail(const ARecipient, AName, ASubject, ABody: AnsiString; const AAttachment: TFileName; AShowDialog: Boolean = True; AParentWND: THandle = 0; const AProfileName: AnsiString = ''; const APassword: AnsiString = ''): Boolean;

Aufruf durch:
JclSimpleSendMail(emailATN,'','Nachricht von XYZ',emailBody,'',True,0,'','');

Diese wird korrekt im Outlook angezeigt (fertig zum Versenden) - soweit so gut. ABER: wenn ich nun aus meinem Programm heraus mehrere Emailadressen übergebe (ich "addiere" dazu einfach die Strings der Emailadressen und platziere dazwischen ein Semikolon (emailATN:=emailATN+';'+emailTN -> also z.B. ist ARecipient bzw emailATN dann "a@b.de; b@c.com").
Das Problem: habe ich nur eine Emailadresse, dann versendet Outlook das problemlos, habe ich aber zwei oder mehr Emailadressen, dann "interpretiert" Outlook das als eine Emailadresse und der Versand funktioniert nicht (bzw kommt vom Provider mit der Fehlermeldung zurück, dass die Emailadresse nicht ok sei). Kopiere ich den gesamten String der Empfänger in den Editor und von da wieder zurück in Outlook, dann werden die Empfänger als einzelnen Empfänger angesehen/verarbeitet und das Versenden funktioniert.

Was läuft da falsch???

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Email mit JclSimpleSendMail

  Alt 7. Jun 2023, 11:21
Siehe Doku:
https://wiki.delphi-jedi.org/wiki/JC...SimpleSendMail
"JclSimpleSendMail sends an e-mail with optionally an attachment to 1 recipient."

Intern wird, wie du leicht im Quelltext sehen kannst, AJclEmail.Recipients.Add benutzt. Dort könnte man den String natürlich splitten und mehrere entsprechend einzeln hinzufügen. Das ist aktuell aber nicht so. Meiner Meinung nach spricht da aber auch nichts dagegen. Du könntest es also ändern und einen entsprechenden Pull Request machen.

Ansonsten heißt das nicht umsonst simple. Wenn du mehr möchtest, solltest du die dahinter verwendeten Mailfunktionen direkt nutzen. Wie das geht siehst du im Quelltext (Funktion SimpleSendHelper). Die Funktion umfasst auch nur wenige Zeilen und die kannst du auch schlicht kopieren und anpassen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Email mit JclSimpleSendMail

  Alt 7. Jun 2023, 11:55
Tja, immer diese Feinheiten...danke für die Info, Sebastian! Das mit dem "to 1 recipient" hatte ich glatt übersehen.

ABER: ich Frage mich schon, warum Outlook das anders "interpretiert", denn es wird ja eigentlich nur ein String übergeben (der dann inhaltlich aus mehreren Emailadressen besteht). Dann werde ich mir den Quelltext mal näher anschauen (müssen). Oder gibt es eine fertige/andere Alternative?

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.349 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Email mit JclSimpleSendMail

  Alt 7. Jun 2023, 12:34
ABER: ich Frage mich schon, warum Outlook das anders "interpretiert", denn es wird ja eigentlich nur ein String übergeben (der dann inhaltlich aus mehreren Emailadressen besteht).
Die Eingabe wird in der Oberfläche gemacht, dann auseinandergenommen und die Liste der Adressen dann intern verarbeitet. Die Eingabe in der Oberfläche und die Darstellung dort hat nichts mit der Logik dahinter zu tun. Und du verwendest nur die Logik, keine komplette Oberfläche.

Dann werde ich mir den Quelltext mal näher anschauen (müssen). Oder gibt es eine fertige/andere Alternative?
Wie schon geschrieben: Der Quelltext aus der Funktion SimpleSendHelper, die in JclSimpleSendMail verwendet wird, lässt sich leicht erweitern und ist auch sehr kurz (20 Zeilen oder so).
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Email mit JclSimpleSendMail

  Alt 8. Jun 2023, 07:22
Es ist in der Tat recht einfach, von "Simple" auf ein bisschen mehr umzustellen - ich habe in den Examples von JCL folgendes Beispiel gefunden:

1 SimpleMapiMail := TJclEmail.Create;
// Creating message using TJclEmail object, it is more flexible, but you have
// to create an instance (SimpleMapiMail variable in this example) of the class
2 SimpleMapiMail.Clear;
3 SimpleMapiMail.Recipients.Add(AnsiString(ToAddress Edit.Text), AnsiString(ToNameEdit.Text));
4 SimpleMapiMail.Subject := AnsiString(SubjectEdit.Text);
5 SimpleMapiMail.Body := AnsiString(BodyEdit.Text);
6 SimpleMapiMail.HtmlBody := HtmlCheckBox.Checked;
7 SimpleMapiMail.Attachments.Add(AnsiString(OpenDial og1.FileName));
8 SimpleMapiMail.Send(True);

Ich habe mir eine kleine Routine geschrieben, die meinen Email-String in die einzelnen Emailadressen zerlegt und dann eine Schleife erzeugt, die die Zeile 3 einfach so oft hintereinander aufruft, bis alle Emailadressen eingetragen sind. Das war's! Kein Eingriff in den Quelltext notwendig. Noch ein Hinweis am Rande: in "SimpleMapiMail.Recipients.Add(ARecipient,'',rkBCC ,''); //rkTO //rkCC //rkBCC" kann an der dritten Position entschieden werden, wo die Emailadressen zugefügt werden - entweder AN(rkTO), CC(rkCC) oder BCC(rkBCC).

Jetzt kämpfe ich noch mit dem Body: da bei diesem Aufruf von Outlook nicht die hinterlegte Signatur aufgerufen wird, lade ich diese im Moment aus einer Text-Datei (mit FileLoad). Lieber hätte ich aber eine formatierte RTF-Datei (oder auch HTML?). Da habe ich noch keinen Weg gefunden - wer da eine Idee hat, bitte gerne posten. Oder gibt es doch einen Weg, die Outlook-Signatur zu laden?

Hartmut
Hartmut
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Email mit JclSimpleSendMail

  Alt 21. Jun 2023, 13:38
Die Signatur habe ich jetzt aus einer html-Datei geladen und diese wird auch korrekt angezeigt (und HtmlBody wurde auf True gesetzt). Soweit so gut. Wenn ich jetzt die Email versende, dann geschiet folgendes:

1. der/die Empfänger erhalten eine leere Email (keine Sinatur, kein evtl. zusätzlich eingefügter Text) - der vom Programm eingesetzte Betreff ist aber ok
2. die Email wird nicht im Ordner "Gesendete" von Outlook gespeichert

Hat jemand eine Idee, was die Ursache für die beiden Probleme sein kann???

Hartmut
Hartmut
  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 07:24 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