1. 程式人生 > >laravel5.4 傳送SMTP郵件

laravel5.4 傳送SMTP郵件

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[email protected]163.com
MAIL_PASSWORD=mailPASSWORD
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS[email protected]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;

classSendMailCommandextendsCommand{
    /**
    * 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 functionhandle(){
        $content = '這是一封來自Laravel的測試郵件.';
        $toMail  = '[email protected]';
        
        Mail::raw($content, function($message)use($toMail){
            $message->subject('[ 測試 ] 測試郵件SendMail - ' .date('Y-m-d H:i:s'));
            $message->to($toMail);
        });
    }
}
  • 將指令碼檔案加入到 app/Console/Kernel.php 中:
    protected $commands = [
        Commands\SendMailCommand::class, //測試發郵件指令碼
    ];

執行發郵件操作

  • 檢視指令碼, 可以看到我們新加的指令碼命令 demo:SendMail:
$ php artisan 
demo
  demo:SendMail    命令列-測試指令碼-SendMail
  • 執行傳送郵件指令碼:
$ php artisan demo:SendMail

不出意外的話,郵件傳送成功。檢視發件人的發件箱,或者檢視收件人的收件箱,確認一下吧。

其他

  • 郵件地址 MAIL_FROM_ADDRESS 必須和 MAIL_USERNAME一致,否則報錯:
    [Swift_TransportException]                                                                             
    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 <[email protected]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郵件

Lumen / Laravel 5.4 使用網易郵箱 SMTP 傳送郵件 獲取網易郵箱的伺服器和授權碼: 登入網易郵箱 (http://mail.163.com/), 獲取伺服器地址: 點選【設定】 > 【POP3/SMTP/IMAP】:伺服器地址: POP

vs2003 和vs2005下的傳送SMTP郵件 (downmoon原創)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

利用Guzzle實現另一種PHP異步發送郵件(laravel5.4)

dot 博文 接下來 lar 時間 重點 5.4 targe 占用 前言:第二種實現方法 方法的思路: 此方法的實現需要借助Guzzle這個PHP的HTTP客戶端,用來輕而易舉地發送請求,並集成到我們的WEB服務上(laravel中如何引入guzzle不多說) 使用該方

SMTP 通過 ssh 通道傳送垃圾郵件

通過SSH隧道傳輸SMTP 根據設計,我們不允許校外機器使用我們的SMTP伺服器。如果我們允許它,我們將允許任何和所有使用我們的SMTP伺服器來分發垃圾郵件。但是也可以通過我們的SMTP伺服器傳送郵件,這種機制稱為SMTP隧道。 Linux說明 1.在Linux

Log4j2配置SMTP郵件實現郵件傳送

大綱: 官網配置資訊 實際使用 一、官網配置資訊 官網SMTPAppender配置 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="

java通過SMTP傳送QQ郵件的完全步驟

轉自: https://blog.csdn.net/qq422733429/article/details/51280020 java通過SMTP傳送QQ郵件的完全步驟 首先,我們需要開啟QQ郵箱的SMTP服務,因為QQ郵箱對於一般的使用者都是預設關閉SM

使用SMTP傳送電子郵件

描述SMTP的基本操作,有如下常見的情景。假如Alice想給Bob傳送一封簡單的ASCII報文: 1)Alice啟動她的郵件代理伺服器並提供Bob的郵件地址(例如:***@163.com),撰寫郵件,通過使用者代理髮送該郵件。 2)Alice的使用者代理把報文傳送給Ali

從零構建SMTP郵件傳送

從零構建SMTP郵件傳送類 從零構建SMTP郵件傳送類 SMTP連線和傳送過程如下 SMPT協議常用命令 下面開始我們的整體構建一個簡單的SMTP郵件傳送類 下面附上原始碼註釋

CMD下利用命令列傳送SMTP協議郵件

開啟CMD,連線郵件伺服器,CMD下輸入:telnet smtp.163.com 25後回車,25為埠號,預期返回:220 163.com Anti-spam GT for Coremail System (163com[20141201]) 向伺服器表明身份,繼續輸入:helo 163.com,預期返回

使用JavaMail進行簡單SMTP郵件傳送測試,從網易郵箱傳送到QQ郵箱

===========TLS版本=========== 本文使用的JavaMail版本為1.5.2 import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Messa

Python SMTP傳送QQ郵件

1、QQ郵箱開通SMTP許可權,並獲取授權碼 QQ郵箱---->設定---->賬戶---->開啟服務---->IMAP/SMTP服務---->獲取授權碼 傳送方和接收方都必須開通 2、傳送純文字郵件: import smtplib fro

C# 網路程式設計之基於SMTP傳送電子郵件

        本文主要講述基於C#網路程式設計的傳送郵件的程式設計,郵件傳送功能是基於郵件協議的,常見的電子郵件協議有SMTP(簡單郵件傳輸協議)、POP3(郵局協議)、IMAP(Internet郵件訪問協議),文章主要參考周存傑的《C#網路程式設計例項教程》.這也是最後

ASP.NET 傳送電子郵件 smtp

(1)POP3和SMTP伺服器是什麼?         POP3 用於接收電子郵件; SMTP 用於傳送電子郵件;詳細介紹自行谷度。 (2) 名稱空間        using System.Net.Mail;        使用ASP.NET傳送電子郵件,需要引用Syste

centos 6.8配置qq smtp郵件傳送

沒有域名嚴重的郵箱容易被伺服器認為是垃圾郵件,所以在伺服器中配置了qq郵件 yum install mailx vi /etc/mail.rc 新增 set from=****@qq.com set smtp=smtps://smtp.qq.co

十:搭建Jenkins+Jmeter+Ant自動化整合環境(4)---新增郵件傳送功能

1、在系統設定中找到Jenkins Locaction項填入Jenkins URL和系統管理員郵件地址,系統管理員郵件地址一定要配置,否則發不了郵件通知。因為郵件通知都是由系統管理員的郵箱發出來的2、按照上圖配置的同時,要去自己的開啟SMTP服務,並生成授權碼3、1-2步完成

Spring 4傳送HTML/純文字郵件並攜帶附件

applicationContext檔案配置內容如下: <bean id="emailTemplate" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property

linux下設定smtp傳送163郵件

之前公司每日報告是通過qq郵箱傳送的,最近每天晚上傳送郵件時,smtp.qq.com總出問題,決定換到126上 1.126郵箱預設不開啟smtp服務,需要在網頁端開啟,期間有個手機驗證 注意等下SMTP配置的密碼為客戶端授權密碼 2.修改/etc/mail.rc 在檔

laravel5.2傳送郵件

在配置檔案.env中修改配置                      列如用QQ 發郵箱          MAIL_DRIVER=smtp MAIL_HOST=

傳送自動郵件時Could not connect to SMTP host: 10.1.1.195, port: 25;報錯的解決方法

最近在測試公司內部系統自動傳送郵件功能時,一直在報錯: javax.mail.SendFailedException: Sending failed; nested exception is: javax.mail.MessagingException: Coul

JavaMail使用SMTP協議傳送電子郵件(詳解)

package cn.outofmemory.javamail; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import j