1 頁 (共 10 頁)

[分享]如何設定SMTP (註冊有問題的看這篇)

發表於 : 2004-06-19 18:12
22183389
1. 首先先確定你有一個可以使用 Outlook 或其他軟體.正常收發信件的email
2. 進入後端 基本組態 => 電子郵件設定
3. "系統管理員電子郵件信箱"請輸入你的mail供應商所提共給您的email
4. "使用 SMTP 伺服器傳送電子郵件" 請選 (遊戲駭客他的是例外,一般的信箱都是不會要求你驗證的)
5. "smtp 伺服器網域名稱"請輸入你Outlook 內設定的 外寄郵件伺服器(SMTP)
6. "SMTP 使用者帳號"和"SMTP 密碼" 留空白\r

搞定~OK!!!

附註:

YAHOO的免費信箱不能寄,還有他的EMAIL也盡量別去用, 因為不符合RFC 822(SMTP)的規範, 反薯籐的好像可以

幻 狼 寫:畢竟每個人架設的方式和主機的狀況都不一樣,不過這兒有幾位前輩分別提出了不同的方法,希望大家能在看完全文後,找出最適用於自己的方式....... ;)

Re: [分享]如何設定SMTP

發表於 : 2004-06-20 20:00
carloserei
22183389 寫:1. 首先先確定你有一個可以使用 Outlook 或其他軟體.正常收發信件的email
2. 進入後端 基本組態 => 電子郵件設定
3. "系統管理員電子郵件信箱[/color]"請輸入你的mail供應商所提共給您的email
4. "使用 SMTP 伺服器傳送電子郵件" 請選
5. "smtp 伺服器網域名稱"請輸入你Outlook 內設定的 外寄郵件伺服器(SMTP)
6. "SMTP 使用者帳號"和"SMTP 密碼" 留空白\r

搞定~OK!!!

附註:

YAHOO的免費信箱不能寄,還有他的EMAIL也盡量別去用, 因為不符合RFC 822(SMTP)的規範, 反薯籐的好像可以
那請問一下php.ini和include\emailer這2個檔案要改嘛?

發表於 : 2004-06-20 20:23
php.ini - 設定

[mail function]
; For Win32 only.
SMTP = 輸入外寄郵件伺服器(必須對應下方)

; For Win32 only.
sendmail_from = 輸入郵件地址(必須對應上方)

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = Win使用者請留空

發表於 : 2004-06-21 16:37
22183389
文 寫:php.ini - 設定

[mail function]
; For Win32 only.
SMTP = 輸入外寄郵件伺服器(必須對應下方)

; For Win32 only.
sendmail_from = 輸入郵件地址(必須對應上方)

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = Win使用者請留空
這設定基本上是可以免了!!!
這是未指定SMTP SEERVER跟郵件地指才需要用到\r
PHPBB不必設這個

發表於 : 2004-06-21 21:05
22183389 寫:
文 寫:php.ini - 設定

[mail function]
; For Win32 only.
SMTP = 輸入外寄郵件伺服器(必須對應下方)

; For Win32 only.
sendmail_from = 輸入郵件地址(必須對應上方)

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = Win使用者請留空
這設定基本上是可以免了!!!
這是未指定SMTP SEERVER跟郵件地指才需要用到\r
PHPBB不必設這個
其他人我是不知道,但是我這沒設就是會有問題。

發表於 : 2004-06-22 11:24
messagebox
原文其實是有問題的~~~
當你 "使用 SMTP 伺服器傳送電子郵件" 選否
則將會使用php.ini的設定去送信~~~
也就是使用mail()這函式


"smtp 伺服器網域名稱"請輸入你Outlook 內設定的 外寄郵件伺服器(SMTP)
當你有填這項目~~表示你想直接跟SMTP SERVER去連線~~而非經由mail()這函式
所以 "使用 SMTP 伺服器傳送電子郵件" 要選

