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

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

little bottle
發布: 2023-04-05 22:00:01
轉載
2730 人瀏覽過

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:

(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中文網其他相關文章!

相關標籤:
php
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板