原生PHP利用QQ邮箱发送邮件

2023-11-02

PHP发送邮件必不可少的是PHPMailer类库。

PHPMailer

PHPMailer 是一个封装好的 PHP 邮件发送类,支持发送 HTML 内容的电子邮件,以及可以添加附件发送,并不像 PHP 本身 mail() 函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能。

PHP扩展支持

PHPMailer 需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密,故 PHP 还得包含 openssl 的支持( 使用 phpinfo() 函数查看 socket 和 openssl 扩展信息(wamp server 默认启用了该扩展))。
在这里插入图片描述

原生PHP实现QQ邮件发送:

我已把用到的核心文件加以整理,这些文件已经够用了:链接:http://www.taoerhuo.top/download/phpmailer.rar
在这里插入图片描述
在本文中只需要 class.phpmailer.php 和 PHPMailer/class.smtp.php。
QQ 邮箱设置
在这里插入图片描述
然后点击生成授权码
在这里插入图片描述
下面就是代码实现邮件发送了: 新建一个QQMailer.php文件

<?php
require_once 'PHPMailer/class.phpmailer.php';
require_once 'PHPMailer/class.smtp.php';

class QQMailer
{
    public static $HOST = 'smtp.qq.com'; // QQ 邮箱的服务器地址
    public static $PORT = 465; // smtp 服务器的远程服务器端口号
    public static $SMTP = 'ssl'; // 使用 ssl 加密方式登录
    public static $CHARSET = 'UTF-8'; // 设置发送的邮件的编码

    private static $USERNAME = 'xxxxxxxx@qq.com'; // 授权登录的账号
    private static $PASSWORD = '获取的授权码'; // 授权登录的密码
    private static $NICKNAME = '叶大大'; // 发件人的昵称

    /**
     * QQMailer constructor.
     * @param bool $debug [调试模式]
     */
    public function __construct($debug = false)
    {
        $this->mailer = new PHPMailer();
        $this->mailer->SMTPDebug = $debug ? 1 : 0;
        $this->mailer->isSMTP(); // 使用 SMTP 方式发送邮件
    }

    /**
     * @return PHPMailer
     */
    public function getMailer()
    {
        return $this->mailer;
    }

    private function loadConfig()
    {
        /* Server Settings  */
        $this->mailer->SMTPAuth = true; // 开启 SMTP 认证
        $this->mailer->Host = self::$HOST; // SMTP 服务器地址
        $this->mailer->Port = self::$PORT; // 远程服务器端口号
        $this->mailer->SMTPSecure = self::$SMTP; // 登录认证方式
        /* Account Settings */
        $this->mailer->Username = self::$USERNAME; // SMTP 登录账号
        $this->mailer->Password = self::$PASSWORD; // SMTP 登录密码
        $this->mailer->From = self::$USERNAME; // 发件人邮箱地址
        $this->mailer->FromName = self::$NICKNAME; // 发件人昵称(任意内容)
        /* Content Setting  */
        $this->mailer->isHTML(true); // 邮件正文是否为 HTML
        $this->mailer->CharSet = self::$CHARSET; // 发送的邮件的编码
    }

    /**
     * Add attachment
     * @param $path [附件路径]
     */
    public function addFile($path)
    {
        $this->mailer->addAttachment($path);
    }


    /**
     * Send Email
     * @param $email [收件人]
     * @param $title [主题]
     * @param $content [正文]
     * @return bool [发送状态]
     */
    public function send($email, $title, $content)
    {
        $this->loadConfig();
        $this->mailer->addAddress($email); // 收件人邮箱
        $this->mailer->Subject = $title; // 邮件主题
        $this->mailer->Body = $content; // 邮件信息
        return (bool)$this->mailer->send(); // 发送邮件
    }
}

然后就是要发送邮件的php文件引入QQMailer.php

