Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi eMail-Versand (https://www.delphipraxis.net/123671-email-versand.html)

Bit_Solo 6. Nov 2008 10:33


eMail-Versand
 
Hallo,

ich habe mal eine Frage zu einem schon oft hier aufgeführten Thema, welches aber nie gelöst wurde.

Ich möchte gerne, das mein Programm mir eine Status-eMail schickt. Der Haken dabei ist aber, das ich kein externes Programm (Also MAPI fällt weg) verwenden will / kann. Auch mit idSMTP ist es Mist, da man dort Login-Daten nutzen muss.
Ich hatte mir das so in der Art von MadExcept gedacht, dort arbeitet das Tools ja auch als eigener SMTP-Server und sendet die Mail aus dem Programm an den Programmierer incl. Bug-Bericht.

Aber wie setze ich sowas um? Im eigenen Programm einen idSMTP-Server? Und wenn ja, wie leite ich da eine Mail an z.B. gmx?

Also das soll nix zum Spam-Mail senden werden.

Gruß
bit

Michael Habbe 6. Nov 2008 10:50

Re: eMail-Versand
 
Zu den Indy-Komponenten gibt es hier: http://www.indyproject.org Downloads mit Demos.

Bit_Solo 6. Nov 2008 11:10

Re: eMail-Versand
 
Leider erklärt sich für dich da nicht, wie ich eine email vom eigenen SMTP-Server zu einem anderen (z.b. web.de oder gmx.de) weiterleite.

generic 6. Nov 2008 11:21

Re: eMail-Versand
 
Logindaten musst du nicht eingeben.

Wenn du den Emailserver des Empfänger einträgst, dann erübrigt sich die Anmeldung.
Die Anmeldung ist nur erforderlich, wenn ein Emailserver als Relay dienen soll.

nahpets 6. Nov 2008 11:24

Re: eMail-Versand
 
Hallo,

wie wäre es damit?
Delphi-Quellcode:
If slMail.Count > 0 Then Begin
  IdMessage.Clear;
  IdMessage.MessageParts.Clear;
  IdMessage.Date     := Now;
  idMessage.Subject  := 'Fehlerprotokoll: Dienstestatus';
  IdMessage.Body.Text := slMail.Text;
  IdMessage.From.Text := GetEnvironmentVariable('COMPUTERNAME') + '@meinedomaene.de';
  IdMessage.Recipients.EMailAddresses := 'gueltigerbenutzer.name@meinedomaene.de';
  idSMTP.Host        := 'ip.des.mail.servers';
  idSMTP.HeloName    := 'gueltigerbenutzer.name';
  idSMTP.Password    := '';
  idSMTP.Username    := idSMTP.HeloName;
  Try
    idSMTP.Connect(10000);
    idSMTP.QuickSend('ip.des.mail.servers',
                     IdMessage.Subject,
                     IdMessage.Recipients.EMailAddresses,
                     IdMessage.From.Text,
                     IdMessage.Body.Text);
    ErrorLog('Protokoll per Mail versandt.',0);
  Except
    on e : Exception Do Begin
      ErrorLog(tmDienste.Name + ' Exception beim Mailversand: ' + e.Message,0);
    end;
  end;
  try
    idSMTP.Disconnect;
  except
  end;
end;
Was verstehst Du unter eigenem SMTP-Server? Willst Du einen vorhandenen nutzen oder willst Du selbst einen in Dein Programm implementieren?

Oder suchst Du nach sowas Hamster?
Oder eher sowas http://www.soft-ware.net/internet/em...ry+%2Bdownload?
Oder darf es sowas http://www.devarticles.com/c/a/Delph...SMTP-Server/4/ sein?

Bernhard Geyer 6. Nov 2008 11:27

Re: eMail-Versand
 
Zitat:

Zitat von Bit_Solo
Also das soll nix zum Spam-Mail senden werden.

Und das soll der GMX wissen das das eine gute Mail ist?

AFAIK wird des öfteren die Annahme von Mail die direkt von einem Einwahlrechner stammen abgelehnt werden um dem SPAM-Aufkommen etwas Herr zu werden. Melde dir lieber eine Mail-Adresse an über das das geht und dessen Logindaten fest im Programm codiert sind.

Bit_Solo 6. Nov 2008 11:33

Re: eMail-Versand
 
Das Programm soll direkt eine Mail an eine bestimmte (optional Einstellbare) Adresse senden. Dabei möchte ich aber im Programm keine Zugangsdaten hinterlegen.
Irgendwie muss ja auch der "normale" email-Versand im Internet gehen, wenn ich von xy@web.de zu xx@gmx.de was maile geht es ja auch. Und wenn mein Programm selbst SMTP-Server spielt müßte ich doch direkt eine Mail quasi weiterleiten können (ich simulire quasi mit meinem eigen smtp-server einen email-server).
Irgendwie schafft es ja madexcept auch ne mail direkt zu senden ohne zugangsdaten bzw. smtp-login-daten.

nahpets 6. Nov 2008 11:39

Re: eMail-Versand
 
Du wirst kaum einen seriösen Mailserver finden, der ohne Logindaten Deine Mails weiterleitet.
Und was bitte spricht gegen die Verwendung eines Emailaccounts. Kannst die Ameldedaten ja sicherlich auch aus einer INI-Datei lesen, wenn Du sie nicht fest verdrahten willst.

Bit_Solo 6. Nov 2008 11:48

Re: eMail-Versand
 
Zum einen können Login-Daten die hinterlegt sind gestohlen werden.

nahpets 6. Nov 2008 12:00

Re: eMail-Versand
 
Leg sie doch verschlüsselt ab.
Entsprechende Komponenten gibt es für Delphi. Ist also kein Argument gegen die Benutzung von Anmeldedaten.

Achso: Unsere Mailserver lehnen jeden Versuch, Mails ohne gültige Anmeldung zu verschicken, ab. Und jeder ordentliche Provider sollte das (meiner Meinung nach) auch tuen.

Andreas L. 6. Nov 2008 12:14

Re: eMail-Versand
 
Leg doch auf nen Server ein kleines PHP-Script ab. Mit IdHTTP übergibst du die Daten per GET oder POST und das PHP-Script versendet dann eine Mail. Und das ohne irgednwelche SMTP-Logindaten.

Bit_Solo 6. Nov 2008 12:49

Re: eMail-Versand
 
Danke, klingt ja ganz gut.
Aber mit PHP kenn ich mich nicht aus und es muß ja auch anders gehen, siehe www.madshi.net. Da geht es ja auch ohne.

Luckie 6. Nov 2008 13:08

Re: eMail-Versand
 
Zitat:

Zitat von nahpets
Leg sie doch verschlüsselt ab.
Entsprechende Komponenten gibt es für Delphi. Ist also kein Argument gegen die Benutzung von Anmeldedaten.

Doch ist es, weil das Passwort muss ja wieder im Klartext in der Exe stehen.

OldGrumpy 6. Nov 2008 13:22

Re: eMail-Versand
 
Zitat:

Zitat von nahpets
Leg sie doch verschlüsselt ab.
Entsprechende Komponenten gibt es für Delphi. Ist also kein Argument gegen die Benutzung von Anmeldedaten.

Achso: Unsere Mailserver lehnen jeden Versuch, Mails ohne gültige Anmeldung zu verschicken, ab. Und jeder ordentliche Provider sollte das (meiner Meinung nach) auch tuen.

Dass das Argument "Verschlüsselung" hier Käse ist, müsste Dir einleuchten. Das von Dir angeführte Versenden von eMails betrifft nur nicht-lokale eMails. Im Prinzip ist es für einen SMTP-Server vollkommen egal ob ein beliebiges Programm oder ein anderer SMTP-Server Mail anliefern will. Jedesmal gibt es genau zwei Fragen die relevant sind: Ist der Empfänger einer von "meinen" Accounts? Wenn nein, kenn ich Dich?

Wenn die erste Frage mit "ja" zu beantworten ist, nimmt jeder SMTP-Server die Mail in der Regel entgegen, je nach Konfiguration wird nur unterschieden ob der Empfänger ein existierender Account sein muss (sonst Bounce) oder die Mail - falls der Empfänger nicht existiert - in ein Catch-All Postfach wandert.

Und damit ist auch die Frage zu madExcept beantwortet: Das Ding spricht mit dem zuständigen SMTP-Server und sagt "ich habe Post für Dich". Die andere Variante, die mit den Logindaten, braucht man nur wenn man über einen bestimmten Mailserver als Relais versenden will, diese grundlegende Anti-Spam-Maßnahme ist fast flächendeckend umgesetzt.

nahpets 6. Nov 2008 13:35

Re: eMail-Versand
 
Hallo,

@Luckie

so meinte ich das nicht. Das Passwort kann verschlüsselt in einer INI-Datei stehen und wird vom Programm zur Laufzeit entschlüsselt, es steht also nur zur Laufzeit im Speicher unverschlüsselt zur Verfügung.
Abgesehen davon kann man auch einen Resourcestring verschlüsselt in der Exe ablegen und ihn bei Bedarf entschlüsseln.

Für meine diversen Dienste und Datenbankprogramme benötige ich häufiger "festverdrahtete" Anmeldungen (sprich: einen bestimmten Benutzer, der von dem Benutzer, unter dem die Software läuft / der sie bedient, abweicht). Die Anmeldungen liegen alle verschlüsselt vor und nicht im Klartext, weder im den Exen noch in den INI's und falls sie in 'ner Datenbank abgelegt werden, sind sie auch dort verschlüsselt.

@Bit_Solo

Bei den Madtools gibt es das Programm madTestMailAPIs.exe zum Prüfen des Mailversandes. Anhand dieses Programmes ist es mir nicht ersichtlich, wie es, ohne Anmeldung am Mailserver, Mails verschicken soll, ohne das zumindest der Benutzer dem Mailserver bekannt ist. Ich habe nicht den Eindruck, als würde die Software über einen eigenen Mailserver verfügen. Die Software fragt den eigenen DNS ab und ermittelt so den Mailserver. Und der nimmt die Überprüfung der Anmeldedaten vor.

@OldGrumpy
Wenn ich Deinen letzen Absatz richtig verstehe, ist die Verschlüsselung doch nicht zwingend Käse.

Unser Mailserver akzeptiert Mails von MadExcept nur, wenn er Absender und Empfänger kennt (soeben ausprobiert).
Und bei meinen Diensten und Programmen muss niemand von aussen sehen, welchen Benutzernamen ich benutze und welchen Mailserver, auch unter diesen Gesichtspunkten halte ich eine Verschlüsselung für sinnvoll.

Luckie 6. Nov 2008 13:38

Re: eMail-Versand
 
Zitat:

Zitat von nahpets
@Luckie

so meinte ich das nicht. Das Passwort kann verschlüsselt in einer INI-Datei stehen und wird vom Programm zur Laufzeit entschlüsselt, es steht also nur zur Laufzeit im Speicher unverschlüsselt zur Verfügung.

Und wo steht das Passwort/die Daten zum Entschlüsseln des Passwortes?

nahpets 6. Nov 2008 13:55

Re: eMail-Versand
 
stimmt, da kann man aber auch Sachen nehmen, die nicht drauf schließen lassen, dass es ein Passwort oder ein Schlüssel ist.
Letztlich: 100% sicher wird's nicht, aber immer noch besser als Klartext.

Und ich muss weder dem Anwender, noch jemandem, der sich unerlaubt Zugriff verschaffen will, Anmeldenamen und Passwörter auf dem Tablett präsentieren.

jfheins 6. Nov 2008 14:16

Re: eMail-Versand
 
Zitat:

Zitat von nahpets
stimmt, da kann man aber auch Sachen nehmen, die nicht drauf schließen lassen, dass es ein Passwort oder ein Schlüssel ist.
Letztlich: 100% sicher wird's nicht, aber immer noch besser als Klartext.

Und ich muss weder dem Anwender, noch jemandem, der sich unerlaubt Zugriff verschaffen will, Anmeldenamen und Passwörter auf dem Tablett präsentieren.

Nein, must du nicht - die Lösung ist schon optimal (im Sinne von Nutzen/Aufwand)

Wenn ich so ein Passwort für nen smtp Server will, guck ich zuerst mit regmon und filemon nach, obs irgendwo drinsteht. Dann (oder sogar als ersten Schritt) nehm ich Sniffer wie Wireshark und lass mir das Passwort aufm Holzbrett präsentieren. :mrgreen:

nahpets 6. Nov 2008 14:33

Re: eMail-Versand
 
@jfheins

Was Du beschreibst setzt aber die Absicht voraus, an's Passwort kommen zu wollen. Unter dem Gesichtspunkt habe ich natürlich ein Problem. Aber das der Anwender quasi über die Anmeldedaten stolpert, muss nicht sein.

Den Vorschlag des Veschlüssels hatte ich wegen
Zitat:

Zitat von Bit_Solo
Das Programm soll direkt eine Mail an eine bestimmte (optional Einstellbare) Adresse senden. Dabei möchte ich aber im Programm keine Zugangsdaten hinterlegen.

gemacht und nicht, weil's die perfekte Universallösung ist.

Bit_Solo 6. Nov 2008 14:44

Re: eMail-Versand
 
Hallo,

@nahpets

also in den madExcept-Optionen gibt es 3 Punkte, 2 davon sind als SMTP-Client verarbeiten und madExcept arbeitet als SMTP-Server.

Ich habe ja schon versucht eine Mail an eine GMX-Account zu senden, aber wenn ich bei SMTP ohne Login arbeite kommt ne Fehlermeldung..."wird ohne Login verweigert..blablabla {mp4xx}"

Die 2. Variante ist halt bei SMTP mit Logindaten und das macht ja madExcept ohne. Hab bei madExcept nur angegeben, wo die Mails hinsollen.

Win32.API 6. Nov 2008 14:57

Re: eMail-Versand
 
MadExcept arbeitet mit MAPI.

nahpets 6. Nov 2008 15:16

Re: eMail-Versand
 
Hallo,
@Bit_Solo
Zitat:

Zitat von Bit_Solo
Hallo,

@nahpets

also in den madExcept-Optionen gibt es 3 Punkte, 2 davon sind als SMTP-Client verarbeiten und madExcept arbeitet als SMTP-Server.

Ich habe ja schon versucht eine Mail an eine GMX-Account zu senden, aber wenn ich bei SMTP ohne Login arbeite kommt ne Fehlermeldung..."wird ohne Login verweigert..blablabla {mp4xx}"

Die 2. Variante ist halt bei SMTP mit Logindaten und das macht ja madExcept ohne. Hab bei madExcept nur angegeben, wo die Mails hinsollen.

Nein, dem ist nicht so, auch wenn die Oberfläche den Eindruck erweckt, da wäre ein eigener SMTP-Server im Spiel. SMTP-Server heißt, so wie sich das für mich darstellt, dass Du einen SMTP-Server nutzen kannst, dieser wird über eine DNS-Abfrage ermittelt. Das ganze scheint dann zu funktionieren, wenn sowohl bei "mail from:" als auch bei "mail to:" gültige Emailadressen eingetragen sind. Bei "mail from" muss sie zum über DNS ermittelten Mailserver passen, bei "mail to" zum empfangenden Mailserver.
Falls Du einen SMTP-Server kennen solltest, so kannst Du ihn bei "smtp client settings" angeben. Dort kannst Du auch Benutzername und Passwort angeben. Aber ein eigener SMTP-Server ist dort keinesfalls im Spiel.

@Win32.API
Zitat:

Zitat von Win32.API
MadExcept arbeitet mit MAPI.

MadExcept arbeitet auch mit Mapi.
Es werden vier Möglichkeiten unterstützt:

1. DNS-Auflösung zu einem SMTP-Server.
2. Angabe eines SMTP-Servers mit ggfls. Benutzername und Passwort.
3. MAPI z. B. für das installierte Outlook.
4. (Jeder beliebige?) Mailclient auf dem Rechner, das Versenden muss der Anwender selbst übernehmen, er bekommt "lediglich" die fertige Email in seinem Mailprogramm präsentiert.

Bit_Solo 6. Nov 2008 15:42

Re: eMail-Versand
 
Also ich hab das mal versucht. Absender ist meine gmx-addresse (xx@gmx.de) und empfänger (xx@gmx.de) ist auch eine gmx-adresse.
exception class : EIdSocketError
exception message : Socket-Fehler # 10061 Verbindung abgelehnt.

Ist der Absender gleiche Adresse wie oben (Test<xx@gmx.de>), nur Nametext anders folgendes:
exception class : EIdProtocolReplyError
exception message : 5.7.0 Sender address does not belong to logged in user {mp044}.


Bei madExcept hab ich meine eMail-Adresse eingetragen und die mail kommt an...

madexcept <meinemail@gmx.de>

Und madexcept spielt da nicht STMP-Server????

nahpets 6. Nov 2008 16:14

Re: eMail-Versand
 
Hallo,

zu Fehler 10061 siehe u. a. http://www.delphifaq.com/faq/delphi/network/f265.shtml

Der zweite Fehler sieht so aus, als müsse da eine Anmeldung vorliegen, bevor der Server Mails annimmt.

Mit madExcept bekomme ich Mails (in der Firma) nur versandt, wenn der Absender zumindest zur Maildomäne gehört (irgendwas@domaene.de) und es sich beim Empfänger um eine existierende Mailadresse in der Domäne handelt.

Da ich keine Accounts bei gmx habe, kann ich nicht testen, ob sich deren Mailserver eventuell anders verhalten.

Nach web.de bekomme ich mit madExcept nichts versandt (selbst mit Anmeldedaten nicht).

phreax 6. Nov 2008 17:17

Re: eMail-Versand
 
Zitat:

Zitat von nahpets
Nach web.de bekomme ich mit madExcept nichts versandt (selbst mit Anmeldedaten nicht).

Das liegt daran, dass web.de ein sog. "smtp after pop3"-Sicherheitsfeature hat, d.h. dass nur 15min nach dem letzten pop3-Abruf Mails über smtp angenommen werden...
Ich denke dass andere Mailanbieter ähnliche Sicherheitsmaßnahmen ergriffen nhaben...

Bit_Solo 7. Nov 2008 08:20

Re: eMail-Versand
 
Guten Morgen,

danke für die vielen Info's.
Ich habe gestern nochmal bei madshi nachgeschaut und folgendes gefunden:

The "SMTP server" approach behaves just like an internet SMTP server does. Usually that works without authentication. However, some mail servers don't accept mails from dialup connections. So the SMTP server variation won't always work for all users.

Das heißt ja dann wohl doch SMTP-Server, oder?

nahpets 7. Nov 2008 08:46

Re: eMail-Versand
 
Hallo,

jo, aber anscheinend keiner, der beim Versenden von Mails viel Erfolg verspricht.

Bit_Solo 7. Nov 2008 13:46

Re: eMail-Versand
 
Hallo,

doch es geht.
Wenn man bei madexcept die Zeil-eMail-Adresse eingibt, mach es madexcept so:

Als Absender wird der Empfänger verwendet. Heißt:

From: MadExcept <xx@gmx.de>
To: MeinName <xx@gmx.de>

Wenn ich es so probiere, dann klappt es auch.

Also, herzlichen Dank für Eure Hilfe und Geduld.

nahpets 7. Nov 2008 13:53

Re: eMail-Versand
 
Hallo,

ja, bei gmx klappt das, bei web.de nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 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