首頁 >後端開發 >php教程 >[PHP] 郵件發送mail()函數失敗問題(sendmail指令與postfix )

[PHP] 郵件發送mail()函數失敗問題(sendmail指令與postfix )

little bottle
little bottle轉載
2019-04-17 14:29:382743瀏覽

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檔案#############
<?php
$to=&#39;630892807@qq.com&#39;;
$subject = &#39;测试一下&#39;;
$message = &#39;我来测试&#39;;
$headers[] = &#39;From: shihan2@sopans.com&#39;;
mail($to, $subject, $message, implode("\r\n", $headers));
###測試成功########## ##### 相關教學:###php程式設計從入門到精通全套影片教學##########

以上是[PHP] 郵件發送mail()函數失敗問題(sendmail指令與postfix )的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除