www.gusucode.com > Destoon B2B仿淘宝电子商务网站 UTF8 v6.0源码程序 > destoon/include/mail.func.php
<?php /* [Destoon B2B System] Copyright (c) 2008-2015 www.destoon.com This is NOT a freeware, use is subject to license.txt */ defined('IN_DESTOON') or exit('Access Denied'); function dmail($mail_to, $mail_subject, $mail_body, $mail_from = '', $mail_sign = true) { global $DT; if($DT['mail_type'] == 'close') return 'close'; if($DT['mail_sign'] && $mail_sign) $mail_body .= $DT['mail_sign']; if($DT['mail_type'] == 'sc') { $url = 'http://sendcloud.sohu.com/webapi/mail.send.json'; $par = 'api_user='.$DT['smtp_user'].'&api_key='.$DT['smtp_pass'].'&from='.$DT['mail_sender'].'&fromname='.convert($DT['mail_name'], DT_CHARSET, 'UTF-8').'&to='.$mail_to.'&subject='.convert($mail_subject, DT_CHARSET, 'UTF-8').'&html='.convert($mail_body, DT_CHARSET, 'UTF-8'); $rec = dcurl($url, $par); $arr = json_decode($rec, true); if($arr['message'] == 'success') return 'SUCCESS'; $errmsg = ''; foreach($arr['errors'] as $v) { $errmsg .= convert($v, 'UTF-8', DT_CHARSET)."\n"; } $errmsg = trim($errmsg); if(defined('TESTMAIL')) dalert('Error:'.$errmsg); log_write($errmsg, 'sendcloud'); return $errmsg; } else { $sendmail_from = $mail_from ? $mail_from : $DT['mail_sender']; $mail_from = "=?".strtolower(DT_CHARSET)."?B?".base64_encode($DT['mail_name'] ? $DT['mail_name'] : $DT['sitename'])."?= <".$sendmail_from.">"; $mail_subject = stripslashes($mail_subject); $mail_subject = str_replace("\r", '', str_replace("\n", '', $mail_subject)); $mail_subject = "=?".strtolower(DT_CHARSET)."?B?".base64_encode($mail_subject)."?="; $mail_body = stripslashes($mail_body); $mail_body = chunk_split(base64_encode(str_replace("\r\n.", " \r\n..", str_replace("\n", "\r\n", str_replace("\r", "\n", str_replace("\r\n", "\n", str_replace("\n\r", "\r", $mail_body))))))); $mail_dlmt = $DT['mail_delimiter'] == 1 ? "\r\n" : ($DT['mail_delimiter'] == 2 ? "\n" : "\r"); $headers = ''; $headers .= "From: $mail_from".$mail_dlmt; $headers .= "X-Priority: 3".$mail_dlmt; $headers .= "X-Mailer: Destoon".$mail_dlmt; $headers .= "MIME-Version: 1.0".$mail_dlmt; $headers .= "Content-type: text/html; charset=".DT_CHARSET.$mail_dlmt; $headers .= "Content-Transfer-Encoding: base64".$mail_dlmt; } if($DT['mail_type'] == 'smtp') { $host = $DT['smtp_host'].':'.$DT['smtp_port'].' '; if(!$fp = fsockopen($DT['smtp_host'], $DT['smtp_port'], $errno, $errstr, 30)) { $errmsg = $host.'can not connect to the SMTP server'; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } stream_set_blocking($fp, true); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != '220') { $errmsg = $host.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } fputs($fp, ($DT['smtp_auth'] ? 'EHLO' : 'HELO')." Destoon\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 220 && substr($RE, 0, 3) != 250) { $errmsg = $host.'HELO/EHLO - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } while(1) { if(substr($RE, 3, 1) != '-' || empty($RE)) break; $RE = fgets($fp, 512); } if($DT['smtp_auth']) { fputs($fp, "AUTH LOGIN\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 334) { $errmsg = $host.'AUTH LOGIN - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } fputs($fp, base64_encode($DT['smtp_user'])."\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 334) { $errmsg = $host.'USERNAME - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } fputs($fp, base64_encode($DT['smtp_pass'])."\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 235) { $errmsg = $host.'PASSWORD - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } $mail_from = strpos($DT['smtp_user'], '@') !== false ? $DT['smtp_user'] : $DT['mail_sender']; } else { $mail_from = $DT['mail_sender']; } fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $mail_from).">\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 250) { fputs($fp, "MAIL FROM: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $mail_from).">\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 250) { $errmsg = $host.'MAIL FROM - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } } foreach(explode(',', $mail_to) as $touser) { $touser = trim($touser); if($touser) { fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 250) { fputs($fp, "RCPT TO: <".preg_replace("/.*\<(.+?)\>.*/", "\\1", $touser).">\r\n"); $RE = fgets($fp, 512); $errmsg = $host.'RCPT TO - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } } } fputs($fp, "DATA\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 354) { $errmsg = $host.'DATA - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } list($msec, $sec) = explode(' ', microtime()); $headers .= "Message-ID: <".date('YmdHis', $sec).".".($msec*1000000).".".substr($mail_from, strpos($mail_from,'@')).">".$mail_dlmt; fputs($fp, "Date: ".date('r')."\r\n"); fputs($fp, "To: ".$mail_to."\r\n"); fputs($fp, "Subject: ".$mail_subject."\r\n"); fputs($fp, $headers."\r\n"); fputs($fp, "\r\n\r\n"); fputs($fp, "$mail_body\r\n.\r\n"); $RE = fgets($fp, 512); if(substr($RE, 0, 3) != 250) { $errmsg = $host.'END - '.$RE; if(defined('TESTMAIL')) dalert('Error:'.trim($errmsg)); log_write($errmsg, 'smtp'); return $errmsg; } fputs($fp, "QUIT\r\n"); return 'SUCCESS'; } else { if($DT['mail_type'] != 'mail') { ini_set('SMTP', $DT['smtp_host']); ini_set('smtp_port', $DT['smtp_port']); ini_set('sendmail_from', $sendmail_from); } return @mail($mail_to, $mail_subject, $mail_body, $headers) ? 'SUCCESS' : ''; } } ?>