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. Liferay 7:Liferay Nexus

    Liferay私服地址:https://repository.liferay.com/nexus/content/repositories/liferay-public-releases/

  2. CSS中各种居中方法

    CSS中各种居中方法,本文回顾一下,便于后续的使用. 水平居中方法 1.行内元素居中 行内元素居中是只针对行内元素的,比如文本(text).图片(img).按钮等行内元素,可通过给父元素设置 text ...

  3. GCC/GDB学习

    GCC学习 1.gcc是根据后缀名来区分文件的 .c : c语言源文件 .a : 目标文件构成的库文件 .C/.cc/.cxx : c++源文件 .h : 头文件 .i : 预处理过的C源文件 .ii ...

  4. Hdu 1068 最小路径覆盖

    Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. 【C/C++多线程编程之七】pthread信号量

    多线程编程之信号量      Pthread是 POSIX threads 的简称.是POSIX的线程标准.          相互排斥量用来处理一个共享资源的同步訪问问题,当有多个共享资源时,就须要 ...

  6. 前端框架中 “类mixin” 模式的思考

    "类 mixin" 指的是 Vue 中的 mixin,Regular 中的 implement 使用 Mixin 的目的 首先我们需要知道为什么会有 mixin 的存在? 为了扩展 ...

  7. vue的table组件

    一个vue-table的组件 说明: 1.基于element-ui开发的vue表格组件. 功能: 1.支持树形数据的展示 2.行拖拽排序 3.单元格拖拽排序 github 使用方法: 1.下载npm包 ...

  8. TyvjP1266 费解的开关

    P1266 费解的开关 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述     你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形.每一个灯都有一个开关,游戏 ...

  9. 微服务开源生态报告 No.6

    「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源项目的最新进展. 社区动态包括,但不限于:版本发布.人员动态.项目动态和规划.培训和活动. 非常欢迎国内其他微服 ...

  10. 阿里云 EMAS HTTPDNS 联合函数计算重磅推出 SDNS 服务,三大能力获得突破

    1. 什么是 HTTPDNS ? 传统的 DNS(Domain Name System)使开发者常面临着域名劫持.调度不精准的问题. HTTPDNS 使用 HTTP 协议替换常用的 UDP 协议,完成 ...