https://blog.csdn.net/qq_35843527/article/details/77880631

Lumen / Laravel 5.4 使用网易邮箱 SMTP 发送邮件

获取网易邮箱的服务器和授权码:

登录网易邮箱 (http://mail.163.com/),

    1. 获取服务器地址:
      点击【设置】 > 【POP3/SMTP/IMAP】:

服务器地址:

 POP3服务器: pop.163.com
SMTP服务器: smtp.163.com
IMAP服务器: imap.163.com
    1. 获取客户端授权密码

授权码
授权码是用于登录第三方邮件客户端的专用密码。
适用于登录以下服务: POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。

点击【设置】 > 【客户端授权密码】
点击【开启】, 设置一个授权码, 比如本例中将授权码设置为: mailPASSWORD

配置 env 文件:

在配置文件 .env文件,新增以下配置:

    MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=cnwytnet@163.com
MAIL_PASSWORD=mailPASSWORD
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=cnwytnet@163.com
MAIL_FROM_NAME=cnwytnet

Lumen 项目

由于 Lumen 是简化版的 Laravel, 需要增加以下发邮件的模块。

  • 需要添加 illuminate/mail 模块:

修改composer.json 文件中 require 部分配置如下:

    "require": {
"php": ">=5.6.9",
"laravel/lumen-framework": "5.4.*",
"vlucas/phpdotenv": "~2.2",
"guzzlehttp/guzzle": "^6.2",
"predis/predis": "^1.1",
"illuminate/redis": "^5.4",
"illuminate/mail":"5.4.*"
}

执行 composer up.

  • 需要增加mail.php配置文件:

确保Luemn项目中存在 app/config/mail.php 配置文件。
若不存在可以从 Laravel 代码中复制一份。

创建发邮件脚本

  • 创建脚本文件 app/Console/Command/SendMailCommand.php
<?php
namespace App\Console\Commands; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Mail; class SendMailCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'demo:SendMail'; /**
* The console command description.
*
* @var string
*/
protected $description = '命令行-测试脚本-SendMail'; /**
* constructor
*/
public function __construct()
{
parent::__construct();
} /**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$content = '这是一封来自Laravel的测试邮件.';
$toMail = 'wangtom365@qq.com'; Mail::raw($content, function ($message) use ($toMail) {
$message->subject('[ 测试 ] 测试邮件SendMail - ' .date('Y-m-d H:i:s'));
$message->to($toMail);
});
}
}
  • 将脚本文件加入到 app/Console/Kernel.php 中:
  1.  protected $commands = [
    Commands\SendMailCommand::class, //测试发邮件脚本
    ];

执行发邮件操作

  • 查看脚本, 可以看到我们新加的脚本命令 demo:SendMail:
    $ php artisan
demo
demo:SendMail 命令行-测试脚本-SendMail
  • 执行发送邮件脚本:
$ php artisan demo:SendMail

不出意外的话,邮件发送成功。查看发件人的发件箱,或者查看收件人的收件箱,确认一下吧。

其他

  • 邮件地址 MAIL_FROM_ADDRESS 必须和 MAIL_USERNAME一致,否则报错:
  1. [Swift_TransportException]
  2. Expected response code 250 but got code "553", with message "553 Mail from must equal authorized user"
  • 不填授权码 MAIL_PASSWORD 或者 MAIL_PASSWORD 错误,报错:
 [Swift_TransportException]
Failed to authenticate on SMTP server with username "cnwytnet@163.com" using possible authenticators

可以将邮件驱动改成 MAIL_DRIVER=log, 就可以在本地日志中看到邮件内容了,这在测试的时候会很有用。

比如,在配置.env中,修改邮件驱动为MAIL_DRIVER=log,将会把邮件发送内容保存到 storage/logs/laravel.log 中。 内容如下:

[2017-04-01 06:12:19] local.DEBUG: Message-ID: <727877e080177bbb349b98a869f5b20f@swift.generated>
Date: Sat, 01 Apr 2017 06:12:19 +0000
Subject: [ =?utf-8?Q?=E6=B5=8B=E8=AF=95?= ] SendMail - 2017-04-01 06:12:19
From: SendMailTEST <cnwytnet@163.com>
To: wangtom365@qq.com
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable 这是一封来自Laravel的测试邮件.

END.

参考链接:

https://laravel.com/docs/5.4/mail

http://laravelacademy.org/post/1986.html

laravel5.4 发送SMTP邮件的更多相关文章

  1. 使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误

    使用phpmailer发送smtp邮件时提示 SMTP Error: Could not authenticate 错误 这个错误是验证出现错误, $mail->Port = 25; //SMT ...

  2. Python发送SMTP邮件指南

      SMTP(Simple Mail Transfer Protocol)简单邮件传输协议,Python内置对SMTP的支持,可以发送纯文本文件,HTML邮件以及附带文件.   一.两个模块 Pyth ...

  3. 使用Java代码发送SMTP邮件

    package cn.Douzi.send; import javax.mail.Session; import javax.mail.Transport; import javax.mail.int ...

  4. python发送smtp 邮件 图片

    #-*- coding: utf-8 -*- # python2 import os import time import random import smtplib from time import ...

  5. Centos 发送smtp邮件

    说明:          1.本文是用网易smtp服务,QQ的没试过        2.在Centos7上测试 实现:        1.关闭本机的sendmail服务或者postfix服务     ...

  6. Centos 定时任务发送smtp邮件

    接着上一篇文章...... 1.首先创建一个sheel的脚本命令,我是在home文件夹下面创建的命令: touch a.sh 2.编辑a.sh脚本 vim a.sh ,键入键盘   i  键 准备插入 ...

  7. 命令行发送SMTP协议邮件(163邮箱)

    这里我们用163邮箱为例子,借助命令行发送smtp邮件 1.连接服务器 在终端上输入:telnet smtp.163.com 25 回车,然后就连接了服务器的25端口,成功会输出 220 163.co ...

  8. 免费SMTP邮件服务:Mandrill,Sendgrid,Mailjet,Postmarkapp,MailChimp

    免费的SMTP发邮件服务平常几乎都没有怎么关注,Wordpress发邮件几乎用普通的邮箱的SMTP服务就可以完成任务,但是自从用了Discourse.Ghost博客后,发现找到一个合适的.免费配额大的 ...

  9. .Net Mail SMTP 发送网络邮件

    刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送 ...

随机推荐

  1. Leetcode63.Unique Paths II不同路径2

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为" ...

  2. 利用InformationSchema与阿里云交易和账单管理API实现MaxCompute费用对账分摊统计

    利用MaxCompute InformationSchema与阿里云交易和账单管理API 实现MaxCompute费用对账分摊统计 一.需求场景分析 很多的企业用户选择MaxCompute按量付费模式 ...

  3. 【python之路16】lambda表达式

    1.lambda表达式,实际是建立一个简易的函数 下面代码中f1和f2表示是相同过程的代码 def f1(args): return args f2 = lambda args:args print( ...

  4. Ajax--PHP+JQuery+Ajax解析json、XML数据、加载页面

    一.JQuery+Ajax用get.post方式提交和请求数据 知识要点: $('#userName').blur(function () { var txt = $(this).val(); $.a ...

  5. KMLLayer

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. tes..

    力扣刷题 二分查找法 二分查找法又称折半查找法. 优点:比较次数少,查找速度快,平均性能好: 缺点:要求待查表为有序表,且插入删除困难. 因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 首先 ...

  7. spring拦截器Interceptor

    在Spring Boot中,拦截器可以分为两种类型: 一是WebMVC,负责拦截请求,类似于过滤器,对用户的请求在Controller接收前进行处理,在Controller处理完成后加工结果等.使用时 ...

  8. Vue源码探究-虚拟DOM的渲染

    Vue源码探究-虚拟DOM的渲染 在虚拟节点的实现一篇中,除了知道了 VNode 类的实现之外,还简要地整理了一下DOM渲染的路径.在这一篇中,主要来分析一下两条路径的具体实现代码. 按照创建 Vue ...

  9. Leetcode892.Surface Area of 3D Shapes三维形体的表面积

    在 N * N 的网格上,我们放置一些 1 * 1 * 1  的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 返回结果形体的总表面积. 示例 1: ...

  10. 重磅发布:阿里开源 Open JDK 长期支持版本 Alibaba Dragonwell

    3 月 21 日北京阿里云峰会,阿里巴巴正式宣布对外开源 OpenJDK 长期支持版本 Alibaba Dragonwell.作为 Java 全球管理组织 Java Community Process ...