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 則留言:

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

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

    回覆刪除
  3. 我試過了,但出現以下訊息
    我也找不到錯在哪兒
    而我的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.
    請問發什麼事?

    回覆刪除
  4. 是的,我沒重新啟動。
    但會出現此一訊息
    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);

    回覆刪除
  5. 它說沒有定義send_mail
    你有include正確的檔案進來嗎?

    回覆刪除
  6. 您好
    請問下載檔案 可以從新連結嗎
    無法下載 謝謝

    回覆刪除