本文主要是介绍php邮件发送-phpmailer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
提供两种利用phpmailer发送邮件的方法:
准备:配置好163或者qq的smtp/imap服务(具体怎么配置,找度娘),phpmailer的两个类(phpmailer、smtp)(自己下载)。
第一种: 网易转发
header("content-type:text/html;charset=utf-8");
ini_set("magic_quotes_runtime",0);
ini_set("max_execution_time",-1); //添加附件时的忘网络问题导致执行时间过长
require 'class.phpmailer.php';
require 'class.smtp.php';
try {$mail = new PHPMailer(true); $mail->IsSMTP();$mail->CharSet='UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码$mail->SMTPAuth = true; //开启认证$mail->Port = 25; $mail->Host = "smtp.163.com"; $mail->Username = "lyf3312@163.com"; $mail->Password = "WDMM415150"; //$mail->IsSendmail(); //如果没有sendmail组件就注释掉,否则出现“Could not execute: /var/qmail/bin/sendmail ”的错误提示$mail->AddReplyTo("lyf3312@163.com","李艳飞");//回复地址$mail->From = "lyf3312@163.com";$mail->FromName = "www.baidu.com";$to = "924634623@qq.com";$mail->AddAddress($to);$mail->Subject = "phpmailer测试标题";$mail->Body = "<h1>phpmail演示</h1>这是php点点通(<font color=red>www.baidu.com</font>)对phpmailer的测试内容";$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; //当邮件不支持html时备用显示,可以省略$mail->WordWrap = 80; // 设置每行字符串的长度$mail->AddAttachment("C:/Users/Administrator/Desktop/text.mp4"); //可以添加附件$mail->IsHTML(true); $mail->Send();echo '邮件已发送';
} catch (phpmailerException $e) {echo "邮件发送失败:".$e->errorMessage();
}
第二种:腾讯转发
include("./class.phpmailer.php"); //下载phpmailer并include两个文件 include("./class.smtp.php");$mail = new PHPMailer(); //得到一个PHPMailer实例 $mail->CharSet = "utf-8"; //设置采用utf-8中文编码(内容不会乱码) $mail->IsSMTP(); //设置采用SMTP方式发送邮件 $mail->Host = "smtp.qq.com "; //设置邮件服务器的地址(若为163邮箱,则是smtp.163.com) $mail->Port = 25; //设置邮件服务器的端口,默认为25 $mail->From = "924634623@qq.com"; //设置发件人的邮箱地址 $mail->FromName = "李艳飞"; //设置发件人的姓名(可随意) $mail->SMTPAuth = true; //设置SMTP是否需要密码验证,true表示需要 $mail->Username="924634623@qq.com"; //(邮件转发时smtp账号,即开通smtp服务的邮箱) $mail->Password = "wrgomczwlipobaib"; //使用最新的授权码$mail->Subject = "你好啊"; //主题 $mail->AltBody = "text/html"; // optional, comment out and test $mail->Body = "你的邮件的内容,可以是html代码"; //内容 $mail->IsHTML(true); //内容主体中可以包含html $mail->WordWrap = 50; //设置每行的字符数 $mail->AddReplyTo("924634623@qq.com ","lyf"); //设置回复的收件人的地址(from可随意) $mail->AddAddress("lyf3312@163.com","liyanfei"); //设置收件的地址(to可随意) ,可循环添加多个//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称// $mail->addAttachment('./d.jpg','mm.jpg');//同样该方法可以多次调用 上传多个附件$mail->addAttachment('C:/Users/Administrator/Desktop/5.jpg','test.jpg');$res = $mail->Send(); if($res){echo "发送邮件成功!";
}else{echo "发送邮件失败!";
}
上面这个是利用默认25端口,
下面这个是开启ssl,利用465端口。
<?php
function sendMail($to,$title,$content){//引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告require_once("./class.phpmailer.php"); require_once("./class.smtp.php");//实例化PHPMailer核心类$mail = new PHPMailer();//是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式//开启调试模式后,会输出发送邮件的各个阶段的输出信息//$mail->SMTPDebug = 1;//使用smtp鉴权方式发送邮件$mail->isSMTP();//smtp需要鉴权 这个必须是true$mail->SMTPAuth=true;//链接qq域名邮箱的服务器地址$mail->Host = 'smtp.qq.com';//设置使用ssl加密方式登录鉴权$mail->SMTPSecure = 'ssl';//设置ssl连接smtp服务器的远程服务器端口号,以前的默认是25,但是现在新的好像已经不可用了 可选465或587$mail->Port = 465;//设置smtp的helo消息头 这个可有可无 内容任意$mail->Helo = 'Hello smtp.qq.com Server';//设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名$mail->Hostname = 'http://www.dest.cn';//设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码$mail->CharSet = 'UTF-8';//设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名$mail->FromName = 'TEST lyf3312'; //发件人人名//smtp登录的账号 这里填入字符串格式的qq号即可$mail->Username ='924634623@qq.com';//smtp登录的密码 使用生成的授权码(就刚才叫你保存的最新的授权码)$mail->Password = 'wrgomczwlipobaib'; //wrgomczwlipobaib//设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”$mail->From = '924634623@qq.com';//邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false$mail->isHTML(true); //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大$mail->addAddress($to,'test qq邮箱在线通知');//收件人人名//添加多个收件人 则多次调用方法即可// $mail->addAddress('xxx@163.com','lsgo在线通知');//添加该邮件的主题$mail->Subject = $title;//添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数读取本地的html文件$mail->Body = $content;//为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称// $mail->addAttachment('./d.jpg','mm.jpg');//同样该方法可以多次调用 上传多个附件// $mail->addAttachment('./Jlib-1.1.0.js','Jlib.js');$status = $mail->send();//简单的判断与提示信息if($status) {return true;}else{return false;}
}$flag = sendMail('lyf3312@163.com','test lyf3312在线通知','恭喜你成功加入test lyf3312实验室,开启你的学习之旅吧!');
if($flag){echo "发送邮件成功!";
}else{echo "发送邮件失败!";
}
其实,本人亲测,是否开启ssl,都是可以转发的,可能是腾讯出于安全方面考虑,建议用ssl吧。
这篇关于php邮件发送-phpmailer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!