<?php
	require_once 'QQMailer.php';

	// 实例化 QQMailer
	$mailer = new QQMailer(true);

	//收件人邮箱
	$to_email = 'wadyelh@aliyun.com';
	//邮件标题
	$title = '测试标题!';
	// 邮件内容
	$content = "你好,这是测试内容";
	// 发送QQ邮件
	if($mailer->send($to_email, $title, $content))
	{
		echo "<script>alert('发送成功');history.back()</script>";die;
	}
	else
	{
		echo "<script>alert('发送失败');history.back()</script>";die;
	}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原生PHP利用QQ邮箱发送邮件 的相关文章

  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐

  • 推荐系统系列——推荐算法评价指标

    文章目录 同步读书之 菜根谭 9 静坐观心 真妄毕现 10 得意早回头 拂心莫停手 推荐算法评价指标 1 评分预测指标 1 1 符号定义 1 2 平均绝对误差 1 3 均方根误差 1 4 覆盖率 2 集合推荐指标 2 1 混淆矩阵 2 2
  • 微信小程序事件传参

    微信小程序事件传参 微信小程序怎么事件传参 dataset 对象 事件对象 目标对象 总结 两步骤 微信小程序怎么事件传参 dataset 对象 每个虚拟dom身上都拥有一个dataset对象 给虚拟 dom 绑定上 data 自定义键 值
  • Docker服务的重启服务命令(systemctl restart docker)

    重启Docker服务 重启docker服务 systemctl restart docker 非root用户使用 重启docker服务 sudo systemctl restart docker
  • 两年外包生涯做完,感觉自己废了一半....

    先说一下自己的情况 大专生 17年通过校招进入湖南某软件公司 干了接近2年的点点点 今年年上旬 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了五年的功能测试 已经让我变得不思进取 谈了1年的女朋友
  • nginx配置域名访问

    1 本地开发好的demo程序 target目录下 把META INF WEB INF index jsp 所有文件打成zip包 如下图 2 Linux服务器下 部署到Tomcat下 清空ROOT目录下所有文件 把1中nginx zip文件放
  • 点云TXT与PCD格式之间的转换

    开发环境为win10 vstudio2019 注 txt形式的点云文件没有header 存储的全是xyz数据 如下图 这个点云数据中不仅包含有x y z的位置信息 还包含其他的位置信息 因此我们只需要提取前三列的信息 并忽略前两行 提取后的
  • 消息中间件篇

    消息中间件篇 RabbitMQ 如何保证消息不丢失 面试官 RabbitMQ如何保证消息不丢失 候选人 嗯 我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的 这里面就要求了消息的高可用性 我们要保证消息的不丢
  • CVPR 2022|U2PL:使用不可靠伪标签的半监督语义分割

    本文转自商汤学术 导读 半监督任务的关键在于充分利用无标签数据 商汤科技联合上海交通大学 香港中文大学 基于 Every Pixel Matters 的理念 有效利用了包括不可靠样本在内的全部无标签数据 大幅提升了算法精度 目前 U2PL
  • openGL之API学习(八)glutSwapBuffers

    glutSwapBuffers函数是OpenGL中GLUT工具包中用于实现双缓冲技术的一个重要函数 该函数的功能是交换两个缓冲区指针 通常 我们所看到的窗体 文字 图像 从根本上来说都是 画 出来的 比如 制作一个简单的五子棋 我们可能先要
  • 【AI 顶会】NIPS2019接收论文完整列表

    NeurIPS2019 NeurIPS 2019的论文结果已经出炉 包括了36篇oral和164篇spotlights共1428篇论文 可以看到论文的主题还是以深度学习 神经网络 图 优化 通用性 鲁棒性以及效率等方面为主 详细的列表见下文
  • 时间序列-ARIMA模型

    数据平稳性与差分法 平稳性 平稳性就是要求经由样本时间序列所得到的拟合曲线 在未来的一段期间内仍能顺着现有的形态 惯性 地延续下 平稳性要求序列的均值和方差不发生明显变化 严平稳与弱平稳 严平稳 严平稳表示的分布不随时间的改变而改变 如 白
  • Django+Golang实现一键启动

    背景 1 实现Django项目在陌生服务器通过一个程序或命令一键启动 实现方式 思路 服务器要求 1 docker 2 sed 用于替换配置文件端口 3 tar 启动程序我们采用Go来写 步骤 先按照config文件内容定义结构体 如下为c
  • activiti--完成当前任务,动态指定下一级执行者

    最近在做一个工作流审批的项目 类似与申请一个请假 但是在完成任务的时候需要动态指定下一级人物 在最开始了解的时候 书上都是直接根据taskId来完成 后来终于实现了这个动态指定下一级处理人的功能 我们的项目是这么一个流程 那么例如我是一个提
  • macOS上一款可以让Xcode退休的IDE

    以前在公号上写的一篇文章 现共享给小伙伴们哈 哈喽 大家好 我是源小北 程序员们用 Macbook 的大有人在 不只颜值高 操作使用也很方便快捷 且性能上乘 而其上的 IDE Xcode 程序员小伙伴们不可多得的编程利器 不用赘述 那么 有
  • matlab计算矩阵的相关系数矩阵,计算二维矩阵的相关系数

    很久没有用Matlab工具了 最近由于需要数据处理所以又重拾起 主要记录如何用Matlab计算矩阵的相关系数方法 矩阵形式 4096 3575 目标 得到该矩阵每一行与其余行数据之间的相关系数矩阵 4096 4096相关系数矩阵 例如 A
  • 配置osgearth

    今天下午连接上了OSGEARTH
  • MYSQL连接报错-2003

    ERROR 2003 HY000 Can t connect to MySQL server on localhost 10061 今天连接mysql突然报错 一直提示2003 根据百度搜索的方法 移除mysqld 并重新初始化 还是无法启
  • 【Transformer系列(4)】Transformer模型结构超详细解读

    前言 前一篇我们一起读了Transformer的论文 Attention Is All You Need 不知道大家是否真的理解这个传说中的神 反正俺是没有 这两天我又看了一些视频讲解 感谢各位大佬的解读 让我通透了不少 这篇文章就和大家分
  • Halcon--灰度腐蚀、二维码识别、图像增强

    二维码识别 create find 识别不到一般对调整识别模型参数 或者对图像进行处理 常用灰度增强或者对比度增强 read image Image datacode ecc200 ecc200 to preprocess 003 gray
  • 原生PHP利用QQ邮箱发送邮件

    PHP发送邮件必不可少的是PHPMailer类库 PHPMailer PHPMailer 是一个封装好的 PHP 邮件发送类 支持发送 HTML 内容的电子邮件 以及可以添加附件发送 并不像 PHP 本身 mail 函数需要服务器环境支持