最簡單的方法是在其他網站註冊一個電郵賬號(例如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.com- mailhub=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。