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();

测试效果

基于PHP自带的mail函数实现发送邮件以及带有附件的邮件功能的更多相关文章

  1. 在Windows下利用php自带的mail函数发邮件

    这几天看<Head First PHP & MySQL>,里面有发邮件的例子是用系统自带的mail函数发送的,自己照书上写的试了一直不成功,后来终于在网上找到解决方案,现在总结下. ...

  2. linux中mail函数不能发送邮件怎么办

    原因分析: 1.检查下本机25端口是否有开放 2.mail是利用linux自带的sendmail服务来发送邮件的,service sendmail status 查看下该服务的状态 发送命令:mail ...

  3. LNMP笔记:解决mail函数不能发送邮件

    用LNMP环境,在探针里测试发送邮件,失败了.已经确定mail()函数是开启的. 问题根源 没有安装或启动 sendmail 组件 解决办法 我是新手,命令不熟,所以写的很详细,老鸟勿喷哦 1.重新安 ...

  4. linux中mail函数不能发送邮件

    没有安装或启动 sendmail 组件 解决办法 我是新手,命令不熟,所以写的很详细,老鸟勿喷哦 1.重新安装 sendmail 组件,我用的是 CentOS ,使用下面的命令安装 代码如下 复制代码 ...

  5. Java Mail 发送带有附件的邮件

    1.小编用的是163邮箱发送邮件,所以要先登录163邮箱开启POP3/SMTP/IMAP服务方法: 2.下载所需的java-mail 包 https://maven.java.net/content/ ...

  6. JS中setInterval、setTimeout不能传递带参数的函数的解决方案

    在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,接下来为大家介绍具体的解决方法 在JS中无论是setTimeout还是s ...

  7. JS中setInterval、setTimeout不能传递带参数的函数的解决办法

    在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,这就需要想方法解决. 一.采用字符串形式:——(缺陷)参数不能被周期性改 ...

  8. Linux服务器查看PHP是否支持mail()函数方法

    PHP的Mail函数可以用来发送邮件,如查看Linux服务器PHP是否支持Mail函数? PHP查看是否支持Mail函数的方法 Linux系统下的服务器,查看PHP是否支持Mail函数的方法有很多种: ...

  9. 【Mail】JavaMail发送带附件的邮件(二)

    上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...

随机推荐

  1. 集训第四周(高效算法设计)O题 (构造题)

    A permutation on the integers from 1 to n is, simply put, a particular rearrangement of these intege ...

  2. 升级到Offiec 2016后 Power View 不见了的处理方法

    好吧 并不是没有了,而只是快捷方式需要手动的调整出来, 过程还是挺复杂,给一个官方文档吧. Turn on Power View in Excel 2016 for Windows https://s ...

  3. iPhone安装ipa的方法(iTunes,PP助手)

    1,通过iTunes: 将手机与电脑通过数据线连接,打开电脑中的iTunes,将ipa文件添加到资料库(ipa文件是iTunes能够识别的文件),方式如下图,然后安装,同步即可. 2,通过PP助手: ...

  4. Android : reletive layout

    在兄弟的上下左右: android:layout_toRightOf="@id/btn1"/> android:layout_toLeftOf="@id/img1& ...

  5. heap corruption detected VS2015 C语言 报错

    申请动态内存时,申请的单元数为n,可用下标为0~n-1 但实际使用时超过了该范围,就会报这个错

  6. Leetcode 174.地下城游戏

    地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. ...

  7. Windows Server 2012 防火墙如何添加端口例外的方法(转)

    Windows Server 2012 防火墙如何添加端口例外的方法 Windows Server 2012 防火墙如何添加端口例外的方法 在Windows Server 2012系统中,如果用户想在 ...

  8. python爬虫实践--求职Top10城市

    前言 从智联招聘爬取相关信息后,我们关心的是如何对内容进行分析,获取用用的信息.本次以上篇文章“5分钟掌握智联招聘网站爬取并保存到MongoDB数据库”中爬取的数据为基础,分析关键词为“python” ...

  9. centos部署jenkins

    1. 实验环境:   操作系统: CentOS Linux release 7.2.1511 (Core) 软件版本: jdk-8u60-linux-x64    apache-tomcat-9.0. ...

  10. ShadowDOM

    HTML5 ShadowDOM & CustomElements KeKeMars 关注 2015.12.09 15:20* 字数 1239 阅读 1626评论 2喜欢 2 Web组件由四部分 ...