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服务器下测试有效)
<?php
class 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(
\'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";
if(filter_var($to, FILTER_VALIDATE_EMAIL)&&filter_var($from, FILTER_VALIDATE_EMAIL)){
$rst = $this->sendMail($to, $subject, $message, $from, \'\', $attache);
}
@unlink($file_name);
var_dump($rst);
}
}
//测试
$mailObj = new SendMailApi();
$rst = $mailObj->sendMailTest();