TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)
在 PHP 应用开发中,往往需要验证用户邮箱、发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持。
如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮件发送程序了,不过开发这样一个程序并不容易。
好在 PHPMailer 封装的足够强大,使用它可以更加便捷的发送邮件,免去了我们很多额外的麻烦。
首先,修改php.ini中的一些配置
-
extension=php_openssl.dll 前面的分号去掉
-
allow_url_fopen = Off 改为 allow_url_fopen = On
1|0PHPMailer
PHPMailer 是一个封装好的 PHP 邮件发送类,支持发送 HTML 内容的电子邮件,以及可以添加附件发送,并不像 PHP 本身 mail() 函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能。
PHPMailer 项目地址:https://github.com/PHPMailer/PHPMailer
1|1PHP扩展支持
PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密,故 PHP 还得包含 openssl 的支持。
↑ 使用 phpinfo() 函数查看 socket 和 openssl 扩展信息(wamp server 默认启用了该扩展)。
1|2整理后的PHPMailer 核心文件
我们需要下载的phpmailer文件:点击下载
↑ 在本文中只需要将下载的压缩包解压到当前TP5框架下的extend文件夹中
2|0QQ 邮箱中的 设置
选择账户
所有的主流邮箱都支持 SMTP 协议,但并非所有邮箱都默认开启,您可以在邮箱的设置里面手动开启。
第三方服务在提供了账号和密码之后就可以登录 SMTP 服务器,通过它来控制邮件的中转方式。
2|1开启 SMTP 服务
↑ 选择 IMAP/SMTP 服务,点击开启服务。
2|2验证密保
↑ 发送短信“配置邮件客户端”至1069-0700-69。
2|3获取授权码
↑ SMTP 服务器认证密码,需要妥善保管(PS:密码直接没有空格)。
3|0PHP发送邮件
3|1基本代码
下面的代码演示了 PHPMailer 的使用方法,注意 PHPMailer 实例的配置过程。
Loader::import('phpmailer.phpmailer');//加载extend中的自定义类 $mail = new \PHPMailer\PHPMailer(); //实例化 header("content-type:text/html;charset=utf-8"); // 使用SMTP方式发送 $mail->IsSMTP(); // 设置邮件的字符编码 $mail->CharSet='UTF-8'; // 企业邮局域名 $mail->Host = 'smtp.qq.com'; //---------qq邮箱需要的------//设置使用ssl加密方式登录鉴权 $mail->SMTPSecure = 'ssl'; //设置ssl连接smtp服务器的远程服务器端口号 可选465或587 $mail->Port = 465;//---------qq邮箱需要的------ // 启用SMTP验证功能 $mail->SMTPAuth = true; //邮件发送人的用户名(请填写完整的email地址) $mail->Username = '123456789@qq.com' ; // 邮件发送人的 密码 (授权码) $mail->Password = '修改为自己的授权码'; //修改为自己的授权码 //邮件发送者email地址 $mail->From ="123456789@qq.com"; //发送邮件人的标题 $mail->FromName ="123456789@qq.com"; //收件人的邮箱 给谁发邮件 $email_addr = "收件人邮箱"; //收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名") $mail->AddAddress("$email_addr", substr( $email_addr, 0 , strpos($email_addr ,'@'))); //回复的地址 $mail->AddReplyTo('123456789@qq.com' , "" ); $mail->AddAttachment("./mail.rar"); // 添加附件 //set email format to HTML //是否使用HTML格式 $mail->IsHTML(true); //邮件标题 $mail->Subject = '邮件标题'; //邮件内容 $mail->Body = "<p style='color:red'>" . '邮件内容' . '</p>'; //附加信息,可以省略 $mail->AltBody = ''; // 添加附件,并指定名称 $mail->AddAttachment( './error404.php' ,'php文件'); //设置邮件中的图片 $mail->AddEmbeddedImage("shuai.jpg", "my-attach", "shuai.jpg"); if( !$mail->Send() ){ $mail_return_arr['mark'] = false ; $str = "邮件发送失败. <p>"; $str .= "错误原因: " . $mail->ErrorInfo; $mail_return_arr['info'] = $str ; }else{ $mail_return_arr['mark'] = true ; $str = "邮件发送成功"; $mail_return_arr['info'] = $str ; } echo "<pre>"; print_r( $mail_return_arr);
将上述代码修改为自己需要的就搞定了!