PHP使用PHPmailer类和smtp发送邮件
- 开启邮件smtp服务
- 设置授权码
- 引入phpmailer类,smtp类
https://github.com/PHPMailer/PHPMailer
//下载PHPMailer并开启php_openssl、php_socket扩展 include_once 'PHPMailer.php'; include_once 'SMTP.php'; $mail = new PHPMailer(); //实例化 $mail->IsSMTP(); // 启用SMTP $mail->Host = "smtp.yeah.net"; //SMTP服务器 以163邮箱为例子 $mail->Port = 25; //邮件发送端口 $mail->SMTPAuth = true; //启用SMTP认证 $mail->CharSet = "UTF-8"; //字符集 $mail->Encoding = "base64"; //编码方式 $mail->Username = "phpmaster@yeah.net"; //你的邮箱 $mail->Password = "EFWWFULFELKCUMQY"; //网易邮箱客户端授权码 $mail->From = "phpmaster@yeah.net"; //发件人地址(也就是你的邮箱) $mail->FromName = "张某某"; //发件人姓名 $address = "137647337@qq.com";//收件人email $mail->AddAddress($address, "亲");//添加收件人(地址,昵称) //附件 /*$mail->AddAttachment("logo.jpg"); $mail->AddAttachment("1.zip"); $mail->AddAttachment('1.xls','我的附件.xls'); // 添加附件,并指定名称*/ $mail->IsHTML(true); //支持html格式内容 //$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片 $mail->Subject = "你好"; //邮件标题 $mail->Body = '这是HTML邮件正文粗体,<a href="http://www.zhangxuhui.com">激活</a>'; //邮件主体内容 //发送 if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "success";
场景:邮箱发送验证码类在php7.3+环境中报错:
filter_var(): explicit use of FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED is deprecated
原因:查资料得知,php7.3+弃用了FILTER_FLAG_SCHEME_REQUIRED函数
解决方式:
PHPMailer.php 3599行 if (filter_var('http://' . $host, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) { //Is it a syntactically valid hostname? return true; } 更改为: if (preg_match('/http:\/\/[\w.]+[\w\/]*[\w.]*\??[\w=&\+\%]*/is','http://' . $host)) { //Is it a syntactically valid hostname? return true; }
其实就是url地址地址的正则验证
作者:被水遗忘の鱼,终究还是活不成,自己喜欢的样子。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具