Aby funkcje poczty były dostępne, PHP wymaga zainstalowanego i działającego systemu poczty elektronicznej. Program, który ma być używany, jest określony przez ustawienia konfiguracyjne w pliku php.ini.
Oznacza to, że musisz zainstalować jakiś serwer pocztowy i skonfigurować php, aby go używał. Zazwyczaj ten serwer pocztowy ma Postfix w Ubuntu. Jednak - jeśli kodowana strona php zostanie ostatecznie zapisana po stronie usługi hostingowej (np. Xmission), serwer poczty najprawdopodobniej już tam będzie zainstalowany. W takim przypadku po prostu przetestuj swoją witrynę online zamiast lokalnie.
Jeśli chcesz przetestować go we własnym systemie lub zamierzasz go hostować na własnym serwerze domowym, wykonaj następujące czynności:
Instalacja Postfix
Instalacja: postfix / sudo apt-get install postfix
Podczas tego procesu zostaniesz zapytany, w jakim trybie chcesz zainstalować Postfix. Istnieją cztery możliwe tryby:
Internet : Twój własny serwer pocztowy.
Satelita : Zewnętrzny dostawca poczty (np. Google) będzie używany do wysyłania i odbierania poczty. Serwer nie otrzyma żadnej poczty.
Smarthost : Mieszanka między nimi. Poczta jest przechowywana lokalnie, ale wysyłana przez zewnętrznego dostawcę poczty.
Tylko lokalnie : nie dotyczy ciebie. To systemowy wewnętrzny serwer pocztowy. Możesz wysyłać wiadomości e-mail od użytkownika do użytkownika w systemie.
Pozostałe opcje instalacji zależą od wyboru tej ogólnej konfiguracji.
Najprawdopodobniej wybierzesz instalację satelitarną. Oznacza to, że poczta zostanie wysłana za pośrednictwem zewnętrznego dostawcy. Jako serwer smtp (serwer poczty wychodzącej) będziesz musiał określić swoich dostawców smtp. Pozostałe opcje są oczywiste.
Konfiguracja po instalacji
Większość serwerów smtp wymaga uwierzytelnienia hasłem, aby wysłać pocztę. Postfix będzie musiał znać to hasło. Są też takie rzeczy, jak szyfrowanie, które należy wziąć pod uwagę (które trzeba będzie google). Oto jak skonfigurować postfiks za pomocą uwierzytelniania hasła (sasl):
Zainstaluj
moduły libsasl2 i
sasl2-bin
, klikając ikony Centrum oprogramowania lub z terminalu, używając:
Zastąp rzeczywiste hasło, nazwę użytkownika i adres smtp.
Zaktualizuj postfiks:
sudo chmod 600 /etc/postfix/sasl_password # for safety of your smtp password
sudo postmap hash:/etc/postfix/sasl_password
sudo postmap /etc/postfix/sender_canonical
sudo /etc/init.d/postfix restart
Można mieć na celu obejście „Permission denied” błąd przez chown postfix:postfix /etc/postfixwcześniej.
To powinno zrobić to w większości przypadków. Jednak niektórzy dostawcy smtp wymagają określonego adresu jako nadawcy lub szyfrowania.
Powiązane: Interfejs PEAR :: Mail może Cię również zainteresować.
Gmail (i być może inne usługi) może nie podobać się, że próbujesz wysłać pocztę w ten sposób, ponieważ może to być uznane za niepewne ze względu na ich standardy, i może zablokować twoją próbę, tj. Nic się nie wydarzy na ekranie ani gdzieś w całym procesie nie zostanie zablokowany twoje uwierzytelnienie. Również twój POP3 musi być włączony.
Aby temu przeciwdziałać, zobacz tutaj. (Jeśli chcesz być bezpieczny, utwórz fałszywe konto Gmail)
Wysyłanie poczty z Ubuntu (lokalne) działa. Ale co jeśli chcę, aby mój system Windows używał tego komputera do wysyłania poczty (również PHP)? Jak to skonfigurować?
JM at Work
Nie jestem pewien, czy dostaję pytanie. Możesz szlifować z komputera Ubuntu. Teraz, co chcesz zrobić, to wysłać mal za pośrednictwem tego komputera Ubuntu z komputera z systemem Windows za pośrednictwem php? Czy to jest poprawne?
con-f-use
2
Teraz pakiet libsasl2 nie istnieje. Używam 11.04. Jego libsasl2-2 jak na zaktualizowany pakiet ..
mythicalcoder
61
Jak już wspomniano, postfiks byłby przesadą, gdybyś tylko musiał wysyłać e-maile z php podczas tworzenia aplikacji na komputerze domowym.
Osobiście używam bardzo prostego i lekkiego pakietu ssmtp. Będzie używać dowolnego serwera smtp do wysyłania wychodzących wiadomości e-mail. Zainstaluj, uruchamiając:
sudo apt-get install ssmtp
Następnie edytuj /etc/ssmtp/ssmtp.confplik, skomentuj istniejącą linię mailhub i dodaj następujące linie (ten przykład dotyczy serwera smtp gmail):
(Podaj swoją nazwę użytkownika i hasło do Gmaila. Oczywiście możesz użyć dowolnego innego serwera SMTP).
Teraz upewnij się, że twój php.ini ma poprawne sendmail_path. Powinien on brzmieć:
sendmail_path = /usr/sbin/sendmail -t
( Z komentarzy @ dima-l i @ omar-sabic : Nie musisz ssmtptutaj określać , ponieważ instalacja powinna utworzyć dowiązanie symboliczne /usr/sbin/sendmail, na które poprawnie wskazuje ssmtp. W przeciwnym razie musisz określić sendmail_path = /usr/sbin/ssmtp -t)
Ponownie załaduj apache, a twój php powinien móc teraz wysyłać wychodzące wiadomości e-mail.
Myślę, że miałeś na myśli sendmail_path = /usr/sbin/ssmtp -t. Udało się, dzięki
Omer Sabic,
1
ssmtp powinien utworzyć dowiązanie symboliczne /usr/sbin/sendmail, które poprawnie wskazuje na ssmtp. Tak więc używanie również sendmail_path = /usr/sbin/sendmail -tpowinno działać
Dima L.
2
Więcej informacji na temat konfigurowania ssmtp(znalazłem przydatne uwagi): Jak skonfigurować pocztę PHP w Debianie - to pytanie + ten link pomogło skonfigurować program.
Musiałem także dodać następujący wiersz: FromLineOverride=YESaby uniknąć następującego błędu:550 5.7.60 SMTP; Client does not have permissions to send as this sender
Caumons,
29
PHP wymaga klienta SMTP do wysyłania poczty. Możesz zainstalować w pełni funkcjonalny agent przesyłania poczty (MTA), taki jak Postfix, aby obsługiwać tę funkcję, ale jest to przesada, jeśli potrzebujesz tylko wysłać pocztę przez PHP. Zamiast tego zainstaluj msmtp . Jest lekki i znacznie prostszy w konfiguracji.
Zainstaluj msmtp
sudo apt-get install msmtp-mta ca-certificates
Skonfiguruj to
Utwórz nowy plik konfiguracyjny:
sudo vi /etc/msmtprc
... z następującymi informacjami o konfiguracji:
# 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
Musisz zastąpić dane konfiguracyjne reprezentowane przez wszystko w „<” i „>” (włącznie, usuń je). W przypadku hosta / nazwy użytkownika / hasła użyj normalnych poświadczeń do wysyłania poczty za pośrednictwem swojego dostawcy poczty.
Oczywiście 'sudo vi /etc/php5/conf.d' bez php.ini nie będzie działać. W moim przypadku (Ubuntu) musiałem edytować „/etc/php5/apache2/php.ini”, a także ponownie uruchomić apache „sudo /etc/init.d/apache2 reload”, aby działał.
Dejan,
1
BTW, możesz przetestować konfigurację msmtprc, używając:cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Dejan
Byłoby miło, ale to nie działa dla mnie. Nic nie pojawia się w dzienniku. Wydaje się całkowicie w porządku, ale nie ma kości.
James T Snell,
2
Aby msmtp był dostępny w całym systemie, zainstaluj „msmtp-mta”.
colan
1
Jeśli jesteś zbyt dosłowny, jak ja w poniższych instrukcjach, tak naprawdę nie trzymaj nawiasów <> w pliku konfiguracyjnym. Zajęło mi to dobre 20 minut, żeby to zrozumieć
de Raad,
4
Powinno być prostym rozwiązaniem. Musisz tylko zainstalować Postfix, który będzie wysyłał e-maile.
sudo apt-get install postfix
Chcesz uruchomić to z terminala (a nie centrum oprogramowania), ponieważ musi zadać ci kilka pytań konfiguracyjnych. Powinieneś znaleźć akceptację wszystkich wartości domyślnych (tylko lokalnie itp.).
To stare pytanie i powyżej są godne odpowiedzi, ale potrzebowałem eximdla mojego środowiska. Ponadto potwierdź, że masz zainstalowany sendmail ( $ which sendmail- powinien zwrócić coś takiego jak / usr / sbin / sendmail). Znalazłem dobry przewodnik na linode.com , ale sedno jest następujące:
Muszę dodać jedną rzecz do „fałszywego konta Gmail”:
Jest to wysoce zalecane, ponieważ musisz skonfigurować konto Gmail, aby zezwalać na mniej bezpieczne aplikacje: https://www.google.com/settings/u/0/security/lesssecureapps
W przeciwnym razie otrzymasz „zaloguj się za pomocą przeglądarki internetowej a następnie spróbuj ponownie ”błąd w /var/log/mail.logpliku.
również okazało się, że pojawia się błąd przekroczenia limitu czasu, chyba że wyślę smailp z Gmaila do serwera certyfikatu głównego. Aby to zrobić:
sudo nano /etc/postfix/main.cf
dodaj następujące na dole pliku
smtp_tls_CAfile = /etc/postfix/cacert.pem
Następnie skopiuj certyfikat thawte root do cacert.pempliku:
cat /etc/ssl/certs/thawte_Primary_Root_CA.pem | sudo tee -a /etc/postfix/cacert.pem
Odkryłem, że rozwiązania dostarczone przez Dima L. są najłatwiejszym i najlżejszym sposobem na system.
Tylko jakiś dodatek dla większej przejrzystości ustawień. Powinieneś skomentować hostnamew /etc/ssmtp/ssmtp.confpliku. Przykładowy ssmtp.confplik jest jak poniżej:
#
# 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
Odpowiedzi:
Z podręcznika poczty php:
Oznacza to, że musisz zainstalować jakiś serwer pocztowy i skonfigurować php, aby go używał. Zazwyczaj ten serwer pocztowy ma Postfix w Ubuntu. Jednak - jeśli kodowana strona php zostanie ostatecznie zapisana po stronie usługi hostingowej (np. Xmission), serwer poczty najprawdopodobniej już tam będzie zainstalowany. W takim przypadku po prostu przetestuj swoją witrynę online zamiast lokalnie.
Jeśli chcesz przetestować go we własnym systemie lub zamierzasz go hostować na własnym serwerze domowym, wykonaj następujące czynności:
Instalacja Postfix
Instalacja: postfix /
sudo apt-get install postfix
Podczas tego procesu zostaniesz zapytany, w jakim trybie chcesz zainstalować Postfix. Istnieją cztery możliwe tryby:Pozostałe opcje instalacji zależą od wyboru tej ogólnej konfiguracji.
Najprawdopodobniej wybierzesz instalację satelitarną. Oznacza to, że poczta zostanie wysłana za pośrednictwem zewnętrznego dostawcy. Jako serwer smtp (serwer poczty wychodzącej) będziesz musiał określić swoich dostawców smtp. Pozostałe opcje są oczywiste.
Konfiguracja po instalacji
Większość serwerów smtp wymaga uwierzytelnienia hasłem, aby wysłać pocztę. Postfix będzie musiał znać to hasło. Są też takie rzeczy, jak szyfrowanie, które należy wziąć pod uwagę (które trzeba będzie google). Oto jak skonfigurować postfiks za pomocą uwierzytelniania hasła (sasl):
Zainstaluj moduły libsasl2 i sasl2-bin , klikając ikony Centrum oprogramowania lub z terminalu, używając:
Włącz sasl-auth, dodając te wiersze do
/etc/postfix/main.cf
Utwórz plik
/etc/postfix/sasl_password
z linią taką jak:Zastąp rzeczywiste hasło, nazwę użytkownika i adres smtp.
Zaktualizuj postfiks:
Można mieć na celu obejście „Permission denied” błąd przez
chown postfix:postfix /etc/postfix
wcześniej.To powinno zrobić to w większości przypadków. Jednak niektórzy dostawcy smtp wymagają określonego adresu jako nadawcy lub szyfrowania.
Powiązane: Interfejs PEAR :: Mail może Cię również zainteresować.
Gmail (i być może inne usługi) może nie podobać się, że próbujesz wysłać pocztę w ten sposób, ponieważ może to być uznane za niepewne ze względu na ich standardy, i może zablokować twoją próbę, tj. Nic się nie wydarzy na ekranie ani gdzieś w całym procesie nie zostanie zablokowany twoje uwierzytelnienie. Również twój POP3 musi być włączony.
Aby temu przeciwdziałać, zobacz tutaj. (Jeśli chcesz być bezpieczny, utwórz fałszywe konto Gmail)
źródło
Jak już wspomniano, postfiks byłby przesadą, gdybyś tylko musiał wysyłać e-maile z php podczas tworzenia aplikacji na komputerze domowym.
Osobiście używam bardzo prostego i lekkiego pakietu ssmtp. Będzie używać dowolnego serwera smtp do wysyłania wychodzących wiadomości e-mail. Zainstaluj, uruchamiając:
Następnie edytuj
/etc/ssmtp/ssmtp.conf
plik, skomentuj istniejącą linię mailhub i dodaj następujące linie (ten przykład dotyczy serwera smtp gmail):(Podaj swoją nazwę użytkownika i hasło do Gmaila. Oczywiście możesz użyć dowolnego innego serwera SMTP).
Teraz upewnij się, że twój php.ini ma poprawne
sendmail_path
. Powinien on brzmieć:( Z komentarzy @ dima-l i @ omar-sabic : Nie musisz
ssmtp
tutaj określać , ponieważ instalacja powinna utworzyć dowiązanie symboliczne/usr/sbin/sendmail
, na które poprawnie wskazujessmtp
. W przeciwnym razie musisz określićsendmail_path = /usr/sbin/ssmtp -t
)Ponownie załaduj apache, a twój php powinien móc teraz wysyłać wychodzące wiadomości e-mail.
źródło
sendmail_path = /usr/sbin/ssmtp -t
. Udało się, dzięki/usr/sbin/sendmail
, które poprawnie wskazuje na ssmtp. Tak więc używanie równieżsendmail_path = /usr/sbin/sendmail -t
powinno działaćssmtp
(znalazłem przydatne uwagi): Jak skonfigurować pocztę PHP w Debianie - to pytanie + ten link pomogło skonfigurować program.FromLineOverride=YES
aby uniknąć następującego błędu:550 5.7.60 SMTP; Client does not have permissions to send as this sender
PHP wymaga klienta SMTP do wysyłania poczty. Możesz zainstalować w pełni funkcjonalny agent przesyłania poczty (MTA), taki jak Postfix, aby obsługiwać tę funkcję, ale jest to przesada, jeśli potrzebujesz tylko wysłać pocztę przez PHP. Zamiast tego zainstaluj msmtp . Jest lekki i znacznie prostszy w konfiguracji.
Zainstaluj msmtp
Skonfiguruj to
Utwórz nowy plik konfiguracyjny:
... z następującymi informacjami o konfiguracji:
Musisz zastąpić dane konfiguracyjne reprezentowane przez wszystko w „<” i „>” (włącznie, usuń je). W przypadku hosta / nazwy użytkownika / hasła użyj normalnych poświadczeń do wysyłania poczty za pośrednictwem swojego dostawcy poczty.
Powiedz PHP, aby go używał
Dodaj tę pojedynczą linię:
źródło
cat <<EOF | msmtp <[email protected]> Subject: test This is a test! EOF
Powinno być prostym rozwiązaniem. Musisz tylko zainstalować Postfix, który będzie wysyłał e-maile.
Chcesz uruchomić to z terminala (a nie centrum oprogramowania), ponieważ musi zadać ci kilka pytań konfiguracyjnych. Powinieneś znaleźć akceptację wszystkich wartości domyślnych (tylko lokalnie itp.).
źródło
To stare pytanie i powyżej są godne odpowiedzi, ale potrzebowałem
exim
dla mojego środowiska. Ponadto potwierdź, że masz zainstalowany sendmail ($ which sendmail
- powinien zwrócić coś takiego jak / usr / sbin / sendmail). Znalazłem dobry przewodnik na linode.com , ale sedno jest następujące:śledzony przez:
który przeniesie Cię do interaktywnego edytora.
źródło
Świetna odpowiedź , con-f-use.
Muszę dodać jedną rzecz do „fałszywego konta Gmail”:
Jest to wysoce zalecane, ponieważ musisz skonfigurować konto Gmail, aby zezwalać na mniej bezpieczne aplikacje: https://www.google.com/settings/u/0/security/lesssecureapps W przeciwnym razie otrzymasz „zaloguj się za pomocą przeglądarki internetowej a następnie spróbuj ponownie ”błąd w
/var/log/mail.log
pliku.również okazało się, że pojawia się błąd przekroczenia limitu czasu, chyba że wyślę smailp z Gmaila do serwera certyfikatu głównego. Aby to zrobić:
dodaj następujące na dole pliku
Następnie skopiuj certyfikat thawte root do
cacert.pem
pliku:Oto link, którego użyłem: Skonfiguruj Postfix do używania Gmail SMTP na Ubuntu | EasyEngine
Mam nadzieję, że uratuje to komuś kilka mieszków włosowych ...
źródło
Odkryłem, że rozwiązania dostarczone przez Dima L. są najłatwiejszym i najlżejszym sposobem na system.
Tylko jakiś dodatek dla większej przejrzystości ustawień. Powinieneś skomentować
hostname
w/etc/ssmtp/ssmtp.conf
pliku. Przykładowyssmtp.conf
plik jest jak poniżej:źródło