1. php的mail()函數是可以發送郵件的, 但是一直就沒有測試成功過, 現在總結一下原因:
php的mail函數基於sendmail命令來發送, sendmail命令需要安裝postfix軟體
2.查看php的設定項sendmail_path ,這個就是mail函數呼叫的底層指令, php -i|grep sendmail
3.安裝postfix軟體才可以使用sendmail指令, apt-get install postfix
當軟體安裝完成後, 在命令列測試是否能夠發送成功
建立一個eml的文字檔,內容是最主要的幾個郵件協定頭
Subject: title-testing From: shihan2@sopans.com To: 630892807@qq.com Sorry, I'm testing. ~_~
/usr/sbin/sendmail -t -i -f shihan2@sopans.com < 2.eml
-f參數後面的是和from值對應的, 如果對應不上會報錯, 可以查看日誌檔案/var/log/mail.log , 來看錯誤原因和是否成功
#如果from值對應不上, 日誌中提示的資訊
傳送成功後對應的訊息, 250ok
#4. 修改php的設定檔, 使用php函數進行發信
我修改了這個設定檔, /etc/php/7.0/cli/php.ini , from參數給寫死了, 測試的時候, 如果不寫這個from郵箱,發送一直失敗, 提示501 Syntax: MAIL FROM: 208700f394e4cf40a7aa505373e0130b (in reply to MAIL FROM command)) ,mail from和信體的from對應不上
#看下配置
<?php $to='630892807@qq.com'; $subject = '测试一下'; $message = '我来测试'; $headers[] = 'From: shihan2@sopans.com'; mail($to, $subject, $message, implode("\r\n", $headers));###測試成功########## ##### 相關教學:###php程式設計從入門到精通全套影片教學##########
以上是[PHP] 郵件發送mail()函數失敗問題(sendmail指令與postfix )的詳細內容。更多資訊請關注PHP中文網其他相關文章!