Damit die Mail-Funktionen verfügbar sind, benötigt PHP ein installiertes und funktionsfähiges E-Mail-System. Das zu verwendende Programm wird durch die Konfigurationseinstellungen in der Datei php.ini festgelegt.
Dies bedeutet, dass Sie eine Art Mailserver installieren und PHP konfigurieren müssen, um ihn zu verwenden. Normalerweise ist dieser Mailserver in Ubuntu Postfix. Wenn jedoch die PHP-Seite, die Sie codieren, irgendwann auf der Seite eines Hosting-Dienstes gespeichert wird (z. B. xmission), ist dort höchstwahrscheinlich bereits ein Mail-Server installiert. In diesem Fall testen Sie Ihre Site einfach online anstatt lokal.
Wenn Sie es auf Ihrem eigenen System testen oder auf Ihrem eigenen Heimserver hosten möchten, fahren Sie fort mit:
Postfix-Installation
Installation: postfix / sudo apt-get install postfix
Während des Vorgangs werden Sie gefragt, in welchem Modus Postfix installiert werden soll. Es gibt vier mögliche Modi:
Internet : Ihr eigener Mailserver.
Satellit : Ein externer E-Mail-Anbieter (zB Google) wird zum Senden und Empfangen von E-Mails verwendet. Der Server erhält keine Mail.
Smarthost : Mischung aus beiden. E-Mails werden lokal gespeichert, aber über einen externen E-Mail-Anbieter gesendet.
Nur vor Ort : Betrifft Sie nicht. Das ist ein systeminterner Mailserver. Sie können nur E-Mails von Benutzer zu Benutzer im System senden.
Die restlichen Installationsoptionen hängen von Ihrer Wahl dieser allgemeinen Konfiguration ab.
Höchstwahrscheinlich wählen Sie eine Satelliteninstallation. Das heißt, die Post wird von einem externen Anbieter verschickt. Als SMTP-Server (Postausgangsserver) müssen Sie dann Ihren Provider SMTP angeben. Der Rest der Optionen ist selbsterklärend.
Konfiguration nach der Installation
Die meisten SMTP-Server erfordern eine Kennwortauthentifizierung, um E-Mails zu senden. Daher muss postfix dieses Passwort kennen. Es gibt auch Dinge wie Verschlüsselung zu berücksichtigen (die Sie googeln müssen). So konfigurieren Sie Postfix mithilfe der Kennwortauthentifizierung (sasl):
Installieren Sie
libsasl2-modules und
sasl2-bin,
indem Sie auf die Software Center-Symbole klicken oder vom Terminal aus:
Dies sollte in den meisten Fällen der Fall sein. Einige SMTP-Anbieter benötigen jedoch eine bestimmte Adresse als Absender oder Verschlüsselung.
Verwandte Themen : Das PEAR :: Mail- Interface könnte Sie auch interessieren.
Google Mail (und möglicherweise auch andere Dienste) mögen es möglicherweise nicht, dass Sie versuchen, E-Mails auf diese Weise zu senden, da dies nach deren Maßstäben als unsicher eingestuft werden könnte und Ihren Versuch blockieren würde Ihre Authentifizierung. Auch Ihr POP3 muss aktiviert sein.
Um dem entgegenzuwirken, siehe hier. (Wenn Sie auf der sicheren Seite sein möchten, erstellen Sie ein Dummy-Google Mail-Konto.)
Das Senden von E-Mails aus Ubuntu (lokal) funktioniert. Aber was ist, wenn ich möchte, dass mein Windows diesen Computer zum Senden von E-Mails verwendet (auch PHP)? Wie konfiguriere ich das?
JM at Work
Ich bin mir nicht sicher, ob ich die Frage verstehe. Sie können von Ihrer Ubuntu-Maschine aus schleifen. Nun wollen Sie mal über diesen Ubuntu-Rechner von Ihrem Windows-PC aus über PHP senden? Ist das korrekt?
con-f-use
2
Jetzt existiert das Paket libsasl2 nicht mehr. Ich benutze 11.04. Seine libsasl2-2 nach aktualisiertem Paket ..
mythicalcoder
61
Wie bereits erwähnt, wäre Postfix ein Overkill, wenn Sie beim Entwickeln von Anwendungen auf Ihrem Heimcomputer nur E-Mails von PHP senden müssen.
Ich persönlich benutze sehr einfaches und leichtes Paket ssmtp. Es wird ein beliebiger SMTP-Server zum Versenden ausgehender E-Mails verwendet. Installieren Sie es, indem Sie Folgendes ausführen:
sudo apt-get install ssmtp
Bearbeiten Sie dann die /etc/ssmtp/ssmtp.confDatei, kommentieren Sie die vorhandene Mailhub-Zeile aus und fügen Sie die folgenden Zeilen hinzu (dieses Beispiel gilt für den SMTP-Server von Google Mail):
(Geben Sie Ihren Google Mail-Benutzernamen und Ihr Passwort an. Natürlich können Sie auch einen anderen SMTP-Server verwenden.)
Stellen Sie nun sicher, dass Ihre php.ini korrekt ist sendmail_path. Es sollte lauten:
sendmail_path = /usr/sbin/sendmail -t
( Aus Kommentaren von @ dima-l und @ omar-sabic : Sie müssen hier nicht angeben ssmtp, da die Installation einen Symlink für erstellt haben sollte /usr/sbin/sendmail, der korrekt auf verweist ssmtp. Andernfalls müssen Sie angeben sendmail_path = /usr/sbin/ssmtp -t)
Laden Sie Apache neu und Ihr PHP sollte nun in der Lage sein, ausgehende E-Mails zu versenden.
Ich denke du meintest sendmail_path = /usr/sbin/ssmtp -t. Das hat funktioniert, danke
Omer Sabic
1
ssmtp sollte einen Symlink für erstellen /usr/sbin/sendmail, der korrekt auf ssmtp verweist. Also sendmail_path = /usr/sbin/sendmail -tsollte es auch funktionieren
Dima L.
2
Weitere Informationen zur Konfiguration ssmtp(einige nützliche Hinweise gefunden): So richten Sie PHP-Mail in Debian ein - diese Frage und dieser Link halfen, das Programm einzurichten.
Ich musste auch die folgende Zeile hinzufügen FromLineOverride=YES, um den folgenden Fehler zu vermeiden:550 5.7.60 SMTP; Client does not have permissions to send as this sender
Caumons
29
PHP benötigt einen SMTP-Client, um E-Mails zu senden. Sie könnten einen Mail Transfer Agent (MTA) mit vollem Funktionsumfang wie Postfix installieren , um diese Funktion auszuführen. Dies ist jedoch zu viel, wenn Sie nur E-Mails über PHP senden müssen. Installieren Sie stattdessen msmtp . Es ist leicht und viel einfacher zu konfigurieren.
Installieren Sie msmtp
sudo apt-get install msmtp-mta ca-certificates
Konfigurieren Sie es
Erstellen Sie eine neue Konfigurationsdatei:
sudo vi /etc/msmtprc
... mit folgenden Konfigurationsinformationen:
# Set defaults.
defaults
# Enable or disable TLS/SSL encryption.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Set up a default account's settings.
account default
host <smtp.example.net>
port 587
auth on
user <[email protected]>
password <password>
from <[email protected]>
syslog LOG_MAIL
Sie müssen die Konfigurationsdaten ersetzen, die durch alles in "<" und ">" dargestellt werden (einschließlich, entfernen Sie diese). Verwenden Sie für Host / Benutzername / Kennwort Ihre normalen Anmeldeinformationen zum Senden von E-Mails über Ihren E-Mail-Anbieter.
Natürlich wird 'sudo vi /etc/php5/conf.d' ohne eine php.ini nicht funktionieren. In meinem Fall (Ubuntu) musste ich '/etc/php5/apache2/php.ini' bearbeiten und auch Apache 'sudo /etc/init.d/apache2 reload' neu starten, damit es funktioniert.
Dejan
1
Übrigens können Sie Ihre msmtprc-Konfiguration testen, indem Sie Folgendes verwenden:cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Dejan
Wäre nett, aber es funktioniert bei mir nicht. In seinem Protokoll wird nichts angezeigt. Es scheint völlig in Ordnung, aber keine Würfel.
James T Snell
2
Um msmtp systemweit verfügbar zu machen, installieren Sie "msmtp-mta".
Colan
1
Falls Sie wie ich in den folgenden Anweisungen zu wörtlich sind, behalten Sie die <> -Klammern in der Konfigurationsdatei nicht bei. Ich habe gut 20 Minuten gebraucht, um das herauszufinden
de Raad
4
Sollte eine einfache Lösung sein. Sie müssen nur Postfix installieren, das den eigentlichen E-Mail-Versand durchführt.
sudo apt-get install postfix
Sie möchten dies von einem Terminal (und nicht vom Software-Center) aus ausführen, da Sie einige Fragen zur Einrichtung stellen müssen. Es sollte sich herausstellen, dass alle Standardeinstellungen (nur lokal usw.) akzeptiert werden.
Dies ist eine alte Frage und es gibt oben wertvolle Antworten, aber ich brauchte eximfür meine Umgebung. Stellen Sie außerdem sicher, dass Sie sendmail installiert haben ( $ which sendmail- sollte etwa / usr / sbin / sendmail zurückgeben). Ich habe bei linode.com einen guten Leitfaden gefunden , aber der Kern ist:
Ich muss Folgendes zum "Dummy-Google Mail-Konto" hinzufügen:
Dies wird dringend empfohlen, da Sie Ihr Google Mail-Konto so konfigurieren müssen, dass weniger sichere Anwendungen zugelassen werden: https://www.google.com/settings/u/0/security/lesssecureapps
Andernfalls erhalten Sie eine "Bitte melden Sie sich mit Ihrem Webbrowser an und versuchen Sie es dann erneut "Fehler in Ihrer /var/log/mail.logDatei.
Außerdem habe ich festgestellt, dass eine Zeitüberschreitung auftritt, es sei denn, ich sende dem SMTP-Server von Google Mail mein Stammzertifikat. Um dies zu tun:
sudo nano /etc/postfix/main.cf
Fügen Sie am Ende der Datei Folgendes hinzu
smtp_tls_CAfile = /etc/postfix/cacert.pem
Kopieren Sie dann das thawte-Root-Zertifikat in die cacert.pemDatei:
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
Ich fand, dass die Lösungen von Dima L. der einfachste und leichteste Weg sind, ein System zu entwickeln.
Nur eine Ergänzung für mehr Klarheit beim Einstellen. Sie sollten hostnamein der /etc/ssmtp/ssmtp.confDatei kommentieren . Die Beispieldatei ssmtp.confist wie folgt:
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yourdomain.com
UseSTARTTLS=YES
[email protected]
AuthPass=YOUREMAILPASSWORD
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
#hostname=
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
Antworten:
Aus dem Mail-Handbuch von PHP:
Dies bedeutet, dass Sie eine Art Mailserver installieren und PHP konfigurieren müssen, um ihn zu verwenden. Normalerweise ist dieser Mailserver in Ubuntu Postfix. Wenn jedoch die PHP-Seite, die Sie codieren, irgendwann auf der Seite eines Hosting-Dienstes gespeichert wird (z. B. xmission), ist dort höchstwahrscheinlich bereits ein Mail-Server installiert. In diesem Fall testen Sie Ihre Site einfach online anstatt lokal.
Wenn Sie es auf Ihrem eigenen System testen oder auf Ihrem eigenen Heimserver hosten möchten, fahren Sie fort mit:
Postfix-Installation
Installation: postfix /
sudo apt-get install postfix
Während des Vorgangs werden Sie gefragt, in welchem Modus Postfix installiert werden soll. Es gibt vier mögliche Modi:Die restlichen Installationsoptionen hängen von Ihrer Wahl dieser allgemeinen Konfiguration ab.
Höchstwahrscheinlich wählen Sie eine Satelliteninstallation. Das heißt, die Post wird von einem externen Anbieter verschickt. Als SMTP-Server (Postausgangsserver) müssen Sie dann Ihren Provider SMTP angeben. Der Rest der Optionen ist selbsterklärend.
Konfiguration nach der Installation
Die meisten SMTP-Server erfordern eine Kennwortauthentifizierung, um E-Mails zu senden. Daher muss postfix dieses Passwort kennen. Es gibt auch Dinge wie Verschlüsselung zu berücksichtigen (die Sie googeln müssen). So konfigurieren Sie Postfix mithilfe der Kennwortauthentifizierung (sasl):
Installieren Sie libsasl2-modules und sasl2-bin, indem Sie auf die Software Center-Symbole klicken oder vom Terminal aus:
Aktivieren Sie sasl-auth, indem Sie diese Zeilen zu hinzufügen
/etc/postfix/main.cf
Erstellen Sie eine Datei
/etc/postfix/sasl_password
mit einer Zeile wie:Ersetzen Sie das aktuelle Passwort, den Benutzernamen und die SMTP-Adresse.
Postfix aktualisieren:
Möglicherweise müssen Sie den Fehler "Erlaubnis verweigert" im
chown postfix:postfix /etc/postfix
Voraus umgehen .Dies sollte in den meisten Fällen der Fall sein. Einige SMTP-Anbieter benötigen jedoch eine bestimmte Adresse als Absender oder Verschlüsselung.
Verwandte Themen : Das PEAR :: Mail- Interface könnte Sie auch interessieren.
Google Mail (und möglicherweise auch andere Dienste) mögen es möglicherweise nicht, dass Sie versuchen, E-Mails auf diese Weise zu senden, da dies nach deren Maßstäben als unsicher eingestuft werden könnte und Ihren Versuch blockieren würde Ihre Authentifizierung. Auch Ihr POP3 muss aktiviert sein.
Um dem entgegenzuwirken, siehe hier. (Wenn Sie auf der sicheren Seite sein möchten, erstellen Sie ein Dummy-Google Mail-Konto.)
quelle
Wie bereits erwähnt, wäre Postfix ein Overkill, wenn Sie beim Entwickeln von Anwendungen auf Ihrem Heimcomputer nur E-Mails von PHP senden müssen.
Ich persönlich benutze sehr einfaches und leichtes Paket ssmtp. Es wird ein beliebiger SMTP-Server zum Versenden ausgehender E-Mails verwendet. Installieren Sie es, indem Sie Folgendes ausführen:
Bearbeiten Sie dann die
/etc/ssmtp/ssmtp.conf
Datei, kommentieren Sie die vorhandene Mailhub-Zeile aus und fügen Sie die folgenden Zeilen hinzu (dieses Beispiel gilt für den SMTP-Server von Google Mail):(Geben Sie Ihren Google Mail-Benutzernamen und Ihr Passwort an. Natürlich können Sie auch einen anderen SMTP-Server verwenden.)
Stellen Sie nun sicher, dass Ihre php.ini korrekt ist
sendmail_path
. Es sollte lauten:( Aus Kommentaren von @ dima-l und @ omar-sabic : Sie müssen hier nicht angeben
ssmtp
, da die Installation einen Symlink für erstellt haben sollte/usr/sbin/sendmail
, der korrekt auf verweistssmtp
. Andernfalls müssen Sie angebensendmail_path = /usr/sbin/ssmtp -t
)Laden Sie Apache neu und Ihr PHP sollte nun in der Lage sein, ausgehende E-Mails zu versenden.
quelle
sendmail_path = /usr/sbin/ssmtp -t
. Das hat funktioniert, danke/usr/sbin/sendmail
, der korrekt auf ssmtp verweist. Alsosendmail_path = /usr/sbin/sendmail -t
sollte es auch funktionierenssmtp
(einige nützliche Hinweise gefunden): So richten Sie PHP-Mail in Debian ein - diese Frage und dieser Link halfen, das Programm einzurichten.FromLineOverride=YES
, um den folgenden Fehler zu vermeiden:550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHP benötigt einen SMTP-Client, um E-Mails zu senden. Sie könnten einen Mail Transfer Agent (MTA) mit vollem Funktionsumfang wie Postfix installieren , um diese Funktion auszuführen. Dies ist jedoch zu viel, wenn Sie nur E-Mails über PHP senden müssen. Installieren Sie stattdessen msmtp . Es ist leicht und viel einfacher zu konfigurieren.
Installieren Sie msmtp
Konfigurieren Sie es
Erstellen Sie eine neue Konfigurationsdatei:
... mit folgenden Konfigurationsinformationen:
Sie müssen die Konfigurationsdaten ersetzen, die durch alles in "<" und ">" dargestellt werden (einschließlich, entfernen Sie diese). Verwenden Sie für Host / Benutzername / Kennwort Ihre normalen Anmeldeinformationen zum Senden von E-Mails über Ihren E-Mail-Anbieter.
Sagen Sie PHP, es zu benutzen
Fügen Sie diese einzelne Zeile hinzu:
quelle
cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Sollte eine einfache Lösung sein. Sie müssen nur Postfix installieren, das den eigentlichen E-Mail-Versand durchführt.
Sie möchten dies von einem Terminal (und nicht vom Software-Center) aus ausführen, da Sie einige Fragen zur Einrichtung stellen müssen. Es sollte sich herausstellen, dass alle Standardeinstellungen (nur lokal usw.) akzeptiert werden.
quelle
Dies ist eine alte Frage und es gibt oben wertvolle Antworten, aber ich brauchte
exim
für meine Umgebung. Stellen Sie außerdem sicher, dass Sie sendmail installiert haben ($ which sendmail
- sollte etwa / usr / sbin / sendmail zurückgeben). Ich habe bei linode.com einen guten Leitfaden gefunden , aber der Kern ist:gefolgt von:
Damit gelangen Sie zu einem interaktiven Editor.
quelle
Gute Antwort , con-f-use.
Ich muss Folgendes zum "Dummy-Google Mail-Konto" hinzufügen:
Dies wird dringend empfohlen, da Sie Ihr Google Mail-Konto so konfigurieren müssen, dass weniger sichere Anwendungen zugelassen werden: https://www.google.com/settings/u/0/security/lesssecureapps Andernfalls erhalten Sie eine "Bitte melden Sie sich mit Ihrem Webbrowser an und versuchen Sie es dann erneut "Fehler in Ihrer
/var/log/mail.log
Datei.Außerdem habe ich festgestellt, dass eine Zeitüberschreitung auftritt, es sei denn, ich sende dem SMTP-Server von Google Mail mein Stammzertifikat. Um dies zu tun:
Fügen Sie am Ende der Datei Folgendes hinzu
Kopieren Sie dann das thawte-Root-Zertifikat in die
cacert.pem
Datei:Hier ist der Link, den ich verwendet habe: Konfigurieren Sie Postfix für die Verwendung von Gmail SMTP unter Ubuntu | EasyEngine
Hoffentlich spart das jemandem ein paar Haarfollikel ...
quelle
Ich fand, dass die Lösungen von Dima L. der einfachste und leichteste Weg sind, ein System zu entwickeln.
Nur eine Ergänzung für mehr Klarheit beim Einstellen. Sie sollten
hostname
in der/etc/ssmtp/ssmtp.conf
Datei kommentieren . Die Beispieldateissmtp.conf
ist wie folgt:quelle