用PHPMailer例子安装和使用PHP依赖管理工具:Composer
来源:互联网 发布:大数据平台监控系统 编辑:程序博客网 时间:2024/05/16 14:57
前言:
本篇博客主要是给大家介绍Composer的安装和使用,并用加载PHPMailer代码库为例子给大家做演示。
环境:Centos7 + LAMP
由于例子中涉及到PHP发邮件,所以在开始本博客之前,建议大家先去阅读我的上一篇博客:《PHP中利用PHPMailer配合QQ邮箱实现发邮件》
一、准备工作:
现在我们在WWW目录下新建一个testMail目录,在testMail文件夹里新建index.php文件作为入口文件,新建function.php文件作为公共函数库文件。
二、Composer的安装和使用:
Composer是PHP的一个依赖管理工具,它允许你申明项目中所以来的代码库,它会在你的项目中为你安装他们。在这里,我们的PHPMailer将会作为一个代码库被引入到我们的小框架中,而这个工具就是Composer。
1、安装Composer:
安装 Composer,你只需要在项目根目录中下载 composer.phar 可执行文件。
cd /home/www/testMailcurl -sS https://getcomposer.org/installer | php
要检查 Composer 是否正常工作,只需要通过 php 来执行 PHAR:
php composer.phar
这将返回给你一个可执行的命令列表。
2、项目安装:composer.json
要开始在你的项目中使用 Composer,你只需要一个 composer.json 文件。该文件包含了项目的依赖和其它的一些元数据。
关于 require Key
第一件事情(并且往往只需要做这一件事),你需要在 composer.json 文件中指定 require key 的值。你只需要简单的告诉 Composer 你的项目需要依赖哪些包。
json格式:
{ "require": { "monolog/monolog": "1.0.*" }}
你可以看到, require 需要一个包名称 (例如 monolog/monolog) 映射到 包版本 (例如 1.0.*) 的对象
我们在这里需要使用的是PHPMailer:
vim composer.json#在composer.json文件中添加以下内容{ "require": { "phpmailer/phpmailer":"*" }}#保存退出
上面代码表示,我们要获取名为phpmailer供应商供应的名为phpmailer的项目,“*”表示任意版本(应该是获取最新版本)
3、安装依赖包
要获取定义的依赖到你的本地项目,只需要调用 composer.phar 运行 install 命令。
php composer.phar install
运行以上命令(这个过程会有点慢,稍等~~~):
运行完上面的命令后,我们会发现我们的testMail目录下增加了一些文件:
运行完以上代码后,这将会找到 phpmailer/phpmailer 的最新版本,并将它下载到 vendor 目录。 这是一个惯例把第三方的代码放到一个指定的目录 vendor。如果是 phpmailer 将会创建 vendor/phpmailer/phpmailer 目录。同时 install 命令将创建一个 composer.lock 文件到你项目的根目录中。
4、必要解析:composer.lock
在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定该项目的特定版本。
install 命令将会检查锁文件是否存在,如果存在,它将下载指定的版本(忽略 composer.json 文件中的定义)
如果不存在 composer.lock 文件,Composer 将读取 composer.json 并创建锁文件。
这意味着如果你的依赖更新了新的版本,你将不会获得任何更新。此时要更新你的依赖版本请使用 update 命令。这将获取最新匹配的版本(根据你的 composer.json 文件)并将新版本更新进锁文件
php composer.phar update
如果只想安装或更新一个依赖,你可以白名单它们。比如说你现在添加了很多的依赖,但是只想更新phpmailer:
php composer.phar update phpmailer/phpmailer
5、自动加载:使用 phpmailer 依赖包
自动加载:对于库的自动加载信息,Composer 生成了一个 vendor/autoload.php 文件。你可以简单的引入这个文件,你会得到一个免费的自动加载支持。
require 'vendor/autoload.php';
有了自动加载,我们就可以很容易的使用第三方代码。
好,现在我们在 index.php 文件中添加以下的代码:
#index.php文件<?php//添加公共函数库文件require "function.php";//添加自动加载支持require "vendor/autoload.php";?>
在 function.php 中添加 sendMail()函数(在上一篇博客中有个同学问我怎么实现群发,这里顺便实现了吧):
#function.php文件<?php/** * 发送邮件方法 * @param $to :接收者数组 $title:标题 $content:邮件内容 */function sendMail(array $to,$title,$content){ //配置(强烈建议写进配置文件,这里我仅是为了方便) $config = array( // 配置邮件发送服务器 'MAIL_DEBUG' => 0, // 是否启用smtp的debug进行调试 'MAIL_HOST' => 'smtp.qq.com', // SMTP服务器地址 'MAIL_HOSTNAME' => 'http://lsgozj.cn', // 设置发件人的主机域 'MAIL_PORT' => 465, //设置ssl连接smtp服务器的远程服务器端口号 可选465或587 'MAIL_SMTPAUTH' => TRUE, //启用smtp认证 'MAIL_USERNAME' => '123456789@qq.com', // 用户名 'MAIL_FROM' => '123456789@qq.com', // 邮箱地址 'MAIL_FROMNAME' => 'LSGO实验室', // 发件人姓名 'MAIL_PASSWORD' => 'yacytiiryfzsbbif', //smtp登录的密码 使用生成的授权码 'MAIL_CHARSET' => 'UTF-8', // 字符集 'MAIL_ISHTML' => TRUE, // 是否HTML格式邮件 'MAIL_REPLYTO' => '987654321@qq.com', //用户回复邮件时的接收邮箱,可以与原始邮箱分开 //抄送就是 你写的这封邮件除了传送给收件人,还会传送给你在抄送一栏里写的邮箱地址,并且收件人>知道你把这封邮件发给了他和抄送一栏里输入的邮件地址的人 //密送就是 你写的这封邮件除了传送给收件人,还会传送给你在暗送一栏里写的邮箱地址,但是收件人>不知道你把这封邮件发给了暗送一栏里输入的邮件地址的人 'MAIL_CC' => '', //抄送者 'MAIL_BCC' => '', //密送着 ); //实例化PHPMailer核心类 //这里由于 index.php 文件中已经 include "vendor/autoload.php",这里就不用引入了 $mail = new PHPMailer; //使用smtp鉴权方式发送邮件 $mail->isSMTP(); //链接qq域名邮箱的服务器地址 $mail->Host = $config['MAIL_HOST']; //smtp需要鉴权 这个必须是true $mail->SMTPAuth = $config['MAIL_SMTPAUTH']; //smtp登录的账号 这里填入字符串格式的qq号即可 $mail->Username = $config['MAIL_USERNAME']; //smtp登录的密码 使用生成的授权码 $mail->Password = $config['MAIL_PASSWORD']; //设置使用ssl加密方式登录鉴权 $mail->SMTPSecure = 'ssl'; //设置ssl连接smtp服务器的远程服务器端口号 可选465或587 $mail->Port = $config['MAIL_PORT']; //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码 $mail->CharSet = $config['MAIL_CHARSET']; $mail->setFrom($config['MAIL_FROM'], $config['MAIL_FROMNAME']); //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 这里第二个参数的意义不大 //添加多个收件人 则多次调用方法即可 // $mail->addAddress('xxx@163.com','晶晶在线用户'); foreach($to as $val){ $mail->addAddress($val); } //设置用户回复的邮箱 $mail->addReplyTo($config['MAIL_REPLYTO']); //设置用户回复的邮箱 $mail->addReplyTo($config['MAIL_REPLYTO']); //设置抄送人 $mail->addCC($config['MAIL_CC']); //密送者,Mail Header不会显示密送者信息 $mail->addBCC($config['MAIL_BCC']);// $mail->addAttachment('/var/tmp/file.tar.gz'); // 添加附件// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false $mail->isHTML($config['MAIL_ISHTML']); //添加该邮件的主题 $mail->Subject = $title; //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 如:使用file_get_contents函数>读取本地的html文件 $mail->Body = $content; //添加邮件正文 上方将isHTML设置成了false时调用 $mail->AltBody = strip_tags($content); if (!$mail->send()) { throw new \Exception('邮件发送失败!请检查相关配置!'); }}?>
好了,现在我们就可以在 index.php 中使用 sendMail() 来发邮件了!
#index.php文件//添加公共函数库文件require "function.php";//添加自动加载支持require "vendor/autoload.php";try{ $users = array('11111111@qq.com','22222222@163.com'); $title = '测试标题'; $content = '测试邮箱内容!'; sendMail($users,$title,$content);}catch(Exception $e){ var_dump($e->getMessage());}
到此,我们的整篇博客就完了。如果大家发邮件失败了,第一是要检查配置!第二是去回顾我的上一篇博客 《PHP中利用PHPMailer配合QQ邮箱实现发邮件》,里面提到的注意事项。
关于composer的安装和使用的更详细的介绍,大家访问它的中文官方网站Composer 中文网
更多关于phpmailer包的详细信息请访问 phpmailer/phpmailer,我这里有相当一部分代码都是在上面拷贝的。
- 用PHPMailer例子安装和使用PHP依赖管理工具:Composer
- PHP依赖管理工具composer安装和使用
- php依赖管理工具Composer的安装和使用
- 使用PHP依赖管理工具Composer安装Guzzle
- Composer(PHP依赖管理工具)安装
- PHP依赖管理工具Composer配置安装及基本使用
- PHP Lumen框架 和 Composer依赖管理工具 安装笔记
- PHP 安装包依赖关系管理工具Composer
- PHP 依赖管理工具Composer的使用
- PHP依赖管理工具Composer入门
- PHP依赖管理工具Composer入门
- PHP依赖管理工具Composer入门
- PHP依赖管理工具Composer入门
- Composer是-PHP 依赖管理工具
- ubuntu上使用PHP依赖管理工具Composer(一)——安装
- windows下安装php依赖关系管理工具composer
- Mac下PHP依赖管理工具Composer下载与安装
- Composer PHP的包依赖管理工具
- 无法打开内核设备“\\.\Global\vmx86”: 系统找不到指定的文件。你想要在安装 VMw" 解决方法:
- UEditor的setContent的时候报错,报错代码如下 Uncaught TypeError: Cannot set property 'innerHTML' of undefined 错
- iot行业的流量规律
- MyBatis中in的用法小结
- 2016.2的ideaUI注册码
- 用PHPMailer例子安装和使用PHP依赖管理工具:Composer
- AsncTask源码解析
- 必会的题目
- GO使用GVM和Glide创建管理工程
- ARM9入门学习心得
- Bitmap header的具体分析
- 统计出其中英文字母、数字、空格和其他字符的个数
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- windows下mysql忘记root密码的解决方法