Wie lege ich in PHP fest, dass mail () mit einem externen Mailserver versendet werden soll?

7

Ich habe meine E-Mail bei Rackspace Email gehostet und möchte diese als Mail-Server für das Kontaktformular auf meiner Website verwenden.

Wenn ich mir die php.ini-Datei anschaue, kann ich nur die sendmail_path auf UNIX-Systemen angeben, von denen ich Punkte für das Programm gelesen habe, das tatsächlich Mail auf dem Server sendet.

Ich möchte keine E-Mails von meinem Ubuntu-Server senden, da ich nicht erfahren genug bin, um ein sicheres Setup für E-Mails zu erstellen ... Ich möchte alles an Rackspace's mail.emailsrvr.com weiterleiten.

Meine Frage ist, wie kann ich dem PHP-Setup auf meinem Server mitteilen, dass die mail() -Funktion einen externen Mail-Server verwenden soll?

    
Matt 04.07.2011, 15:35
quelle

6 Antworten

11

mail() soll an einen lokalen SMTP-Server übergeben werden und macht einen schlechten Job. Verwenden Sie für eine ordnungsgemäße Mail-Unterstützung Swiftmailer oder PHPMailer , beide unterstützen vollständig externe SMTP-Server und sind viel einfacher zu bedienen (und lassen Sie Dinge wie gemischte Text / HTML-Mails, Anhänge, etc ...)

    
Marc B 04.07.2011, 15:39
quelle
9

Seit ich dieses Thema recherchiert habe und über diesen Beitrag gestolpert bin und eine Php-Bibliothek von Drittanbietern für mich keine Option war.

Wie wir wissen, verwendet php standardmäßig den Befehl sendmail des Servers Die Option sendmail_path in php.ini kann geändert werden, um die Einstellung für Ihren eigenen Befehl mit eigenen Argumenten usw. zu überschreiben. Zum Beispiel: sendmail_path = /usr/bin/unix2dos | /usr/bin/dos2unix | /usr/sbin/sendmail -t -i

Mit SSMTP können Sie ausgehende E-Mails von Ihrem Web / PHP-Server an einen Mailhost leiten. Ссылка

%Vor%

Dann kannst du sendmail_path = /usr/sbin/ssmtp -t verwenden, um php mitzuteilen, dass es ssmtp anstelle von sendmail verwenden soll. Stellen Sie sicher, dass Sie Ihren Webserver neu starten, nachdem Sie Änderungen an der php.ini vorgenommen haben

Stellen Sie außerdem sicher, dass Sie ssmtp konfiguriert und Ihre SPF-, DKIM- und DMARC-Datensätze validiert haben, bevor Sie die Änderungen in sendmail_path in php.ini

vornehmen

Zum Beispiel gmail Mail Server. /etc/ssmtp/ssmtp.conf

%Vor%

Für eine Stapelaustauschfrage gleich sehen Ссылка

Um dies zu erweitern.

Wenn Sie Google verwenden, muss jede From: -E-Mail-Adresse im sendenden Konto als "Konto, das Sie besitzen" -Einstellung unter Konten eingerichtet werden. Andernfalls überschreibt Google die Header mit x-google-original-from und gibt stattdessen das Absenderkonto an.

    
fyrye 12.02.2015 00:12
quelle
3

Für diejenigen, die keine PHP-Bibliothek wie Swiftmailer verwenden möchten (und schließlich diejenigen, die ihre PHP-Codebasis nicht nur berühren wollen, um SMTP-Server zu wechseln), können Sie einen der folgenden Schritte ausführen:

1.) Windows Server: Ändern Sie Ihre PHP INI-Datei, um einen externen SMTP-Relay-Host zu verwenden. Sie sehen es im Mailer-Abschnitt "Nur für Windows-Server" - oder etwas Ähnliches.

2.) Linux-Server: Installieren Sie Postfix (E-Mail-Relay-Dienst) und konfigurieren Sie diesen für die Verwendung eines externen SMTP-Hosts. Ihre PHP-Installation wird versuchen, dies zu verwenden, um E-Mails standardmäßig ohne zusätzliche Konfiguration zu senden.

** Dies ist natürlich nicht dazu gedacht, Ihnen Schritt für Schritt Details zu den beiden oben genannten Optionen zu geben, sondern Sie in die richtige Richtung zu weisen, wenn Sie nach einer Lösung suchen, die keine Codeänderungen in Ihrem Code erfordert PHP's mail () wird aufgerufen.

    
Angelo Ativo 12.10.2015 17:35
quelle
2

Nicht verwandt mit der Frage, aber es gibt Mailer-Daemons, die nur als sendmail-Daemon fungieren, aber an eine externe Mail weiterleiten.

Ссылка

Wenn Sie nicht einmal eine exim / sendmail-Installation auf Ihrem Computer benötigen, schlage ich vor, dass Sie es versuchen. Natürlich können Sie auch andere Alternativen von Drittanbietern verwenden. Wenn Sie jedoch einen Daemon lokal ausführen, kann er auch die Mail in die Warteschlange stellen, was eine php-lib nicht kann, wenn der Relay-SMTP nicht verfügbar ist.

Es ist Teil des normalen Repos für Debian, also denke ich, dass das auch für ubuntu gilt, nur apt-get install nullmailer sollte ausreichen. Dann können Sie es mit 1 oder mehr SMTP-Relais konfigurieren, die es verwenden darf.

Siehe hier: Ссылка

Als Nebenbemerkung wird ein Linux-System ohne ein Mailersystem auf viele andere Arten verkrüppelt, also denke ich, dass es eine gute Idee ist, wie.

    
jishi 04.07.2011 15:44
quelle
1

Das Einrichten der internen Funktion mail zur Verwendung von SMTP ist nur unter Windows möglich. Auf anderen Plattformen sollte PHP das lokal verfügbare sendmail- oder sendmail-drop-in gut gebrauchen.

Wenn Sie ein SMTP-System unter einem Nicht-Windows-Server verwenden möchten, müssen Sie eine Drittanbieter-Bibliothek verwenden, z. B. meinen bevorzugten Switfmailer .

Mit Swiftmailer sieht das Senden einer E-Mail wie folgt aus:

%Vor%     
AlexV 04.07.2011 15:42
quelle
1

Die Standard-PHP-Funktion 'mail ()' erhält nur die grundlegende Funktionalität zum Senden einer E-Mail. Für Rackspace müssen Sie wahrscheinlich eine SMTP-Verbindung zu ihrem Mail-Server einrichten. Um dies zu tun, ist es am besten, eine erweiterte und entwickelte Mailing-Klasse zu bekommen. Mehrere Code-Frameworks haben sie verfügbar. Wenn Sie nach einem guten Paket suchen, schauen Sie sich PHP Mailer an. Es ist fast ein Standard in diesen Tagen.

Ссылка

%Vor%     
jjwdesign 04.07.2011 15:43
quelle

Tags und Links