利用邮件服务商的IMAP/TP服务,这里我们用163邮箱在说明一下,实现发送邮件功能的流程
1.登入163邮箱在设置里开启IMAP/TP服务
2.在客户端授权密码设置授权密码(需要手机验证),POP3/IMAP/TP/Exchange/CardD/CalD服务。
3.确认php.ini中;extension=php_openssl.dll是否开启,没有则添加extension=php_openssl.dll。
4.选择php自带函数mail()或者PHPMaile第三方的类进行发送邮件,下面介绍第一种自带mail()
一:
/*需要添加一个发送邮件的代理在config配置文件中*/
'MAIL_ADDRESS'='****@16
3.com',//初始化邮箱地址
'MAIL_TP'='smtp.16
3.com',//初始化邮箱TP服务器
'MAIL_LOGINNAME'='****@16
3.com',//初始化邮箱登录帐号
'MAIL_PASSWORD'='****',//初始化邮箱密码
'MAIL_CHARSET'='UTF-8',//编码
'MAIL_AUTH'=true,//邮箱认证
'MAIL_HTML'=true,//trueHTML格式falseTXT格式
/*以下是控制器中的使用*/
import('Org.Util.Mail');//导入邮件类
$sendTitle=邮件标题;//邮件标题
$sendData=邮件内容,可以使用html代码;//发送内容
$toMail=xxxxx@16
3.com;//收件人
$theme=留言反馈邮件;//邮件主题
SendMail($toMail,$sendTitle,$sendData,$theme);
二、
*phpemail邮件发送服务类,下载的phpmail把src时的文件放入指定文件夹,同时修改去除PHPMailer.php和TP.php时的命名空间即可
*库下载地址:https://github.com/PHPMailer/PHPMailer
这是封装的一个类
classSendemailService{
function__construct(){
$config=array(
'MAIL_CHARSET'='UTF-8',
'MAIL_TPAUTH'=true,//是否使用身份验证
'MAIL_ISHTML'=true,//是否使用html
'MAIL_USERNAME'='',//发件地址
'MAIL_TPHOST'='',//smtp地址
'MAIL_PASSWORD'='',//发件地址密码
'MAIL_TPSECURE'='',//使用ssl协议方式,ssl协议方式端口号是465/994
'MAIL_PORT'='25',//端口
'MAIL_GET_ADDRESS'='',//默认单一收件箱
);
$this-mailconfig=$config;
}
/**
*发送邮件
*@param$get_email
*@param$dataarray('title'='','detail'='')
*@returnbool
*/
publicfunctionsendEmail($data,$get_email=''){
vendor('PHPMailer.PHPMailer');
vendor('PHPMailer.TP');
$mail=new\PHPMailer();
$mail=$this-setBaseConfig($mail,$data,$get_email);
if(!$mail-send()){
returnMailerError:.$mail-ErrorInfo;//返回错误信息
}else{
return0;//为0表示发送成功
}
}
/**
*邮件基本设置
*@param$mail
*@param$data
*@paramstring$get_email
*@returnmixed
*/
publicfunctionsetBaseConfig($mail,$data,$get_email=''){
$config=$this-mailconfig;
$get_email=$get_email?$get_email:$config['MAIL_GET_ADDRESS'];
$mail-isTP();//使用TP服务
$mail-CharSet=utf8;//编码格式为utf8,不设置编码的话,中文会出现乱码
$mail-Host=$config['MAIL_TPHOST'];//发送方的TP服务器地址
$mail-TPAuth=$config['MAIL_TPAUTH'];//是否使用身份验证
$mail-Username=$config['MAIL_USERNAME'];//发送方的163邮箱用户名
$mail-Password=$config['MAIL_PASSWORD'];//发送方的邮箱密码,注意用163邮箱这里填写的是客户端授权密码而不是邮箱的登录密码!
$mail-TPSecure=$config['MAIL_TPSECURE'];//使用ssl协议方式
$mail-Port=$config['MAIL_PORT'];//163邮箱的ssl协议方式端口号是465/994
$mail-IsHTML($config['MAIL_ISHTML']);//支持html格式内容
$mail-setFrom($config['MAIL_USERNAME'],'');//设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@16
3.com),Mailer是当做名字显示
$mail-addAddress($get_email,'');//设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@16
3.com)
//$mail-addReplyTo(,王);//设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
//$mail-addCC(920348356@qq.com);//设置邮件抄送人,可以只写地址,上述的设置也可以只写地址
//$mail-addBCC();//设置秘密抄送人
//$mail-addAttachment(bug0.jpg);//添加附件
$mail-Subject=$data['title'];//邮件标题
$mail-Body=$data['detail'];//邮件正文
//$mail-AltBody=Thisistheplaintext纯文本;//这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
return$mail;
}
}
调用方法
$mail=new\Fwadmin\Service\SendemailService();
$send['title']=$title;
$send['detail']=$content;
$flag=$mail-sendEmail($send,$email);