Laravel 发送邮件示例

无道 2019-07-06 0 条评论 教程相关 阅读751 手机阅读

发送邮件

参考:https://learnku.com/docs/laravel/5.6/mail/1392

配置文件

配置.env文件

如下配置:

MAIL_DRIVER=smtp
MAIL_HOST=邮件服务器地址 如:smtp.misiyu.cn
MAIL_PORT=端口,如:25
MAIL_USERNAME=用户名,如:smtp@misiyu.cn
MAIL_PASSWORD=密码
MAIL_ENCRYPTION=null

详细解释:

  • driver:用于配置默认的邮件发送驱动,Laravel支持多种邮件驱动方式,包括smtp、Mailgun、Maildrill、Amazon SES、mail和sendmail,Mailgun和Amazon SES都是收费的Maildrill目前不支持中国区用户,这三个都是第三方邮件服务。mail驱动使用PHP提供的mail函数发送,sendmail驱动通过Sendmail/Postfix(Linux)提供的命令发送邮件,smtp驱动通过支持ESMTP的SMTP发送邮件。就目前状况来看,使用smtp是最明智的选择,mail不安全,sendmail需要安装配置Sendmail/Postfix,其他要么付费要么不能用。
  • host:邮箱所在主机,使用163邮箱,对应值是smtp.163.com,使用QQ邮箱,对应值是smtp.qq.com。使用腾讯企业邮箱,对应值是smtp.exmail.qq.com
  • port:用于配置邮箱发送服务端口号,一般默认值是25,但如果设置SMTP使用SSL加密,该值为465。
  • from:配置项包含address和name,前者表示你自己的邮箱,后者表示你邮件用户名(这里邮箱,是用来发邮件的邮箱)。
  • encryption:表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。
  • username: 表示邮箱账号,比如123456789@qq.com
  • password 表示上述邮箱登录对应登录密码。注意QQ邮箱的话应该开启POP3|SMTP服务时给的授权码。
  • sendmail: 是在设置driver为sendmail时使用,用于指定sendmail命令路径。
  • pretend: 用于配置是否将邮件发送记录到日志中,默认为false则发送邮件不记录日志,如果为true的话只记录日志不发送邮件,这一配置在本地开发中调试时很有用

必须一提的是,在新版Laravel中,.env文件的配置项不够,比如没有MAIL_FROM_ADDRESS

会出现如下错误:

截图-1562244362

所以必须打开config/mail.php配置,from

截图-1562244306

这里我是直接在.env文件添加了:

截图-1562244428

生成控制器

php artisan make:controller Common/MailController

截图-1562242993

配置测试路由

Route::get('/testMail', 'Common\MailController@send');

控制器逻辑

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Mail;

class MailController extends Controller
{
    //
    public function send()
    {
        $name = '我发的第一份邮件';
        // Mail::send()的返回值为空,所以可以其他方法进行判断
        Mail::send('emails.test',['name'=>$name],function($message){
            $to = '123456789@qq.com'; $message ->to($to)->subject('邮件测试');
        });
        // 返回的一个错误数组,利用此可以判断是否发送成功
        dd(Mail::failures());
    }
}

Mail::send();需要传三个参数,第一个为引用的模板,第二个为给模板传递的变量(邮箱发送的文本内容),第三个为一个闭包,参数绑定Mail类的一个实例。

常见模板文件

resources/views/emails下创建一个模板文件(比如:CommentMail)。

{{$name}} 你好,这是一封测试邮件。

好了,访问http://localhost/testMail

打印出空白数组便是发送成功了[]

截图-1562244570

截图-1562244504

这里我是到了垃圾箱,但是发送成功了。

全文完 [
有帮助?打赏
支付宝打赏
微信打赏
]
标签: laravel 邮件 email
修改: 2019-07-06 21:06
这篇文章还没有评论呢~
点击刷新/生成验证码
It's me
昵称:无道
坐标:成都
性别:
一个人,一介学生,一个儿子~ 愿你我都被世界温暖以待
迷思爱 公众号

新建了个公众号,会不定期分享一些小玩意,有提升效率的办公软件、有一些黑科技的软件、或教程等等。

爷~,要不关注下~~