最簡單的方法是在其他網站註冊一個電郵賬號(例如gmail),然後用ssmtp以該電郵賬號的身份寄電郵。一般來說在自己的伺服器上架一個電郵伺服器(mail server)是個不實際的做法 ,一來相當費功夫,二來寄出去的電郵很可能會被當成spam而被擋掉,無論你怎麼設定都無法解決這個問題。這篇文章很詳細地解釋不應自己架電郵伺服器的原因:https://www.digitalocean.com/community/tutorials/why-you-may-not-want-to-run-your-own-mail-server
1. 取得電郵賬號的SMTP資料
需要知道的資料:
SMTP server的domain和port (一般來說SSL/TLS會用465)
賬號和密碼
2. 安裝ssmtp
sudo apt-get update sudo apt-get install ssmtp
修改/etc/ssmtp/ssmtp.conf,設定以下的參數:
root=user@example.commailhub=smtp.example.com:465 FromLineOverride=YES AuthUser=user@example.com AuthPass=password UseTLS=YES
然後可以試試寄電郵:
echo "Hello world!" | ssmtp recipient@example.com
有些電郵伺服器指定要有From之類的header,那就先打以下的command line:
ssmtp recipient@example.com
按Enter後打電郵內容,打完按Ctrl+D,注意SUBJECT之後要空一行,再打電郵內容:
TO: recipient@example.com FROM: <from@example.com> SUBJECT: Testing subject Hello world!
3. 修改php.ini
PHP5的位置: /etc/php5/apache2/php.ini
PHP7的位置: /etc/php/7.0/apache2/php.ini
修改該sendmail_path(原本這句應該是被comment掉的)
修改該sendmail_path(原本這句應該是被comment掉的)
sendmail_path = /usr/sbin/ssmtp -t
重啟Apache後應該就可以用PHP的mail()了。如果電郵伺服器要求有From之類的header的話,在使用mail()時記得也要給header。