PHPmail函数简介
bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )
其中: $to 必需。规定邮件的接收者
$subject 必需。规定邮件的主题。该参数不能包含任何换行字符。
$message 必需。规定要发送的消息。
$additional_headers 规定额外的报头,比如 From, Cc 以及 Bcc等
$additional_parameters 规定 sendmail 程序的额外参数
参考代码(Linux服务器下测试有效)
<?phpclass SendMailApi{ ???/** ????* @param ?$to 收件人 ????* @param ?$subject 邮件主题 ????* @param ?$message 发送的消息 ????* @param ?$from 发件人 ????* @param ?$content_type 类型 ????* @param ?$attache 附件 ????*/ ???public function sendMail($to, $subject, $message, $from, $content_type, $attache = array()) ???{ ???????if (!empty($from)) $head = "From: ??$from\n"; ???????if (empty($content_type)) $content_type = "text/plain"; ???????if (is_array($attache)) { ???????????$boundary = "===" . md5(uniqid("")) . "==="; ???????????$head .= "Mime-Version: ??1.0\nContent-Type: ??multipart/mixed; ??boundary=\""; ???????????$head .= "$boundary\"\n\nThis ??is ??a ??multi-part ??message ??in ??MIME ??format.\n\n"; ???????????$head .= "--$boundary\n"; ???????????$head .= "Content-Type: ??$content_type\n"; ???????????$head .= "\n$message\n\n"; ???????????while (list($key, $val) = each($attache)) { ???????????????$fd = fopen("$val", "r") or die("unable to open file$val"); ???????????????$contents = chunk_split(base64_encode(fread($fd, filesize("$val")))); ???????????????fclose($fd); ???????????????$head .= "--$boundary\n"; ???????????????$head .= "Content-Type: ??application/octet-stream; ??name=\"" . basename($val); ???????????????$head .= "\"\nContent-Transfer-Encoding: ??BASE64\n"; ???????????????$head .= "Content-Disposition: ??attachment; ??filename=\"" . basename($val); ???????????????$head .= "\"\n\n" . $contents . "\n\n"; ???????????} ???????????$head .= "--" . $boundary . "--\n\n"; ???????} else { ???????????if (!empty($content_type)) { ???????????????$head .= "Content-Type: ?$content_type\n"; ???????????????$head .= "\n$message\n"; ???????????} ???????} ???????return mail($to, $subject, "", $head); ???} ???public function sendMailTest() ???{ ???????$to = "xxxxx@xxxx.com"; ????????// 邮件接收者 ???????$subject = "test"; ???????????????// 邮件标题 ???????$from = "xxx@xxxxx.com"; ??// 邮件发送者 ???????$subject = "=?UTF-8?B?" . base64_encode($subject) . "?="; ???????$order_bn = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); ???????$memer_id = self::mt_rand(1000000,9999999); ???????$ship_mobile = '139xxxxxxxx'; ???????//产生随机数据 ???????$res = array( ???????????0 => ???????????????array( ???????????????????'order_bn' => $order_bn, ???????????????????'member_id' => $memer_id , ???????????????????'ship_mobile' => $ship_mobile, ???????????????), ???????????1 => ???????????????array( ???????????????????'order_bn' => $order_bn, ???????????????????'member_id' => $memer_id, ???????????????????'ship_mobile' => $ship_mobile, ???????????????), ???????????2 => ???????????????array( ???????????????????'order_bn' => $order_bn, ???????????????????'member_id' => $memer_id, ???????????????????'ship_mobile' => $ship_mobile, ???????????????), ???????????3 => ???????????????array( ???????????????????'order_bn' => $order_bn, ???????????????????'member_id' => $memer_id, ???????????????????'ship_mobile' => $ship_mobile, ???????????????), ???????????4 => ???????????????array( ???????????????????'order_bn' => $order_bn, ???????????????????'member_id' => $memer_id, ???????????????????'ship_mobile' => $ship_mobile, ???????????????), ???????????5 => ???????????????array( ???????????????????'order_bn' => $order_bn, ???????????????????'member_id' => $memer_id, ???????????????????'ship_mobile' => $ship_mobile, ???????????????), ???????????6 => ???????????????array( ???????????????????array( ???????????????????????'order_bn' => $order_bn, ???????????????????????'member_id' => $memer_id, ???????????????????????'ship_mobile' => $ship_mobile, ???????????????????)); ???????$csv_header = array('订单号', '会员id', '手机号'); ???????$file_name = date("Y-m-d") . ".csv"; ???????$fp = fopen("$file_name", 'a'); ???????// 处理头部标题 ???????$header = implode(',', $csv_header) . PHP_EOL; ???????// 处理内容 ???????$content = ''; ???????foreach ($res as $k => $v) { ???????????$content .= implode(',', $v) . PHP_EOL; ???????} ???????// 拼接 ???????$csv = $header . $content; ???????// 写入并关闭资源 ???????fwrite($fp, $csv); ???????fclose($fp); ???????//添加附件 ???????$attache = array($file_name); ???????$message = " This is a test"; ?// 邮件正文 ???????$headers = "From: $from" . "\n";// 头部信息设置 ???????$headers .= "MIME-Version: 1.0" . "\n"; ???????$headers .= "Content-type: text/html; charset=uft-8" . "\r\n"; ???????$headers .= "Content-Transfer-Encoding: 8bit"; ???????$rst = $this->sendMail($to, $subject, $message, $from, '', $attache); ???????@unlink($file_name); ???????var_dump($rst); ???}}//测试$mailObj = new SendMailApi();$rst = $mailObj->sendMailTest();