博客留言系统需要用到邮件发送,有用户给我留言程序会自动给我发送邮件。很实用的一个小功能。
一:下载phpmailer类库。
我这里使用composer下载:有可能会失败,可以多试几次
bash
复制代码
composer require phpmailer/phpmailer
二:开始使用
php
复制代码
/** * @name: 发送邮件方法 * @author: camellia * @date: 2022-01-19 * @param: $email string 发送给谁 * @param: $mail_title string 邮件标题 * @param: $mail_body string 邮件内容 * @return: $result bool true/false */ public function send_mail($email, $mail_title, $mail_body) { $mail = new PHPMailer(true); try { /* * 【一】服务器配置 */ $mail->CharSet ="UTF-8"; //设定邮件编码 $mail->SMTPDebug = 0; //调试模式输出:0 不输出,2 输出 $mail->isSMTP(); //使用SMTP $mail->Host = EMAIL_SERVER; // SMTP服务器:以QQ为例 $mail->SMTPAuth = true; // 允许 SMTP 认证 $mail->Username = SEND_EMAIL; // SMTP用户名: 即发送方的邮箱 $mail->Password = EMAIL_SECERT; // SMTP授权码: 即发送方的邮箱授权码 $mail->SMTPSecure = 'ssl'; // 允许 TLS 或者ssl协议 $mail->Port = 465;//*/ // 服务器端口: 25 或者465 或者587 具体要看邮箱服务器支持 /* * 【二】收件人 */ $mail->setFrom(SEND_EMAIL, "Mailer"); //发件人:邮箱与用户名 $mail->addAddress($email, 'Mailer'); //收件人1:可添加多个收件人//*/ //$mail->addAddress("收件人2的邮箱", '收件人2的用户名'); //收件人2:可添加多个收件人 //$mail->addReplyTo('xxxx@163.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致 //$mail->addCC('cc@example.com'); //抄送人 //$mail->addBCC('bcc@example.com'); //密送人 /* * 【三】发送附件 */ /*$mail->addAttachment('王庆国.mp4'); // 添加附件//*/ //$mail->addAttachment('fzs.png', 'haha.png'); // 发送附件并且重命名 /* * 【四】发送内容 */ $mail->isHTML(true); //是否以HTML文档格式发送 发送后客户端可直接显示对应HTML内容 $mail->Subject = $mail_title; //邮件标题 $mail->Body = $mail_body; //邮件内容 $mail->AltBody = '哈哈哈'; //邮件内容:如果邮件客户端不支持HTML则显示此内容//*/ /* * 【五】发送请求 */ $mail->send(); return true;//*/ } catch (Exception $e) { return ['msg' => '邮件发送失败:'.$mail->ErrorInfo]; }//*/ }
我这里使用了try-catch,邮件发送失败,会返回报错信息。但是吧,他返回的报错信息你懂得~
三:开发时遇到的问题
邮件发送报错:
javascript
复制代码
SMTP Error: Could not authenticate.
解决方法:重置邮箱秘钥即可
有好的建议,请在下方输入你的评论。
欢迎访问个人博客 guanchao.site
欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”