发现PHPMailer又做了较大的更新,以前发送邮件的方法已不太适用,刚好要做一个实验,需要搭建个环境,这里使用Gmail进行测试,现记录下来。

  讲道理这个版本应该是6.0.1,Github传送地址: PHPMailer

  基本要求的内容跟之前的文章是一样的: phpmailer 发送邮件(一)   

一、基本要求

  • Web访问正常(apache可以正常访问)
  • php 设置正确(Sockets Support、OpenSSL support 两项设置为enable)
  • gmail设置, 允许不够安全的应用:设置为已启用

可以写一个简单的语句测试一下:info.php

<?php
phpinfo();
?>

二、PHPmailer

  新版的PHPMailer跟之前的最大不同在于需要使用composer, ubuntu 下composer的安装可参考:ubuntu 安装 php Composer

  安装完成之后,我们需要使用composer来下载PHPMailer。

  我们先切换到web跟目录,创建一个phpmailer的目录,切换到该目录,然后使用命令下载文件:composer require phpmailer/phpmailer, 这个过程会耗费点时间。

lz@starnight:/var/www/html$ pwd
/var/www/html
lz@starnight:/var/www/html$ ls
hello.html index.html info.php phpmailer
lz@starnight:/var/www/html$ cd phpmailer/
lz@starnight:/var/www/html/phpmailer$ composer require phpmailer/phpmailer

  下载完成之后,我们可以看到目录下多了一些文件,我们创建一个新的文件mailer.php用来发送文件。

lz@starnight:/var/www/html/phpmailer$ pwd
/var/www/html/phpmailer
lz@starnight:/var/www/html/phpmailer$ ls
composer.json composer.lock mailer.php vendor
lz@starnight:/var/www/html/phpmailer$ ls vendor/
autoload.php composer phpmailer

  mailer.php的内容如下:

<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception; //Load composer's autoloader
require 'vendor/autoload.php'; $mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'starnightcyber@gmail.com'; // SMTP username
$mail->Password = 'your password'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to //Recipients
$mail->setFrom('starnightcyber@gmail.com', 'starnightcyber');
$mail->addAddress('starnight_cyber@foxmail.com'); // Name is optional
$mail->addAddress('zl15@foxmail.com'); //Attachments
// $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name //Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Test mail.';
$mail->Body = 'Hello, this is a test mail using phpmailer';
$mail->AltBody = 'Hello, this is a test mail using phpmailer'; $mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} ?>

  访问站点,点击执行mailer.php:

  等待一会(可能会比较慢,取决于你的网络状况),我们可以看到邮件被成功的发送出去了,下面是发送邮件的日志信息和相关截图。

