对于程序员来说,邮件发送是项目中常用的功能。这里不讲源码,只讲如何快速实现。phpMailer是一个非常强大的php发送邮件类,可以设置发送邮件地址、回复地址、邮件主题、html网页、上传附件,使用起来非常方便。phpMailer的特点:在邮件中包含多个TO、CC、BCC和REPLY-TO。该平台应用广泛,支持的SMTP服务器包括Sendmail、qmail、Postfix、Gmail、Imail、Exchange等。支持嵌入图片、附件、HTML邮件。可靠、强大的调试功能。支持SMTP身份验证。自定义标题。支持8位、base64、二进制和引用打印编码。如何安装或下载phpmailer:从github下载:[https://github.com/PHPMailer/...]就这三个文件。php打开了socket和opensslextensions,这种错误到时候就可以解决了,我们可以把这个压缩包解压到我们的项目中。对于php,如果我们使用框架,比如thinkPHP,那么我们把它放在extend目录下,如下图:ThinkPHP在调用的时候使用如下:如果没有使用框架,那么就放在extend目录下public三方引用目录或者直接放到你当前php文件的同级目录下都没有关系,把引用路径写对就行了,如下图:相信大家对此没有问题调用时点如下。重点看代码层面:发送前需要有自己的邮件服务器,实际测试时可以使用自己申请的免费邮箱。最方便的,不用自己搭建服务器,可能需要配置邮箱的SMTP服务,大部分公共邮箱(163,qq等)为了安全默认关闭。网易邮箱配置如下:QQ邮箱相关配置如下:我们在调试的时候,一般使用免费邮件服务器,QQ或者163。在使用QQ邮箱的时候,大家往往会忽略一个问题,就是QQ邮箱使用的是465端口,ssl协议,所以我们配置如下:注意密码是单独的授权码,不是你的邮箱密码。有人被困在这里。哈哈,如果用其他邮箱,可以用25端口,但是这个有一个特别坑的,就是阿里云25端口默认是关闭的,所以没办法,要么不用25端口,要么向阿里云申请25端口,或者换服务器提供商,比如IDC等,如果使用25端口就不需要ssl协议了。具体代码是这样写和不写的区别。还有同时发送多人和多个附件的问题:发送多人,处理参数,循环发送附件,处理参数,循环真的没话说,就是附件路径要直接指向你的二进制文件,相对路径和绝对路径都可以,但不是网图链接,也不是第三方图片服务器的链接,比如七牛云、阿里云oss,只能下载到本地或服务器优先,注意个别下载授权问题,这一步就知道差不多了,直接放代码就可以了:/***发送邮件(重构/支持附件)*///参数有接收邮箱,可以是单人,也可以是多人,string和array都可以,看你的//Theme,这个不用说//Content,html可以自动识别//附件,注意事项上面已经说了//没有必要做三方包中的任何修改publicstaticfunctionsend_email($sendTo,$titleName,$content,$file_list=[]){$email=array('charset'=>'UTF-8',//字符编码'host'=>'smtp.leju.com',//企业邮局域名'port'=>25,//端口'username'=>'',//发件人'password'=>'',//密码);require_once'Phpmailer/phpmailer.php';$mail=newPHPMailer();//实例化//附件if(!empty($file_list)){foreach($file_listas$key=>$value){$mail->AddAttachment($value);//添加附件}}$titleName=$titleName;//使用SMTP发送$mail->IsSMTP();//设置邮件的字符编码$mail->CharSet=$email['charset'];//企业邮局域名$mail->Host=$email['host'];$mail->Port=$email['port'];//启用SMTP认证功能$mail->SMTPAuth=true;//邮件发件人的用户名(请填写完整的邮件地址)$mail->Username=$email['username'];//邮件发件人密码(授权码)$mail->Password=$email['password'];//改成自己的授权码//Email发件人邮箱$mail->From=$email['username'];//发件人的标题$mail->FromName='';//做一些处理,可以有多个收件人,也可以有一个//收件人地址,可以换成任何你想收邮件的邮箱。格式为AddAddress("recipientemail","recipientname")if(!empty($sendTo)){$sendTo=explode(",",$sendTo);foreach($sendToas$k=>$v){$mail->AddAddress($v,substr($v,0,strpos($v,'@')));}}//回复地址$mail->AddReplyTo($email['username'],"");//设置邮件格式为HTML//是否使用HTML格式$mail->IsHTML(true);//邮件标题$mail->Subject=$titleName;//邮件内容$mail->Body=$content;//附加信息,可省略$mail->AltBody='';if(!$mail->Send()){$mail_return_arr['code']=false;$str="发送邮件失败。";$str.="错误原因:".$mail->ErrorInfo;$mail_return_arr['info']=$str;}else{$mail_return_arr['code']=true;$str="邮件发送成功";$mail_return_arr['info']=$str;}return$mail_return_arr;}此时可以自己测试
