通过PHP直接发送邮件是我们程序员实现会员注册, 通知提醒经常实现的一个功能, 然要直接做一个PHP邮件发送类, 那就是一件麻烦的事了, 其实完全自己做也没有那个必要, 因为网上已经有很好的邮件类了, 比如PHPMailer, 这里直接加载TP5下加载及使用方法:
1. 下载: 在项目下直接运行 composer require phpmailer/phpmailer
2. 建立一个控制器, 包含PHPMailer命名空间
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
3. 直接使用
namespace app\controller;
use think\Controller;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
class Mailqqtest extends Controller
{
public function index()
{
$mail = new PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = 0;
// Enable verbose debug output
$mail->CharSet='UTF-8';
$mail->isSMTP();
// 使用SMTP服务// Set mailer to use SMTP
$mail->Host = 'smtp.qq.com';
// 发送方的SMTP服务器地址// Specify main and backup SMTP servers
$mail->SMTPAuth = true;
// 是否使用身份验证// Enable SMTP authentication
$mail->Username = '3168765867';
// 发送方的QQ邮箱用户名,就是自己的邮箱名// SMTP username
$mail->Password = 'sdfsdfdsfsdf';
// 发送方的邮箱密码,不是登录密码,是qq的第三方授权登录码,要自己去开启,在邮箱的设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 里面// SMTP password, 阿里去企业邮箱, 就是登陆密码了
$mail->SMTPSecure = 'ssl';
// 使用ssl协议方式,// Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;
// QQ邮箱的ssl协议方式端口号是465/587 // TCP port to connect to
//Recipients
$mail->setFrom('3168765867@qq.com', 'zhuangzi');
// 设置发件人信息,如邮件格式说明中的发件人,
$mail->addAddress('sujianzhuang@126.com', 'Carl'); // Add a recipient
// $mail->addAddress('ellen@example.com'); // Name is optional
// $mail->addReplyTo('3168765867@qq.com', '苏建庄');
// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
// $mail->addCC('cc@example.com');
// 设置邮件抄送人,可以只写地址,上述的设置也可以只写地址(这个人也能收到邮件)
//$mail->addBCC('bcc@example.com');
// 设置秘密抄送人(这个人也能收到邮件)
//Attachments
$mail->addAttachment(ROOT_PATH.'public/uploads/20170614/151faab81b21708da697f5ec566dc4ad.jpg'); //添加附件 Add attachments
$mail->addAttachment(ROOT_PATH.'public/images/01.gif', '附件图片.gif'); // Optional name
//Content
$mail->isHTML(true);
// Set email format to HTML
$mail->Subject = '邮箱发送测试';
// 邮件标题
$mail->Body = '这里是邮件信息主题';
// 邮件正文
// $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
// 这个是设置纯文本方式显示的正文内容,如果不支持Html方式,就会用到这个,基本无用
$mail->send();
echo '邮箱已经被发送';
}
catch (Exception $e) {
echo '邮件发送失败';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
// return "邮箱测试";
}
