Unterschiedliche SMTP-Server für verschiedene Domains
Ole
- php
Guten Morgen,
ich bewege mich auf Neuland: PHP
In der php.ini kann man ja einen SMTP-Server einstellen (btw. PHP 5 unter Windows 2003 Server und IIS6). Nun ist es allerdings so, dass unser Mailserver so konfiguriert ist, dass er nur bekannte Absender durchläßt...im Prinzip ja selbstverständlich.
Jedoch hat jede Domain einen "eigenen" Mailserver der unter "mail.example.de" zu erreichen ist. Dieser verschickt auch nur Mails die von der Domain "example.de" kommen, nicht von "example2.de". Deren Mails würden nur über "mail.example2.de" verschickt werden können.
Gibt es eine Möglichkeit PHP so zu konfigurieren, dass Mails von unterschiedlichen Domains automatisch über den entsprechenden Mail-Server verschickt werden?
Danke
Ole
(8-)>
Guten Morgen,
ich bewege mich auf Neuland: PHP
In der php.ini kann man ja einen SMTP-Server einstellen (btw. PHP 5 unter Windows 2003 Server und IIS6). Nun ist es allerdings so, dass unser Mailserver so konfiguriert ist, dass er nur bekannte Absender durchläßt...im Prinzip ja selbstverständlich.
Jedoch hat jede Domain einen "eigenen" Mailserver der unter "mail.example.de" zu erreichen ist. Dieser verschickt auch nur Mails die von der Domain "example.de" kommen, nicht von "example2.de". Deren Mails würden nur über "mail.example2.de" verschickt werden können.Gibt es eine Möglichkeit PHP so zu konfigurieren, dass Mails von unterschiedlichen Domains automatisch über den entsprechenden Mail-Server verschickt werden?
hm..
Meiner Ansicht nach machst Du einen Grundlegenden Denkfehler:
Du hast 2 Möglichkeiten:
1. Du versendest Mails über die Mailfunktion in PHP oder Du mußt Deine SMTP Zugangsdaten angeben.
Es solte diverse Klassen geben, die so etwas von Haus aus mitbringen,
Bei der Auswahl des Mailservers mußt Du in diesem Fall nur noch die Abfrage von welchem Skript die Mail kam hinzufügen.
Viele Grüße TomIRL
Hi Tom
Meiner Ansicht nach machst Du einen Grundlegenden Denkfehler:
Gut möglich, ist ja meistens so, wenn man sich auf neuem Terrain bewegt und versucht mit dem Kopf durch die Wand zu kommen ;).
- Du versendest Mails über die Mailfunktion in PHP oder Du mußt Deine SMTP Zugangsdaten angeben.
Ich hatte es so verstanden, dass mail() auf den in der php.ini hinterlegten SMTP-Server zurückgreift.
Es solte diverse Klassen geben, die so etwas von Haus aus mitbringen,
Bei der Auswahl des Mailservers mußt Du in diesem Fall nur noch die Abfrage von welchem Skript die Mail kam hinzufügen.
Ich werd mich auf dem Gebiet mal weiterbilden müssen :)
Danke
Ole
(8-)>
Hi Ole,
Ich hatte es so verstanden, dass mail() auf den in der php.ini hinterlegten SMTP-Server zurückgreift.
Jein, stell dir bitte vor, dass im Idealfall eine Software wie PHP unter Linux läuft ;-) Deshalb gibt es auch den Parameter sendmail_path, dort gibt man normalerweise den Pfad zu Sendmail an und dahin gibt die Funktion mail() dann ihre Mails.
Jetzt ist es ja aber leider so, dass man unter Windows im Normalfall kein Sendmail hat - deshalb muss eine Alternative her, unter Windows hat man i.d.R. einen lokalen Mail-Server, der wird dann über SMTP angesprochen. Dann verschickt die Funktion mail() die Mails über den lokalen Mail Server per SMTP. Beachte das Wort lokal, ein Mailserver nimmt lokale Mails normalerweise ohne weitere Prüfungen an und verschickt diese, sodass du über deinen lokalen Mail-Server alle Mails verschicken kannst, unabhängig vom Absender.
Ich werd mich auf dem Gebiet mal weiterbilden müssen :)
Wenn du weder Sendmail, noch einen lokalen Mailserver zur Verfügung hast, dann gibt es für die AFAIK keine Möglichkeit dein Problem mit einer einfachen PHP-Konfiguration zu lösen. In diesem Fall würde ich dir das PEAR-Packet Mail empfehlen.
Das PEAR-Packet zu installieren wirst du selber schon irgendwie hinkriegen, wie man damit E-Mail über SMTP versendet zeigt dir folgendes Beispiel:
~~~php
include('Mail.php');
$recipients = "foo@example.org";
$headers['From'] = 'Dennis dennis@example.org';
$headers['To'] = $recipients;
$headers['Subject'] = 'Hier gibts eine Mail von mir!';
$params['host'] = "smtp.example.org";
$params['port'] = 25;
$params['auth'] = true;
$params['username'] = "smtp-username";
$params['password'] = "smtp-passwort";
$mail_object =& Mail::factory('smtp', $params);
$mail_object->send($recipients, $headers, $email_text);
Vielleicht hilft dir das ja weiter ;-)
Viele Grüße aus Kanada,
~ Dennis.
--
Mein [SelfCode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)
[Weblog](http://riehle-web.com/blog/): [Ein Wochenende in Victoria](http://riehle-web.com/blog/log.php/2006/10/ein-wochenende-in-victoria) - [Mein neuer Regenschirm ;-)](http://riehle-web.com/blog/log.php/2006/10/mein-neuer-regenschirm)
Hallo Dennis
Jein, stell dir bitte vor, dass im Idealfall eine Software wie PHP unter Linux läuft ;-) Deshalb gibt es auch den Parameter sendmail_path, dort gibt man normalerweise den Pfad zu Sendmail an und dahin gibt die Funktion mail() dann ihre Mails.
Aha...verstanden :)
Jetzt ist es ja aber leider so, dass man unter Windows im Normalfall kein Sendmail hat - deshalb muss eine Alternative her, unter Windows hat man i.d.R. einen lokalen Mail-Server, der wird dann über SMTP angesprochen. Dann verschickt die Funktion mail() die Mails über den lokalen Mail Server per SMTP. Beachte das Wort lokal, ein Mailserver nimmt lokale Mails normalerweise ohne weitere Prüfungen an und verschickt diese, sodass du über deinen lokalen Mail-Server alle Mails verschicken kannst, unabhängig vom Absender.
Dann muß ich wohl mal schauen, ob ich den Windows-STMP-Server ans laufen bekomme.
Wenn du weder Sendmail, [...]
Danke, ich werd mich da mal einarbeiten :)...sehe schon, hab noch viel vor mir :)
so long
Ole
(8-)>
Hallo Dennis
Jein, stell dir bitte vor, dass im Idealfall eine Software wie PHP unter Linux läuft ;-) Deshalb gibt es auch den Parameter sendmail_path, dort gibt man normalerweise den Pfad zu Sendmail an und dahin gibt die Funktion mail() dann ihre Mails.
Also ich kann dir die Pear Klasse nur nahe legen, da steht eigentlich alles drin, und Du musst quasie nur die ABfrage einbauen woher der Request kam..
Viel Grüße TomIRL
Hallo,
die bisherigen Antworten haben mich schon ein großes Stück weiter gebracht, danke dafür :), allerdings verfolge ich noch einen zweiten Weg.
Das senden von E-Mails mittels PHP über den IIS-SMTP-Server
Ich hab den IIS-SMTP-Server nun ans laufen bekommen und so konfiguriert, dass er nur von "innen" genutzt werden kann.
Das erstellen und versenden einer Testmail im "Pickup"-Ordner war auch erfolgreich. Jedoch gelingt es mir nicht PHP dazu zu bewegen diesen Mail-Server zu nutzen.
Die relevanten Einstellungen in der php.ini sehen wie folgt aus
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = me@example.com
Jedoch: Weder Wordpress noch ein Testscript* verschicken eine Mail
Hat jemand einen Tipp für mich, wie ich dieses Problem in den Griff bekomme?
Danke
Ole
(8-)>
*
<?php
// The message
$message = "Diese Mail\nWurde mit\nPHP verschickt!";
// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);
// Send
mail('olemail@web.de', 'Testmail', $message);
?>
Hallo !
Bin hier zwar gerade Windows-frei aber
"Pickup"-Ordner
klingt sehr nach "Spool-Verzeichnis".
SMTP = localhost
smtp_port = 25
hast Du denn mal ein
telnet localhost 25
vesucht ?
Bin mir nicht sicher ob Dein Server ueberhaupt TCP-Transport akzeptiert.
"Nach draussen" ist er naemlich der Client !
Gruss
Holger