0
使用PHPMailer http://phpmailer.worxware.com/index.php?pg=examples如何測試我的SMTP設置是否正常工作,而不實際發送電子郵件?PHP測試SMTP配置
編輯:也許我應該使這個更通用,並問我如何檢查使用PHP的SMTP連接,而不發送電子郵件。
使用PHPMailer http://phpmailer.worxware.com/index.php?pg=examples如何測試我的SMTP設置是否正常工作,而不實際發送電子郵件?PHP測試SMTP配置
編輯:也許我應該使這個更通用,並問我如何檢查使用PHP的SMTP連接,而不發送電子郵件。
如果您使用PHPMailer,則可以在發送之前使用Connect()方法,並在連接不正確時檢查錯誤。
/**
* Connect to the server specified on the port specified.
* If the port is not specified use the default SMTP_PORT.
* If tval is specified then a connection will try and be
* established with the server for that number of seconds.
* If tval is not specified the default is 30 seconds to
* try on the connection.
*
* SMTP CODE SUCCESS: 220
* SMTP CODE FAILURE: 421
* @access public
* @return bool
*/
public function Connect($host, $port = 0, $tval = 30) {
// set the error val to null so there is no confusion
$this->error = null;
// make sure we are __not__ connected
if($this->connected()) {
// already connected, generate error
$this->error = array("error" => "Already connected to a server");
return false;
}
if(empty($port)) {
$port = $this->SMTP_PORT;
}
// connect to the smtp server
$this->smtp_conn = @fsockopen($host, // the host of the server
$port, // the port to use
$errno, // error number if any
$errstr, // error message if any
$tval); // give up after ? secs
// verify we connected properly
if(empty($this->smtp_conn)) {
$this->error = array("error" => "Failed to connect to server",
"errno" => $errno,
"errstr" => $errstr);
if($this->do_debug >= 1) {
echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />';
}
return false;
}
// SMTP server can take longer to respond, give longer timeout for first read
// Windows does not have support for this timeout function
if(substr(PHP_OS, 0, 3) != "WIN")
socket_set_timeout($this->smtp_conn, $tval, 0);
// get any announcement
$announce = $this->get_lines();
if($this->do_debug >= 2) {
echo "SMTP -> FROM SERVER:" . $announce . $this->CRLF . '<br />';
}
return true;
}
有沒有一種辦法,以確保他們的用戶名/密碼是否有效呢?不只是主機:端口? –
使用Connect()方法後,您應該執行Hello()和Authenticate($ username,$ password)。如果成功通過驗證,此方法將返回true(來自相同源) – Lupuz