通过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 "邮箱测试"; }