2008年1月8日 星期二

使用php透過Gmail發信

  要使用php讓網站也能寄信,要設定一堆有的沒有的設定,有的還要自己架Mail Server這實在太麻煩了,讓這一切透過Google大神幫我們搞定吧

  不過Google大神是使用SSL這種安全性加密技術來接收郵件的,這對某些php程式可能會水土不服,沒關係,這點小問題膜拜一下Google大神,很容易就解決了

##CONTINUE##  Google大神告訴我這篇文章有我想要的答案,不過這篇文章年代可能有點久遠囉,有些地方有小錯誤,讓我指正他一下 XD
  1. phpmailer出到2.0x囉,1.73實在是太老了點,如果在2.00版本的話,class.phpmailer.php這個檔案應該是在587行插入
    //Modify by Fwolf @ 2006-4-14, to enable ssl mail connection $host = $this->Host;
    $port = $this->Port;
    而不是在544行,另外在class.smtp.php則是不用做任何修改,因為它已經幫你改好了
  2. 由於Gmail寄信是用SSL協定,所以根據http://tw2.php.net/manual/en/ref.openssl.php的說法,要讓PHP的openssl啟動,需要複製ssleay32.dll 及 libeay32.dll 到system目錄,然後將php.ini中的openssl註解取消。如此,PHP便能支援openssl。
    這邊的說法也錯了ssleay32.dll與libeay32.dll是要複製到windows下的system32資料夾下,而不是system資料夾
  另外需要注意的是,如果你安裝的是XAMPP的話,php.ini是要去apache/bin底下找,千萬別呆呆的學我改php資料夾下的php.ini =.=,還有如果你有成功開啟openssl服務的話,在phpinfo頁面中應該可以看到以下畫面,若沒看到就是開啟失敗囉...


  幫大家一個忙
  引申閱讀:

7 則留言:

YUMMY 提到...

妳好~我都按照以上做法了~依然無法寄出~弄了2天簡直快風掉了!!!拜託請用MSN教我~~~謝謝!!!!!!!yummy_1008@hotmail.com

jikker 提到...

sorry, 你提出問題的方式有點錯誤,所以我無法回答你。
你應該先說明你出現了什麼問題,在什麼時機發生的,有沒有錯誤訊息...等,而不是只說你出了問題,這樣子別人想幫助你也沒辦法阿...

†ЯiNoA† 提到...

我試過了,但出現以下訊息
我也找不到錯在哪兒
而我的class.smtp.php第122行只有「$tval);」這幾個字而已
Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in C:\AppServ\phpMailer\class.phpmailer.php on line 1625

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'UTC' for '8.0/no DST' instead in C:\AppServ\phpMailer\class.phpmailer.php on line 1629

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?) in C:\AppServ\phpMailer\class.smtp.php on line 122
郵件送出失敗! 錯誤訊息: SMTP Error: Could not connect to SMTP host.
請問發什麼事?

jikker 提到...

看來像是你沒啟動SSL

†ЯiNoA† 提到...

是的,我沒重新啟動。
但會出現此一訊息
Fatal error: Call to undefined function send_mail() in C:\AppServ\www\index.php on line 64

在程式碼的第64行是
send_mail($to_address, $to_name ,$subject, $body);

jikker 提到...

它說沒有定義send_mail
你有include正確的檔案進來嗎?

雪嵐 提到...

您好
請問下載檔案 可以從新連結嗎
無法下載 謝謝