![]() |
Delphi: E-Mail-Versand / E-Mail-Formatierung
Hi. In einem meiner Programm will ich den Benutzern die Möglichkeit geben, mir E-Mails zu senden. Meine Vorstellung ist, daß dafür ein Fenster existiert mit zwei Textfeldern. Deren Werte sollen mir auf Knopfdruck zugesandt werden können (an meine Yahoo-E-Mail-Adresse). Hat jemand so etwas schon mal gemacht? Wie kann ich dies erreichen?
|
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
Mit einer brauchbaren SMTP Komponente und den Zugangsdaten, oder per Outlook mit den üblichen Warnmeldungen die der Benutzer bestätigen muss.
|
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
Kommt Delphi (in meinem Fall die Version 7) mit eigenen SMTP-Komponenten daher? Ich habe mich mal in dessen "Internet"-Registerkarte umgesehen, aber nichts gefunden, was direkt "SMTP" im Namen hat.
Ansonsten wäre meine resultierende Frage, ob Du mir bestimmte SMTP-Komponenten anderer Entwickler nennen kannst, falls Du da etwas wissen solltest. Vorzugsweise FreeWare. Ich werde mich auch noch mal im Internet umschauen, aber direkte Hinweise sind mir auch ganz Recht. |
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
-INDY
-Synapse -ICS |
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
|
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
Eine Alternative zu SMTP und oder Outlook wäre, dass du das Ganze über ein PHP-Script auf einem Webspace machst. Kostenlosen Webspace gibt es zum Beispiel bei funpic.de (oder vielleicht hast du schon einen)
An das kleine PHP-Script sendest du mittels TIdHTTP.Post ( ![]() Im PHP-Script werden die Daten dann mit $_POST['...'] eingelesen und mit der mail(...)-Methode als E-Mail verschickt. Das Ganze hat den Vorteil, dass du kein extra E-Mail Konto angeben musst, wie bei SMTP, aber den Nachteil, dass, wenn du den Webspace nicht mehr haben willst, es nicht mehr funktioniert. |
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
Hallo Sven(?),
falls Du damit leben kannst, daß der Mail-Client (z.B. Outlook) sichtbar gestartet wird und die Mail vom Anwender interaktiv verschickt werden muß (evtl. mal rumspielen mit Parameter MAPI_DIALOG etc.), hier eine Unit mit Code zum Verschicken via MAPI:
Delphi-Quellcode:
Hier wird aber nur 1 Attachment verschickt. Falls mehr als 1 Datei angehängt werden soll, könntest Du entweder den Code modifizieren (lpFiles/nFileCount) oder mehrere Anhängsel in ein ZIP o.ä. packen und dieses anhängen.
unit uMapi;
interface uses Mapi; function SendMailviaMAPI(aSubject, aBody, aFileName, aSenderName, aSenderEMail, aRecepientName, aRecepientEMail: string): integer; implementation uses Forms; function SendMailviaMAPI(aSubject, aBody, aFileName, aSenderName, aSenderEMail, aRecepientName, aRecepientEMail: string): integer; var MapiMessage: TMapiMessage; lpSender, lpRecepient: TMapiRecipDesc; MapiFileDesc: TMapiFileDesc; begin FillChar(MapiMessage, SizeOf(MapiMessage), 0); with MapiMessage do begin if (aSubject <> '') then lpszSubject := PChar(aSubject); if (aBody <> '') then lpszNoteText := PChar(aBody); if (aSenderEMail <> '') then begin lpSender.ulRecipClass := MAPI_ORIG; if (aSenderName = '') then lpSender.lpszName := PChar(aSenderEMail) else lpSender.lpszName := PChar(aSenderName); lpSender.lpszAddress := PChar('SMTP:' + aSenderEMail); lpSender.ulReserved := 0; lpSender.ulEIDSize := 0; lpSender.lpEntryID := nil; lpOriginator := @lpSender; end; if (aRecepientEMail <> '') then begin lpRecepient.ulRecipClass := MAPI_TO; if (aRecepientName = '') then lpRecepient.lpszName := PChar(aRecepientEMail) else lpRecepient.lpszName := PChar(aRecepientName); lpRecepient.lpszAddress := PChar('SMTP:' + aRecepientEMail); lpRecepient.ulReserved := 0; lpRecepient.ulEIDSize := 0; lpRecepient.lpEntryID := nil; nRecipCount := 1; lpRecips := @lpRecepient; end else lpRecips := nil; if (aFileName = '') then begin nFileCount := 0; lpFiles := nil; end else begin FillChar(MapiFileDesc, SizeOf(MapiFileDesc), 0); MapiFileDesc.nPosition := Cardinal($FFFFFFFF); MapiFileDesc.lpszPathName := PChar(aFileName); nFileCount := 1; lpFiles := @MapiFileDesc; end; end; // with MapiMessage Result := MAPISendMail(0, Application.Handle, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI {or MAPI_NEW_SESSION}, 0); if (Result = MAPI_USER_ABORT) then Result := SUCCESS_SUCCESS; end; // SendMailviaMAPI end. Gruß, blauweiss |
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
Hi Sven !
Wenn Du die Jedi Komponenten verwendest, dann kannst Du auch tJvMail benutzen. Die Komponente ist wirklich sehr einfach zu bedienen.
Delphi-Quellcode:
Die Übertragung erfolgt über das Standard-Mail-Programm.
procedure TForm1.SendButtonClick(Sender: TObject);
begin JvMail1.Subject := SubjectEdit.Text; JvMail1.Recipient.Clear; with JvMail1.Recipient.Add do Address := RecipientEdit.Text; JvMail1.Body.Text := BodyMemo.Lines.Text; JvMail1.SendMail(true); end; Auch die Verwendung von Attachments (über StringListe von Dateinamen), CarbonCopy und BlindCopy (wie Recipient) ist möglich. Einen Haken hat die Sache : Über den Parameter bei JvMail1.SendMail kannst Du einstellen, ob der Editor des Mailprogramms geöffnet werden soll. Wählst Du hier false, so erscheint ein Dialog des Mailprogramms, der darauf hinweist, dass ein anderes Programm versucht eine Mail zu versenden und nachfragt, ob dies OK ist. - Automatisches Senden im Hintergrund, bspw. für automatische Berichte, funktioniert also nicht. Ein Klick auf "Senden" ist immer erforderlich. Gruß Guido |
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
Hi. Vielen Dank zuerst einmal für Eure vielen Ratschläge, Anregungen und Ideen! :-)
Ich will die Benutzung externer anderer Programme vermeiden, da ich davon ausgehen muß, daß nicht jeder solche Programme besitzt bzw. benutzt. Ich selber bin dafür ein gutes Beispiel: Outlook Express ist zwar auf meinem System drauf, aber ich habe niemals irgendwelche E-Mails darin konfiguriert, da ich nur Yahoo benutze. Mein Programm muß also ohne andere Hilfsprogramme auskommen. Auch ohne WebSpace (obwohl ich gut im PHP- und MySQL-Programmieren bin). Ich schaue mir mal jetzt die folgenden Komponentensets an: -INDY -Synapse -ICS Wie gesagt, mein Programm muß ohne externe Voraussetzungen klarkommen. Weitere Hilfe willkommen. :-D |
AW: Delphi: E-Mail-Versand / E-Mail-Formatierung
Zitat:
Kein Internet, Mailserver? (sind ja auch extern) Direktes Versenden von Mails (Client arbeitet als SMTP-Server) ist nicht so der Brüller, das machen die meisten SPAM-Trojaner auch und wird daher gleich mit einem hohen SPAM-Score bestraft. Mein Mailserver würde solche Mails noch nicht mal annehmen. Also wird ein externer Mailserver benötigt. Aber es gibt eigentlich keine freien SMTP-Server mehr. Also dein Mailserver ... (der von Yahoo) ... wo du deine Zugangsdaten mit ausliefern musst, sonst nimmt der keine Mails zum Versenden an. Somit bleibt eigentlich nur die Variante mit dem PHP-Skript, oder der Anweder kann sich aussuchen, ob er mit seinem Mail-Client (MAPI) oder direkt über sein Postfach die Mails versenden soll (Zugangsdaten müssen vom User eingegeben werden). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 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