2017-11-08 03:37:47 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP d74sm5796226pfe.167 - gsmtp
2017-11-08 03:37:47 CLIENT -> SERVER: EHLO 192.168.0.8
2017-11-08 03:37:47 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [210.45.123.80]250-SIZE 35882577250-8BITMIME250-STARTTLS250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2017-11-08 03:37:47 CLIENT -> SERVER: STARTTLS
2017-11-08 03:37:47 SERVER -> CLIENT: 220 2.0.0 Ready to start TLS
2017-11-08 03:37:47 CLIENT -> SERVER: EHLO 192.168.0.8
2017-11-08 03:37:48 SERVER -> CLIENT: 250-smtp.gmail.com at your service, [210.45.123.80]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH250-ENHANCEDSTATUSCODES250-PIPELINING250-CHUNKING250 SMTPUTF8
2017-11-08 03:37:48 CLIENT -> SERVER: AUTH LOGIN
2017-11-08 03:37:48 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2017-11-08 03:37:48 CLIENT -> SERVER: c3Rhcm5pZ2h0Y3liZXJAZ21haWwuY29t
2017-11-08 03:37:48 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2017-11-08 03:37:48 CLIENT -> SERVER: MTIzQHdheW5lJmx6OTMj
2017-11-08 03:37:49 SERVER -> CLIENT: 235 2.7.0 Accepted
2017-11-08 03:37:49 CLIENT -> SERVER: MAIL FROM:<starnightcyber@gmail.com>
2017-11-08 03:37:49 SERVER -> CLIENT: 250 2.1.0 OK d74sm5796226pfe.167 - gsmtp
2017-11-08 03:37:49 CLIENT -> SERVER: RCPT TO:<starnight_cyber@foxmail.com>
2017-11-08 03:37:49 SERVER -> CLIENT: 250 2.1.5 OK d74sm5796226pfe.167 - gsmtp
2017-11-08 03:37:49 CLIENT -> SERVER: RCPT TO:<zl15@foxmail.com>
2017-11-08 03:37:49 SERVER -> CLIENT: 250 2.1.5 OK d74sm5796226pfe.167 - gsmtp
2017-11-08 03:37:49 CLIENT -> SERVER: DATA
2017-11-08 03:37:50 SERVER -> CLIENT: 354 Go ahead d74sm5796226pfe.167 - gsmtp
2017-11-08 03:37:50 CLIENT -> SERVER: Date: Wed, 8 Nov 2017 11:37:42 +0800
2017-11-08 03:37:50 CLIENT -> SERVER: To: starnight_cyber@foxmail.com, zl15@foxmail.com
2017-11-08 03:37:50 CLIENT -> SERVER: From: starnightcyber <starnightcyber@gmail.com>
2017-11-08 03:37:50 CLIENT -> SERVER: Subject: Test mail.
2017-11-08 03:37:50 CLIENT -> SERVER: Message-ID: <pN05Ke4mC7wGzpD3bWrXrwz35Nsih2r1VkCMLVlI@192.168.0.8>
2017-11-08 03:37:50 CLIENT -> SERVER: X-Mailer: PHPMailer 6.0.1 (https://github.com/PHPMailer/PHPMailer)
2017-11-08 03:37:50 CLIENT -> SERVER: MIME-Version: 1.0
2017-11-08 03:37:50 CLIENT -> SERVER: Content-Type: multipart/alternative;
2017-11-08 03:37:50 CLIENT -> SERVER: boundary="b1_pN05Ke4mC7wGzpD3bWrXrwz35Nsih2r1VkCMLVlI"
2017-11-08 03:37:50 CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
2017-11-08 03:37:50 CLIENT -> SERVER:
2017-11-08 03:37:50 CLIENT -> SERVER: This is a multi-part message in MIME format.
2017-11-08 03:37:50 CLIENT -> SERVER: --b1_pN05Ke4mC7wGzpD3bWrXrwz35Nsih2r1VkCMLVlI
2017-11-08 03:37:50 CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii
2017-11-08 03:37:50 CLIENT -> SERVER:
2017-11-08 03:37:50 CLIENT -> SERVER: Hello, this is a test mail using phpmailer
2017-11-08 03:37:50 CLIENT -> SERVER:
2017-11-08 03:37:50 CLIENT -> SERVER: --b1_pN05Ke4mC7wGzpD3bWrXrwz35Nsih2r1VkCMLVlI
2017-11-08 03:37:50 CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii
2017-11-08 03:37:50 CLIENT -> SERVER:
2017-11-08 03:37:50 CLIENT -> SERVER: Hello, this is a test mail using phpmailer
2017-11-08 03:37:50 CLIENT -> SERVER:
2017-11-08 03:37:50 CLIENT -> SERVER:
2017-11-08 03:37:50 CLIENT -> SERVER: --b1_pN05Ke4mC7wGzpD3bWrXrwz35Nsih2r1VkCMLVlI--
2017-11-08 03:37:50 CLIENT -> SERVER:
2017-11-08 03:37:50 CLIENT -> SERVER: .
2017-11-08 03:37:52 SERVER -> CLIENT: 250 2.0.0 OK 1510112272 d74sm5796226pfe.167 - gsmtp
2017-11-08 03:37:52 CLIENT -> SERVER: QUIT
2017-11-08 03:37:52 SERVER -> CLIENT: 221 2.0.0 closing connection d74sm5796226pfe.167 - gsmtp
Message has been sent

phpmailer send mail log

  可以看到邮件发送成功。

  另外,上面代码中给出的邮箱都是有效的邮箱地址,没有打码,只是为了让各位能更清楚的看到效果,请改成自己的邮箱,不然自己也看不到是否发送成功,别瞎几把给我发邮件^_^。

PHPMailer 发送邮件(二)的更多相关文章

  1. 使用PHPmailer发送邮件的详细代码

    一.使用PHPMailer发送邮件的原因 PHP有内置的mail()方法,但是由于一些主机空间不支持该方法,所以经常会遇到无法发送邮件的情况. 所以,可以下载PHPMailer类,实现邮件发送. 二. ...

  2. PHPMailer发送邮件中文附件名是乱码

    可能使用了PHPMailer发送邮件的朋友带中文附件名时会出现乱码,下面我来介绍一个解决办法. 比如我们要发送的附件是"测试.txt",如果在添加附件的时候强制使用指定文件名的方式 ...

  3. PHPmailer发送邮件时的常见问题及解决办法

    来源:http://www.chinastor.com/a/jishu/mailserver/0G392262014.html 使用PHPmailer发送邮件时的常见问题总结: 一,没有定义发送邮箱$ ...

  4. 利用PHPMailer发送邮件时报错

    利用thinkphp集成PHPMailer发送邮件时报错:Failed to connect to server: Unable to find the socket transport “ssl” ...

  5. ThinkPHP 中使用 PHPMailer 发送邮件 支持163和QQ邮箱等

    [摘要]ThinkPHP是一个开源的PHP框架, 是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.本文介绍ThinkPHP 中使用 PHPMailer 发送邮件. PHP是自带可以发送邮件的Ma ...

  6. 在Thinkphp3.2 中使用PHPMailer 发送邮件

    phpmailer发送邮件是php开发者首选的一个邮件发送插件了,下面我来介绍怎么集成phpmailer到thinkphp框架了,有需要了解的朋友可参考. phpmailer发送邮件功能很强大,今天真 ...

  7. 用phpmailer发送邮件提示SMTP Error: Could not connect to SMTP host解决办法

    之前做项目的时候做了一个用phpmailer发送邮件的功能<CI框架结合PHPmailer发送邮件>,昨天步署上线(刚开始用新浪云,嫌贵,换成阿里了),测试的时候,发送邮件却意外报错了.. ...

  8. thinkphp使用PHPMailer发送邮件

    第一步:准备PHPMailer 使用PHPMailer发送邮件,首先下载个PHPMailer 将下载的PHPMailer放到ThinkPHP文件夹里面的ThinkPHPExtendVendor 第二步 ...

  9. phpmailer发送邮件

    phpmailer发送邮件 PHP内置的mail函数使用起来不够方便,另外受其他语言的影响,博主更偏好面向对象的包管理模式,因此phpmailer成为了我用PHP发送邮件的首选,这里分享给大家. 库导 ...

随机推荐

  1. springMVC中的redirect和forward区别?

    1.forward在跳转后可以取到message值,redirect在跳转后无法取到message值. 2.forward跳转后地址栏URL不会改变,而redirect会改变.

  2. IntelliJ IDEA 14.1.4设置关闭自动保存和标志改动文件为星号?

    一.设置取消默认的自动保存: 二.设置文件内容改动后为文件标题头部添加*号:

  3. ASP.NET没有魔法——ASP.NET MVC 与数据库之EF实体类与数据库结构

    大家都知道在关系型数据库中每张表的每个字段都会有自己的属性,如:数据类型.长度.是否为空.主外键.索引以及表与表之间的关系.但对于C#编写的类来说,它的属性只有一个数据类型和类与类之间的关系,但是在M ...

  4. 使用HDFS客户端java api读取hadoop集群上的信息

    本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupI ...

  5. JavaScript面向对象基础与this指向问题

      前  言           我们的程序语言经历了从"面向机器".到"面向过程".再到"面向对象"的一个过程.而JavaScript是一 ...

  6. 如何结合场景利用block进行回调

    我们在开发中常常会用到函数回调,你可以用通知来替代回调,但是大多数时候回调是比通知方便的,所以何乐而不为呢?如果你不知道回调使用的场景,我们来假设一下: 1.我现在玩手机 2.突然手机没有电了 3.我 ...

  7. NopCommerce 3. Controller 分析

    1. 继承关系,3个abstract类 System.Web.Mvc.Controller Nop.Web.Framework.Controllers.BaseController Nop.Admin ...

  8. .net Mvc框架原理

    .net Mvc框架原理 本文只是简要说明原理,学习后的总结. 1.当一个Http请求发送后会被URLRoutingModule拦截(这时候也就是正式进入管道,下章会讲管道事件) 2.这时根据Isap ...

  9. Python学习笔记(九)

    Python学习笔记(九): 装饰器(函数) 内置函数 1. 装饰器 1. 作用域 2. 高阶函数 3. 闭包 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就 ...

  10. 利用大白菜制作多系统启动U盘(win+ubuntu+PE+...)

    网上提供的方法很多都过时了,不适用,要不就是讲的不清楚 我结合http://www.xuebuyuan.com/848003.html大神的方案,加以研究,整理出了此篇文章 先看下最终成果: 好了,感 ...