AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi: E-Mail-Versand / E-Mail-Formatierung
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi: E-Mail-Versand / E-Mail-Formatierung

Ein Thema von SvenLittkowski · begonnen am 30. Jan 2011 · letzter Beitrag vom 7. Feb 2011
Antwort Antwort
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 31. Jan 2011, 06:44
Hier mal ein Tutorial...

Indy

Viel Spaß und Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 31. Jan 2011, 11:00
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 (hier) die Daten.

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.
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#3

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 31. Jan 2011, 12:20
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:
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.
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.

Gruß,
blauweiss
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 31. Jan 2011, 16:45
Hi Sven !

Wenn Du die Jedi Komponenten verwendest, dann kannst Du auch tJvMail benutzen.
Die Komponente ist wirklich sehr einfach zu bedienen.

Delphi-Quellcode:
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;
Die Übertragung erfolgt über das Standard-Mail-Programm.
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
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#5

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 31. Jan 2011, 16:53
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.

Geändert von SvenLittkowski ( 1. Feb 2011 um 04:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 31. Jan 2011, 18:57
Wie gesagt, mein Programm muß ohne externe Voraussetzungen klarkommen. Weitere Hilfe willkommen.
Das geht ja schon mal garnicht.

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).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#7

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 1. Feb 2011, 04:21
Ja, daran hatte ich gedacht:

"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."

Ich selber habe ein Yahoo-Postfach, an welches ich die Mails senden lassen will. Schlimmstenfall werden die eingehenden Mails in meinem Spa-Folder abgelegt, wenn ich Dich richtig verstanden habe. Aber das ist okay für mich, ich kann ja dort immer nachsehen. So wie ich Dich verstehe, ist diese Lösung durchaus machbar, aber halt mit dem Risiko behaftet, von Yahoo als Spam betrachtet zu werden. Aber da dies mein eigenes E-Mail-Konto ist, an welches mein Programm die Vorschläge meiner Kunden versendet, würde ich halt dies in Kauf nehmen.

Kannst Du mir in dieser Richtung weiterhelfen? Ich habe dies noch nie programmiert. Gerne auch Links zu Lösungen dieser Art.

Synapse und ICS ließen sich nicht bei mir integrieren wegen Compiler-gemeldeten Fehlern.
SAK ließ sich installieren, aber bei Aufruf des Testprogrammes und Benutzen desselben erhalte ich keine E-Mail (versandte mehrere testweise an mich).

Geändert von SvenLittkowski ( 1. Feb 2011 um 07:22 Uhr)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 1. Feb 2011, 15:00
Mal ne Frage zum Verständnis: Bei der Variante mit dem PHP-Skript... Wer ist denn da der Absender?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von vergessen
vergessen

Registriert seit: 29. Jun 2010
85 Beiträge
 
Delphi 5 Professional
 
#9

AW: Delphi: E-Mail-Versand / E-Mail-Formatierung

  Alt 31. Jan 2011, 20:34

Ich will die Benutzung externer anderer Programme vermeiden...

Mein Programm muß also ohne andere Hilfsprogramme auskommen....
Auch ohne WebSpace...

Wie gesagt, mein Programm muß ohne externe Voraussetzungen klarkommen. Weitere Hilfe willkommen.
Nachdem Du andere Programme und WebSpace ausgeschlossen hast, frage ich mich, was denn noch übrig bleibt?
  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 12:15 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