看板 PHP 關於我們 聯絡資訊
※ 引述《cleanwind (骨傲風清(掛網))》之銘言: : 想請問大家一個問題, : 寄信最簡單的 func 應該就屬 mail 了。 : 在 Windows 下要使用外部的 SMTP, : 只需要設定 php.ini 的 SMTP 與 sendmail_from , : 通常 Port 是預設 25 。 : 但是如果是在 Linux 下呢? : 我該怎麼設定,才能使用外部的 SMTP 寄信呢? ※ 引述《cleanwind (骨傲風清(掛網))》之銘言: : 想請問大家一個問題, : 寄信最簡單的 func 應該就屬 mail 了。 : 在 Windows 下要使用外部的 SMTP, : 只需要設定 php.ini 的 SMTP 與 sendmail_from , : 通常 Port 是預設 25 。 : 但是如果是在 Linux 下呢? : 我該怎麼設定,才能使用外部的 SMTP 寄信呢? ========= 本文歡迎轉載,但請註明 [email protected] ========= 我嘗試了好久,終於找到方法。 不過坦白說我真的不知道,這到底該算 PHP 還是 Linux? 不過我對 PHP 版比較熟,所以就 PO 在這, 如果版主覺得不適當,請給小的一個機會自己動刀 XD 測試環境:LAMP L: Ubuntu 9.0.4 A: Apache 2.2.11-2ubuntu2.3 M: mysql 5.1.30really5.0.75-0ubuntu10.2 P: PHP 5.2.6.dfsg.1-3ubuntu4.2 如果不知道該怎麼架起來的朋友,因為和本版差距太遠, 麻煩站內信或 MSN: [email protected] 問我囉。 網路上有人問這個問題,就會有人回應, 「你就在 php.ini 裡面設定 SMTP 和 smtp_port 就好」 非常厲害的可以完全忽略 For Win32 Only. 這幾個字, 甚至還會出現再度忽略 For Win32 Only. 的回應, 「不能使用的話記得要設定 sendmail_from 喔!」 如果你選擇 Windows XP 或 Windows Server 2003 , 或者其他由 Microsoft 出產的作業系統, 那麼此篇文章可以丟入資源回收桶, 如果你的作業系統只有回收桶,那可能就要注意一下了 XD 不過在開始之前,我必須很誠實的說我沒有使用過 PHPMailer , 這是因為謠傳 PHPMailer 會有一些小 bug ?! 再加上我對於 PHP的 Code 有很強烈的潔癖, 我無法忍受我不了解的東西在我的網頁裡面 XD Ubuntu 系統建議安裝的是 postfix , 也聽說 postfix 比 sendmail 容易設定, 這邊我選用的是 postfix 2.5.5-1.1 , 使用 套件管理程式 安裝時,會出現問你要選擇什麼, 如果你要使用外部的 SMTP ,那麼請選擇 satellite system , 之後會再問你要使用的 SMTP Server 與 本機的網域名稱(FQDN), 設定完成後,等待安裝結束就好了。 這時候打開 php.ini ,在下的環境是放在 /etc/php5/apache2/php.ini cleanwind@ptt-php:~$ sudo gedit /etc/php5/apache2/php.ini 就可以使用視窗編輯程式,搜尋 SMTP 把 SMTP 和 smtp_port 前面加入分號, 變成底下這樣 ; SMTP = localhost ; smtp_port = 25 如果 sendmail_from 前面有分號的話,請拿掉並填入適當的參數, sendmail_from = /usr/sbin/sendmail -t -i -f [email protected] 不過加了這段參數似乎發生了問題,寄件人可能會變成 www-data, 解決方法有二,一是使用 mail() 的 標頭 參數解決; 二則是加入另一段參數 -F 'cleanwind',變成 sendmail_from = /usr/sbin/sendmail -t -i -f [email protected] -F 'cleanwind' 這樣收件人看到的就是 "cleanwind" 了。 如果發出去的信還一直都沒有收到,懷疑是 postfix 有問題, 那麼可以從紀錄檔略窺一二, mail.info 或 mail.log 都會有。 如果需要做更進一步的設定, postfix 的設定檔在 /etc/postfix/main.cf cleanwind@ptt-php:~$ sudo gedit /etc/postfix/main.cf 都設定完畢後就是重新啟動 Apache 與 postfix 了, cleanwind@ptt-php:~$ sudo /etc/init.d/postfix restart cleanwind@ptt-php:~$ sudo /etc/init.d/apache2 restart 另外值得一提的是,postfix似乎是不允許本機之外的 relay 轉信, sendmail參數參考網頁 http://www.courier-mta.org/sendmail.html -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.145.203.222
reflynet:推,不過建議使用 gksudo gedit , 不要用sudo gedit :) 10/08 12:30