"SMTP 使用者帳號"和"SMTP 密碼" 留空白
這要依照個人所使用的郵件服務而有所不同~~~
假使你的SMTP SERVICE需要你做認證登入~~~
你將要輸入帳號密碼~~反之則免~~~
也就是你outlook裡有勾選 "我的伺服器需要認證"(如http://mail.onlyou.org/圖8)

這都只是基本的觀念問題~~

fish>>我不知道是不是有人需要做這種設定~~~
所以我補上~~圖片說明~~~~
但這不是本文回覆重點~~~
重點是你第4點~~~~
選否的話~~~你第5.6點的設定是多餘的~~
因為PHPBB已經使用PHP內建的mail()函式去做送信動作~~~
也就是使用php.ini的設定值~~~~
剛剛順便找出該段程式~~~
./includes/emailer.php
[php]<?php
if ( $this->use_smtp )
{
if ( !defined('SMTP_INCLUDED') )
{
include($phpbb_root_path . 'includes/smtp.' . $phpEx);
}

$result = smtpmail($to, $this->subject, $this->msg, $this->extra_headers);
}
else
{
$empty_to_header = ($to == '') ? TRUE : FALSE;
$to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;

$result = @mail($to, $this->subject, preg_replace("#(?<!
)
#s", "
", $this->msg), $this->extra_headers);

if (!$result && !$board_config['sendmail_fix'] && $empty_to_header)
{
$to = ' ';

$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '1'
WHERE config_name = 'sendmail_fix'";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Unable to update config table', '', __LINE__, __FILE__, $sql);
}

$board_config['sendmail_fix'] = 1;
$result = @mail($to, $this->subject, preg_replace("#(?<!
)
#s", "
", $this->msg), $this->extra_headers);
}
}
?>[/php]
當有勾選 "使用 SMTP 伺服器傳送電子郵件"
則會include ./includes/smtp.php 這個檔案~~
也就是使用你在PHPBB後台所設定的資料來送信\r

當沒有勾選 "使用 SMTP 伺服器傳送電子郵件"
則會使用PHP內建的mail()函式~~~
mail()函式則是使用php.ini的設定去送信~~~

TO: 文
我之前就在尊龍跟他戰過~~~所以我見怪不怪了~~~~
TO: fish
該範例並非是文的遊戲駭客所有(用)~~~
所以請拿掉這段文字~~~(遊戲駭客他的是例外,一般的信箱都是不會要求你驗證的)

發表於 : 2004-06-22 13:30
messagebox
SMTP 伺服器傳送電子郵件 是與否\r
只是決定你要使用PHPBB團隊所編寫的SMTP這個物件來送信\r
或者是\r
使用PHP內建的mail()函式來送信~~~


跟驗證一點關係都沒有~~~
需不需要驗證則取決於~~~
你是否有在帳號密碼欄輸入任何文字~~~

程式段\r
./includes/smtp.php
[php]<?php
// Do we want to use AUTH?, send RFC2554 EHLO, else send RFC821 HELO
// This improved as provided by SirSir to accomodate
if( !empty($board_config['smtp_username']) && !empty($board_config['smtp_password']) )
{
fputs($socket, "EHLO " . $board_config['smtp_host'] . "
");
server_parse($socket, "250", __LINE__);

fputs($socket, "AUTH LOGIN
");
server_parse($socket, "334", __LINE__);

fputs($socket, base64_encode($board_config['smtp_username']) . "
");
server_parse($socket, "334", __LINE__);

fputs($socket, base64_encode($board_config['smtp_password']) . "
");
server_parse($socket, "235", __LINE__);
}
else
{
fputs($socket, "HELO " . $board_config['smtp_host'] . "
");
server_parse($socket, "250", __LINE__);
}
?>[/php]

發表於 : 2004-06-24 16:49
過山雲
請問你們談的是兩種寄信的方法

哪一種方式比較不會被誤認為是"廣告信"而被退回呢?

目前URL與PCHOME都會看你郵件的主旨有沒有編碼來判定是不是"廣告信"
所以會導致帳號啟用信,主題訂閱通知,會員通知之類的電子郵件,會員都收不到.
謝謝~

發表於 : 2004-06-24 21:16
messagebox
過山雲 寫:請問你們談的是兩種寄信的方法

哪一種方式比較不會被誤認為是"廣告信"而被退回呢?

目前URL與PCHOME都會看你郵件的主旨有沒有編碼來判定是不是"廣告信"
所以會導致帳號啟用信,主題訂閱通知,會員通知之類的電子郵件,會員都收不到.
謝謝~
如果以郵件內容來判斷~~~
答案是~~都會~
因為內文是否編碼是由PHPBB來操作~~~
上述方式指示PHPBB運用的工具~~~
並不會幫你編碼~~~

想達到這點你將需要改寫PHPBB的程式~~~將主旨甚至內文做BASE64編碼後在丟給上述方法來發送~~~

發表於 : 2004-06-25 11:39
過山雲
感謝您的回應
那請教有解決問題的方法嗎?

發表於 : 2004-06-25 19:18
messagebox
解決方式~~~老實說~~~

PHPBB送出的信件是符合規定的~~~
退信原因我想應該跟信件內文沒有關係~~~~

剛剛看了你另外一篇文章提到:
智邦URL的回應:
經檢視,您這兩封信件可能符合我們的垃圾信規則,所以會被視為垃圾信退回.原因可能
是您的信件主旨未經過編碼.

如果智邦真的因為主旨沒經過編碼而拒絕~~~這也太過機車了~~~
迷之音:好機車的垃圾認定法
或許他認為會用它的信箱的人一定都是使用OUTLOOK之類的郵件閱讀軟體吧~~
這種規定下~~連BBS的信也不能收~~
且主旨要作BASE64編碼也不是標準規定~~~
這只是智邦一廂情願的方法~~~

以目前的廣告信送信軟體來說~~~
這種防護只是多此一舉~~~

想要解決~~~把主旨改掉吧~~~
用BASE64編碼
=?big5?B?(編碼後字串)?=
big5表示語系\r
B表示此字串使用BASE64編碼
(編碼後字串)請使用base64_encode()這函式
EX.
$new_sub = base64_encode($sub);

這樣主旨就是智邦所謂的標準了

發表於 : 2004-06-25 19:28
過山雲
您也覺得智邦URL很鳥吧?
其他的信箱有的至少還有一個專門放疑似廣告信的信件匣.
URL的信箱卻是二話不說,訊息:554,退信~
讓對方連看到,收到信的機會都沒有~
目前這個問題沒解決
蠻困擾的!

不曉得是不是要另外再架一個mail Server才能解決呢?(經過編碼)

發表於 : 2004-06-25 20:03
messagebox
過山雲 寫:您也覺得智邦URL很鳥吧?
其他的信箱有的至少還有一個專門放疑似廣告信的信件匣.
URL的信箱卻是二話不說,訊息:554,退信~
讓對方連看到,收到信的機會都沒有~
目前這個問題沒解決
蠻困擾的!

不曉得是不是要另外再架一個mail Server才能解決呢?(經過編碼)
這跟你的郵件伺服沒有關係~~
信要送到郵件伺服前就必須編碼(當然這不是規定)~(也就是說~編碼這動作是由成CLIENT去做的)

以你的例子來說~~
是需要修改PHPBB的程式~~~因為PHPBB原本是只送出沒編碼過的字串(包含檔頭、主旨、內文)~

Re: [分享]如何設定SMTP (註冊有問題的看這篇)

發表於 : 2004-07-01 06:49
jiachi
感謝以上各位大大詳細的教學,
我搞了一個晚上了,
其他文章不是教你改php.ini就是要你自己架mail server,不然就是說你一定哪裡設錯 :-( ,
我連mail server都架了還是不行,
就在我要放棄的時候看到這一篇,不小心試試把帳號密碼拿掉,
所有的設定忽然間都可以了,而且是之前試的五六種方法怎麼改都能寄哦!
我一氣之下把剛架好的mail server幹掉,改用isp的smtp :lol: ,
根本不需要修改php.ini,
重點在帳號密碼不要設!

另外,個人認為這一段翻譯可以再改進:

代碼: 選擇全部

使用 SMTP 伺服器傳送電子郵件
假如您想要使用 SMTP 伺服器發送電子郵件請選擇 '是'
可以翻成:

代碼: 選擇全部

使用 SMTP 伺服器傳送電子郵件
使用php內建Mail函數(依照php.ini設定)發信選'否',選'是'者必須設定SMTP伺服器網域名稱
然後帳號密碼之下應該附註:

代碼: 選擇全部

伺服器需要額外驗證者才填寫

發表於 : 2004-07-01 10:35
messagebox
你的解釋是正確的~~~
表示你已經完全搞懂他的用途~~~

且剛剛發現你的解釋應該會讓新手比較容易聽懂~~~

我建議管理員可以這段解釋重新張貼一篇文章~且置頂~~~
應該對於有這方面問題的有些幫助~~~

我在大致上附一下重點~~~

你要使用PHP.INI的設定~~~
使用 SMTP 伺服器傳送電子郵件 選
其他都不需填入資料
-------------------------------------------------
你要自己輸入SMTP SERVER~~~
使用 SMTP 伺服器傳送電子郵件 選
smtp 伺服器網域名稱 輸入你要使用的SMTP SERVER HOST/IP

以下文字是判斷你是否該輸入帳號密碼

當你輸入的SMTP需要作SMTP認證~~~
請在帳號密碼處輸入帳號密碼~~~

當你輸入的SMTP不需要作SMTP認證~~~
請在帳號密碼處留下空白~~~