PHP发送邮件详细说明

2023-11-09

这两天琢磨了php得原生发送邮件,发现自带得mail方法不太好用,于是上网查询了好多方法,亲测以下方法能用

源代码都在 我的github

到github上下载

[https://github.com/PHPMailer/PHPMailer](https://github.com/PHPMailer/PHPMailer)
里面有很多文件,但是目前主要就用到两个文件
class.phpmailer.php class.smtp.php

我这个使用得是qq得smtp,如果需要其他得可以自行更改

qq的smtp服务器是:smtp.qq.com 端口号为465 或587
163smtp服务器是:smtp.163.com 端口25

下面是我进行了简单的封装

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/6/19
 * Time: 9:12
 */
class SenMail
{
    private $fromMailName='';
    private $formMailPassword='';
   private $mail='';
//密码是授权码
    function __construct($fromMailName = 'xxxxxx@qq.com', $fromMailPassword = 'xxxxxxx')
    {
        require_once('class.phpmailer.php');
        require_once('class.smtp.php');
        $this->fromMailName=$fromMailName;
        $this->formMailPassword=$fromMailPassword;
        $this->mail = new PHPMailer();
    }
    /**
     * @param string $arrayMail array集合
     * @param $senName 发件人
     * @param $title 标题
     * @param $body 内容
     */
    function sendMail($arrayMail,$senName, $title, $body)
    {
        //invoke mail() function to send mail
        // mail($toaddress, $subject, $mailcontent, $fromaddress);
        date_default_timezone_set('Asia/Shanghai');//设定时区东八区
        $fromMailPassword=$this->formMailPassword;
        $fromMailName=$this->fromMailName;
        $mail = $this->mail;
        $mail->SMTPDebug = 0;                               // Enable verbose debug output
        $mail->isSMTP();                                      // Set mailer to use SMTP
        $mail->Host = 'smtp.qq.com';  // Specify main and backup SMTP servers
        $mail->SMTPAuth = true;                               // Enable SMTP authentication
        $email = explode("@", $fromMailName);
        $mail->Username = $email[0];                 // SMTP username
        $mail->Password = $fromMailPassword;                            // SMTP password
        $mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
        $mail->Port = 465;
        $mail->CharSet = 'utf-8';
//        echo $mail->Host;                                  // TCP port to connect to
        $mail->setFrom($this->fromMailName, $senName);
        // $mail->addAddress('714080794@qq.com', 'Joe User');     // Add a recipient
        foreach($arrayMail as $v) {
            $mail->addAddress($v);               // Name is optional
        }
//         $mail->addReplyTo('714034323@qq.com', 'Information');
//         $mail->addCC('714034323@qq.com');
//         $mail->addBCC('714034323@qq.com');
//         $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
//         $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name
        $mail->isHTML(false);                                  // Set email format to HTML
        $mail->Subject = $title;
        $mail->Body = $body;
        $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
        if (!$mail->send()) {
            echo 'Message could not be sent.';
            echo 'Mailer Error: ' . $mail->ErrorInfo;
        } else {
            echo ucwords('Message has been sent');
        }
    }
}

index.php文件调用

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/6/16
 * Time: 15:15
 */
require "SenMail.php";
$e = new SenMail();
$toEmail = array('xxxx@163.com','xxxxx@qq.com');
$e->sendMail($toEmail,'xx程','测试2号','我是内容');

给新手的

开启qq邮箱的smtp

在QQ邮箱->设置->账号

密码是授权码,不是qq登录密码

遇到的问题

抛异常:Extesion missing: openssl
这个直接打开php.ini 查找 extension=php_openssl.dll 把注释去掉即可

如果哪里不对欢迎不吝赐教

最后如果对你有帮助请帮我点赞,谢谢

如果觉得有用请点赞,谢谢
首发简书 欢迎关注 我的简书
欢迎关注公众号

PHP传播者

推送最新文章和IT有趣新鲜知识科技

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

PHP发送邮件详细说明 的相关文章

  • Smarty输出空白页

    已解决 模板文件错误 我有这样的 Smarty 设置 require once smarty Smarty class php smarty new Smarty smarty gt compile dir compile dir smar
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • zip 文件的校验和

    我目前正在开发一个工具 它上传一组文件 然后使用 md5 校验和将文件与上一批上传的文件进行比较 并告诉您哪些文件已更改 对于常规文件 这工作正常 但某些上传的文件是 zip 存档 即使其中的文件相同 它们几乎总是会发生变化 有没有一种方法
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 如何通过php的require()或include()函数传递变量?

    当我使用这个时 require diggstyle code php page page no 警告是 无法打开流 第 198 行 C xampp htdocs 4ajax gallery core php 中没有错误 错误是 Failed
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • 如何解码 eval( gzinflate( base64_decode(

    我已将此代码注入到我的网站中 如何解码尾随字符串 我需要知道发生了什么以及其背后的代码是什么 这应该输出将被执行的代码eval 我希望这就是您正在寻找的
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • 如何使用 GitHub API 一次检索多个用户?

    我能够获取单个用户 或自某个时间戳以来创建的所有用户 或者与 GitHub API 进行某些搜索匹配的位置 https developer github com v3 users get a single user https develo
  • fgetcsv 在特定行打开?

    有没有办法使用 fgetcsv 在特定行上打开 我有一个非常大的 csv 想通过 ajax 一次运行大约 100 行 我可以轻松停止 while 循环 但如何在特定行上打开 或者这是不可能的 从第 100 行开始读取没有简单的方法 但您可以
  • postgreSql 中特定时间后表更新

    我已经在 postgres 中创建了表 现在我想在特定时间 例如 1 小时 后更新一行 我看到很多问题 例如 https dba stackexchange com questions 56424 column auto updated a
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入

随机推荐

  • 【HDLbits刷题笔记 】04-verilog语法-程序部分

    Always块 组合 由于数字电路由用导线连接的逻辑门组成 因此任何电路都可以表示为模块和分配语句的某种组合 但是 有时这不是描述电路的最方便方法 过程 始终以块为例 提供了描述电路的替代语法 对于合成硬件 synthesizing har
  • Android adb等 获取root权限

    Android adb 获取root权限 1 自己编译的Android 中 adb shell后 自动获取root权限 即显示 而不是 方法 修改 default prop 把ro secure设为0 persist service adb
  • 位段的跨平台问题

    笔者在之前的两篇文章中已经详细的详解了 位段的各种问题 有意者请参考一下 位段的基础知识 大家都不怎么知道位段 参考链接为 位段的基础知识 大家都不怎么知道位段 念君思宁的博客 CSDN博客 对于位段的概念 想必大多数的C语言学者 都是不知
  • 接口接收数据_RGMII接口布线经验

    网络设备一定离不开MAC和PHY 有MAC和PHY的地方就有相应的接口 无论看得见或者看不见 它就在那里 不悲不喜 在以太网中 这个接口就是介质无关接口 英文称为Media Independent Interface 简称MII MII适用
  • 部署rancher

    rancher部署kubernetes 节点提前安装好docker环境 部署rancher 根据官网选择合适的rancher版本 并配置数据持久化启动rancher docker run d name rancher restart unl
  • QObject成员函数connect()函数

    1 首先要链接的两个类必须继承于QObject 同时添加 Q OBJECT 2 在qt中QObject connect中填写的signal和slot函数 一定要填写参数类型 因为类中的函数可以 也就是 重载函数名一样 参数不一样 如果QOb
  • C语言基础入门48篇_20_函数入门:为什么使用函数?(函数使得程序模块化 使用函数封装细节,使得程序员只要面向函数的接口编程(参数与返回值),而不用关心函数内部细节)

    菜鸟和高手都会基本 那菜鸟为什么是菜鸟 高手为什么是高手呢 很大的区别在于 高手写的程序 结构性 更好 更容易维护 而函数就是C语言结构化的一种手段 函数可以将大的计算任务划分为多个较小的任务 解耦合 一个设计得当的函数可以将不必要的细节给
  • 【C++]】蓝桥杯练习题 (入门训练 Fibonacci数列)

    img src data image png base64 iVBORw0KGgoAAAANSUhEUgAAA60AAAG8CAYAAAA1sEPIAAAgAElEQVR4Aey9TYudVdb v2x8Awa56QYRRTAgOPBHpS
  • 把eclipse的web项目导入到idea中

    一 导入项目 1 导入 2 module选择eclipse 没有该步骤可以跳过 3 之后一路next即可 二 配置依赖 1 配置依赖和jar包 1 Project 选择相应的sdk 2 Modules 选择导入的模块dataweb 选择De
  • SpringBoot快速实践 --Ⅰ

    文章目录 启动一个SpringBoot项目 如何替换内嵌容器 玩转SpringBoot配置 全局异常处理 过滤器 拦截器 使用Lombok简洁代码 使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉
  • house of storm

    一 漏洞利用条件 house of storm是一种结合了unsorted bin attack和large bin attack的攻击技术 其基本原理和large bin attack类似 漏洞发生在unsorted bin的chunk放
  • 【C++碎碎念】C++11新特性(声明、智能指针、右值引用、lambda表达式)

    目录 一 新类型 二 统一的初始化 三 声明 四 智能指针 五 右值引用 六 Lambda表达式 一 新类型 C 11新增了long long和unsigned long long 以支持64位 或更宽 的整型 新增了类型char16 t
  • 数据结构 顺序表的定义

    文章目录 1 2 1 顺序表的定义 1 2 2 顺序表上基本操作的实现 1 顺序表的建立 2 顺序表元素的插入 3 顺序表元素的删除 4 顺序表的查找 1 2 1 顺序表的定义 定义 顺序表是用一组地址连续的存储单元依次存储线性表中的数据元
  • flutter滚动到底部_flutter ScrollController如何滚动到底部?

    flutter ScrollController滚动到底部的示例代码如下 方式一 import package flutter scheduler dart import package flutter material dart void
  • 微信小程序开发全流程记录(从前台到后台,到发布)

    微信小程序开发流程记录 一 代码处理 一 微信小程序 前端显示 微信小程序项目的架构 部分特点说明 二 后台服务器 数据交互 需要的环境 特别注意 二 项目部署 一 Wampserver的设置 二 域名的获取 三 小程序官方网站上的设置 一
  • 阿里大数据之路:数据模型篇大总结

    第1章 大数据领域建模综 1 1 为什么需要数据建模 有结构地分类组织和存储是我们面临的一个挑战 数据模型强调从业务 数据存取和使用角度合理存储数据 数据模型方法 以便在性能 成本 效率之间取得最佳平衡 成本 良好的数据模型能极大地减少不必
  • Linux添加yum源,yum下载速度过慢

    CentOS系统更换yum软件安装源 此处以网易为例 第一步 备份你的原镜像文件 以免出错后可以恢复 mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo
  • 英伟达新方法入选CVPR 2023:对未知物体的6D姿态追踪和三维重建

    普通手机 随手 拍的雕像 一下就变成了精细的三维重建图 水杯来回动的动态场景下 细节清晰可见 静态场景效果也同样nice 狗狗突出的肋骨都被还原了出来 对比来看其他方法 效果是酱婶的 这就是英伟达最新提出的方法BundleSDF 这是一种可
  • 什么是JVM

    什么是JVM JVM 内存结构 虚拟机的前世今生 从虚拟机的发展到未来的技术发展 未来的Java技术 JVM整体介绍 JVM各版本内存区域的变化 直接内存 深入分析栈和堆 JVM中的对象 JVM中对象的分配 Java中的泛型 垃圾回收算法与
  • PHP发送邮件详细说明

    这两天琢磨了php得原生发送邮件 发现自带得mail方法不太好用 于是上网查询了好多方法 亲测以下方法能用 源代码都在 我的github 到github上下载 https github com PHPMailer PHPMailer htt