失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php通过smtp发送邮件源码_PHP SMTP发送邮件函数

php通过smtp发送邮件源码_PHP SMTP发送邮件函数

时间:2018-12-03 03:38:04

相关推荐

php通过smtp发送邮件源码_PHP SMTP发送邮件函数

php代码$bfconfig = Array (

'sitename' => '网站名称',

);

$mail = Array (

'state' => 1,

'server' => '',

'port' => 25,

'auth' => 1,

'username' => 'admin@',

'password' => '123456',

'charset' => 'gbk',

'mailfrom' => 'admin@'

);

function sendmail($mail_to, $mail_subject, $mail_message) {

global $mail, $bfconfig;

date_default_timezone_set('PRC');

$mail_subject = '=?'.$mail['charset'].'?B?'.base64_encode($mail_subject).'?=';

$mail_message = chunk_split(base64_encode(preg_replace("/(^|(\r\n))(\.)/", "\1.\3", $mail_message)));

$headers .= "";

$headers .= "MIME-Version:1.0\r\n";

$headers .= "Content-type:text/html\r\n";

$headers .= "Content-Transfer-Encoding: base64\r\n";

$headers .= "From: ".$bfconfig['sitename']."\r\n";

$headers .= "Date: ".date("r")."\r\n";

list($msec, $sec) = explode(" ", microtime());

$headers .= "Message-ID: \r\n";

if(!$fp = fsockopen($mail['server'], $mail['port'], $errno, $errstr, 30)) {

exit("CONNECT - Unable to connect to the SMTP server");

}

stream_set_blocking($fp, true);

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != '220') {

exit("CONNECT - ".$lastmessage);

}

fputs($fp, ($mail['auth'] ? 'EHLO' : 'HELO')." befen\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 220 && substr($lastmessage, 0, 3) != 250) {

exit("HELO/EHLO - ".$lastmessage);

}

while(1) {

if(substr($lastmessage, 3, 1) != '-' || empty($lastmessage)) {

break;

}

$lastmessage = fgets($fp, 512);

}

if($mail['auth']) {

fputs($fp, "AUTH LOGIN\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 334) {

exit($lastmessage);

}

fputs($fp, base64_encode($mail['username'])."\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 334) {

exit("AUTH LOGIN - ".$lastmessage);

}

fputs($fp, base64_encode($mail['password'])."\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 235) {

exit("AUTH LOGIN - ".$lastmessage);

}

$email_from = $mail['mailfrom'];

}

fputs($fp, "MAIL FROM: .*/", "\\1", $email_from).">\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

fputs($fp, "MAIL FROM: .*/", "\\1", $email_from).">\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

exit("MAIL FROM - ".$lastmessage);

}

}

foreach(explode(',', $mail_to) as $touser) {

$touser = trim($touser);

if($touser) {

fputs($fp, "RCPT TO: .*/", "\\1", $touser).">\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

fputs($fp, "RCPT TO: .*/", "\\1", $touser).">\r\n");

$lastmessage = fgets($fp, 512);

exit("RCPT TO - ".$lastmessage);

}

}

}

fputs($fp, "DATA\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 354) {

exit("DATA - ".$lastmessage);

}

fputs($fp, $headers);

fputs($fp, "To: ".$mail_to."\r\n");

fputs($fp, "Subject: $mail_subject\r\n");

fputs($fp, "\r\n\r\n");

fputs($fp, "$mail_message\r\n.\r\n");

$lastmessage = fgets($fp, 512);

if(substr($lastmessage, 0, 3) != 250) {

exit("END - ".$lastmessage);

}

fputs($fp, "QUIT\r\n");

}

发布php中文网,转载请注明出处,感谢您的尊重!

如果觉得《php通过smtp发送邮件源码_PHP SMTP发送邮件函数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。