ich war bisher der Meinung, dass ich immer einen ausgehenden Mailserver benötige (bzw. bisher gab es immer einen). Gibt es irgendeine (leichtgewichtige) Bibliothek, mit der ich Emails versenden kann? Es handelt sich dabei um einen no-reply-Versender, entsprechend erwarte ich keine Antworten vom Empfänger.
Ganz ohne Mailserver kommst du nicht aus, weil du ansonsten an den Spamfiltermaßnahmen nicht vorbeikommst. Bei Bedarf kann ich diesbezüglich auch gerne etwas detaillierter werden, die Details sind aber eigentlich nicht so wichtig.
Es reicht aber, wenn du beispielsweise den googlemail-Server verwendest. Dort kannst du eine eigene Domain hinzufügen und dann Mails von einer beliebigen Adresse unter dieser Domain mit den gängigen Mitteln (javamail mit STARTTLS-Authentifizierung) versenden.
Voraussetzung: Du möchtest keine Massenmails versenden. Die ‘no-reply’ Adresse legt da die Vermutung nahe, wenn du in kurzer Zeit viele Mails verschickst, landest du ruckzuck auf den Spamfiltern.
Em liebsten wäre mir tatsächlich eine schmale embedded Lösung in Java.
[QUOTE=cmrudolph;140554]Ganz ohne Mailserver kommst du nicht aus, weil du ansonsten an den Spamfiltermaßnahmen nicht vorbeikommst. Bei Bedarf kann ich diesbezüglich auch gerne etwas detaillierter werden, die Details sind aber eigentlich nicht so wichtig.
Es reicht aber, wenn du beispielsweise den googlemail-Server verwendest. Dort kannst du eine eigene Domain hinzufügen und dann Mails von einer beliebigen Adresse unter dieser Domain mit den gängigen Mitteln (javamail mit STARTTLS-Authentifizierung) versenden.[/QUOTE]
Interessant. Ich wurde nämlich mit großen Augen angesehen, als ich meinte, das ich das so gar nicht kenne, sondern eigentlich immer über einen Mailserver laufe. Die Antwort war „in PHP geht das out-of-the-box“.
Kannte ich bisher noch nicht. Aber ich glaube, das löst nicht mein Problem. Einen Mailserver irgendwo zu nutzen ist hier keine Option.
Es geht nicht um Massenmails sondern um Antworten, nach einer Registrierung in einer App. Solange sich keine Massen registrieren, gibt es hier auch kein Problem
Das hängt davon ab ob dein Code auf einem Server läuft oder auf einem Client. Mit dem Stichwort php nehme ich an, dass du von einem Server sprichst, und dann hast du das Problem von SPAM protection weniger.
Wenn clients die IP dynamisch von ihrem Provider zugewiesen bekommen, sind diese meist aus einem Bereich der eben als dynamisch gekennzeichnet ist. Viele Spam-protection system erlauben es nicht emails von diesen IPs zu senden.
Ein Server der eine eigenen IP hat die nicht in diesem Bereich liegt kann Mails direkt versenden. Die JAVA Mail API sollte dir dabei helfen.
Ich würde so etwas aber tatsächlich auch nur für Testing benutzen. Spamfilter überprüfen auf MX-Records, auf Reverse DNS (dass der host part deiner Email, wenn man ihn per DNS Lookup ermittelt auch wirklich auf die gesendete IP passt, grob gesagt)… Ich befürchte, jeder Versuch an Personen außerhalb deiner eigenen Firma mit solchen Bastellösungen Mails zu senden wird kurz oder lang auf dem Spam Filter landen. Gerade bei Registrierungsmails wäre das ärgerlich. Das behandelt auch jeder Mailanbieter anders, ich hatte nach meinem Serverumzug vergessen Reverse DNS ordentlich zu konfigurieren (ich sende Mails mit Postfix), und bei allen GMX Empfängern sind die Mails sofort im Spam gelandet.
Wenn du eh einen eigenen Server hast: Postfix installieren, alle Umgebungsparameter ordentlich konfigurieren und dann aus der Java Anwendung per SMPT auf den Postfix verbinden.
Die php-eigene Funktion nutzt einen lokal installierten Mailserver. Unter Linux läuft grundsätzlich ein Mailserver, der normalerweise aber nur für lokale Mailzustellung konfiguriert ist.
Siehe zu php auch die Referenzdokumentation: PHP: mail - Manual
The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn’t use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).
Das liegt genau daran, dass unter Windows normalerweise kein lokaler Mailserver zur Verfügung steht.
Bei Webservern, die Mails versenden können, sind die lokalen Mailserver so konfiguriert, dass sie auch Mails an andere als lokale Adressen zulassen.
Wie @AmunRa schon richtig angemerkt hat, ist es nahezu unmöglich, Mails von dynamischen IP-Adressen aus zuzustellen. Und auch bei einem Server mit statischer IP-Adresse ist extrem viel Aufwand notwendig, um Mails zuverlässig zuzustellen.
Bis gestern konnte ich beispielsweise keine Mails an googlemail zustellen, weil sie nicht vom Server signiert wurden. Andere Provider nehmen Mails nicht an, weil man kein ausreichendes Versandvolumen hat oder die Reputation eines IP-Adressbereiches zu schlecht ist. Kleine Fehlkonfigurationen (Reverse-Lookup passt nicht zum Hostnamen, SMTP wird nicht 100%ig eingehalten, Header werden nicht ganz korrekt gesetzt…) können dazu führen, dass Mails nicht ankommen.
Am einfachsten ist es tatsächlich, sich auf einen externen Dienst zu verlassen und diesen mit javamail anzusprechen.
Habe mein letztes Beispiel mal ausprobiert. Mit Google Mail klappt es leider nicht mehr. Aber über den SMTP Server von Strato hatt es noch funktioniert.