穩定經得住考驗的smtp發送郵件的類(請付上使用方法),萬分感謝
最後更新:2016-06-13
來源:互聯網
上載者:User
求一個穩定經得住考驗的smtp發送郵件的類(請付上使用方法),萬分感謝!
我找了幾個,有的不能用,發不出,有的居然沒有本文;
還有一個本文這些都有,但沒發幾封就說 "帳號已經被鎖定 ",discuz\phpwind這些的郵件類又搞得太複雜,剝離不出來!
謝謝拉!!!
用mail函數和iis得smtp,它又老是說address invalid!怎麼改地址都不行: "aaa " or "aaa@163.com ",都是錯得
如果比較大,lein_urg@163.com,請發到郵箱,謝謝!
發郵件者20分起哈,如果正確得話60分起!
------解決方案--------------------
class smtp
{
/* Public Variables */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;
/* Private Variables */
var $sock;
/* Constractor */
function smtp($relay_host = " ", $smtp_port = 25,$auth = false,$user,$pass)
{
$this-> debug = FALSE;
$this-> smtp_port = $smtp_port;
$this-> relay_host = $relay_host;
$this-> time_out = 30; //is used in fsockopen()
$this-> auth = $auth;//auth
$this-> user = $user;
$this-> pass = $pass;
$this-> host_name = "localhost "; //is used in HELO command
$this-> log_file = " ";
$this-> sock = FALSE;
}
/* Main Function */
function sendmail($to, $from, $subject = " ", $body = " ", $mailtype, $cc = " ", $bcc = " ", $additional_headers = " ")
{
$mail_from = $this-> get_address($this-> strip_comment($from));
$body = ereg_replace( "(^|(\r\n))(\.) ", "\1.\3 ", $body);
$header .= "MIME-Version:1.0\r\n ";
if($mailtype== "HTML ")
{
$header .= "Content-Type:text/html\r\n ";
}
$header .= "To: ".$to. "\r\n ";
if ($cc != " ")
{
$header .= "Cc: ".$cc. "\r\n ";
}
$header .= "From: $from < ".$from. "> \r\n ";
$header .= "Subject: ".$subject. "\r\n ";
$header .= $additional_headers;
$header .= "Date: ".date( "r "). "\r\n ";
$header .= "X-Mailer:By Redhat (PHP/ ".phpversion(). ")\r\n ";
list($msec, $sec) = explode( " ", microtime());
$header .= "Message-ID: < ".date( "YmdHis ", $sec). ". ".($msec*1000000). ". ".$mail_from. "> \r\n ";
$TO = explode( ", ", $this-> strip_comment($to));
if ($cc != " ")
{
$TO = array_merge($TO, explode( ", ", $this-> strip_comment($cc)));
}
if ($bcc != " ")
{
$TO = array_merge($TO, explode( ", ", $this-> strip_comment($bcc)));
}
$sent = TRUE;
foreach ($TO as $rcpt_to)
{
$rcpt_to = $this-> get_address($rcpt_to);
if (!$this-> smtp_sockopen($rcpt_to))
{
$this-> log_write( "Error: Cannot send email to ".$rcpt_to. "\n ");
$sent = FALSE;
continue;
}
if ($this-> smtp_send($this-> host_name, $mail_from, $rcpt_to, $header, $body))
{
$this-> log_write( "E-mail has been sent to < ".$rcpt_to. "> \n ");
}
else
{
$this-> log_write( "Error: Cannot send email to < ".$rcpt_to. "> \n ");
$sent = FALSE;
}
fclose($this-> sock);
$this-> log_write( "Disconnected from remote host\n ");
}
return $sent;