laravel5.4 发送SMTP邮件

laravel5.4 发送SMTP邮件

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 2 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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113080.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java tess4j训练库_Java 验证码识别库 Tess4j 学习

    java tess4j训练库_Java 验证码识别库 Tess4j 学习Java验证码识别库Tess4j学习【在用java的Jsoup做爬虫爬取数据时遇到了验证码识别的问题(基于maven),找了网上挺多的资料,发现Tess4j可以自动识别验证码,在这里简单记录下学习过程及遇到的一些问题。】步骤:需要在步骤一的tessdata文件中加入相关语言包(训练文件),在这里下载:https://github.com/tesseract-ocr/tessdata,如果是简…

    2022年5月29日
    95
  • 程序无法启动0xc0000005咋做_应用程序错误0xc0000005

    程序无法启动0xc0000005咋做_应用程序错误0xc0000005大家在使用电脑的时候有没有遇到过0xc0000005错误问题呢?很多朋友在打开应用程序的时候就弹出0xc0000005问题,找了半天都没找到正确解决方法。那就来瞧瞧小编整理了修复0xc0000005的方法吧。应用程序无法正常启动0xc0000005解决方法方法一:卸载最新更新或回滚驱动程序更新一些程序软件与系统不兼容会导致此现象,如果是新安装的应用程序或者驱动建议将其卸载。有时Windowsup…

    2022年10月3日
    1
  • SQL2008安装教程

    SQL2008安装教程1、首先,在安装文件setup.exe上,单击鼠标右键选择”以管理员的身份运行”,如下图所示:2、首先单击安装光盘中的setup.exe安装文件,打开如下所示的”SQLServer安装中心”对话框:3、选择左边的安装选项,单击右边的”全新SQLServer独立安装或向现有安装添加功能”选项,如图所示:4、在打开的”SQLServer2

    2022年6月23日
    25
  • Java常见设计模式总结

    Java常见设计模式总结

    2021年10月5日
    37
  • 电信网通全国DNS 列表「建议收藏」

    电信网通全国DNS列表电信DNS列表(按拼音排序,共32条)电信A安徽202.102.192.68202.102.199.68电信A澳门202.175.3.8202.175.3.3电信B北京202.96.199.133202.96.0.133202.106.0.20202.106.148.1电信C重庆61.128…

    2022年4月16日
    132
  • python 语言变量命名规则的是_Python中变量命名规则有哪些[通俗易懂]

    python 语言变量命名规则的是_Python中变量命名规则有哪些[通俗易懂]Python中变量命名规则有哪些发布时间:2020-09-2413:05:21来源:亿速云阅读:72今天就跟大家聊聊有关Python中变量命名规则有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python变量命名规则1.要具有描述性2.变量名只能是:数字,字母组成,不可以是空格或特殊字符,如:(#?。,¥$*~!&)等3…

    2022年6月12日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号