发送邮件并不复杂。Laravel 基于 Symfony Mailer 组件提供了一个简洁、简单的邮件 API。Laravel 和 Symfony 为 Mailer SMTP 、Mailgun 、Postmark 、 Amazon SES 、 及 sendmail (发送邮件的方式)提供驱动,允许你通过本地或者云服务来快速发送邮件。
需要准备的内容
①laravel框架
②一个用于发送邮件的账号
③一个用于接收邮件的账号
邮箱配置
不管是用什么程序发送邮件基本的原理都是当程序的某个行为被触发时,执行发送邮件的行为;发送邮件则必须要有一个邮箱账号,只是与人工操作的不同在于,程序则是在后台直接执行了邮箱的登录及内容的发送而已。
注册邮箱
这边以163邮箱为例,注册一个163邮箱,进入设置页面如上图所示。开启IMAP/SMTP服务,并创建一个授权码,授权码是一串字母,记录保存好,一旦创建页面关闭就无法在查看,只能重新创建。这里以163邮箱为例子,其它的邮箱服务商也是同样的操作操作方法。
配置laravel框架
//.evn
MAIL_MAILER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465
MAIL_USERNAME=seoddcn
MAIL_PASSWORD=HBBFDCTYGFDDX
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=seoddcn@163.com
MAIL_FROM_NAME=潘某人SEO
2
3
4
5
6
7
8
9
找到laravel框架根目录下的‘.evn’文件,将你的创建的163邮箱的配置填入上述的字段中。
修改第五行‘MAIL_USERNAME’,可以随便填,为收件人看见的发件人名称
修改第六行‘MAIL_PASSWORD’,将这个字段的值修改为刚才创建的163的授权码
修改第八行‘MAIL_FROM_ADDRESS’,输入你的163邮箱地址
修改第九行‘MAIL_FROM_NAME’,可以随便填,为收件人看见的邮件来源
清空config缓存
//切换到laravel框架的目录
cd /home/www/seodd
php artisan config:cahche
2
3
必需记得这一步config缓存清空,否则‘.evn’不管怎么设置都不会生效的。
创建控制器
<?php
namespace App\Http\Controllers\demo;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
class mailController extends Controller
{
public function mailto(Request $request){
//文本邮件发送功能
Mail::raw($text, function ($message) {
$to = 'seoddcn@qq.com';//收件人邮箱
$message ->to($to)->subject('邮件主题');
});
}
public function mailtomore(Request $request){
//富文本邮件发送功能
Mail:: send('mail.index',['data'=>'邮件数据'], function ($message) {
//mail.index为邮件的blade模版
$message->to('接收者邮箱账号');
/*
局部设置发件人名称
参数1:发件人邮箱账号,与.env中发件人邮箱一致
参数2:接收人看到的发送人名称
*/
$message->from('发件人邮箱账号','xxx');
$message->subject('测试邮件');
});
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
自此调取此邮件控制器就可以实现邮件的发送,上述控制器,展示了纯文本和富文本的两种方式,更全的邮件发送方式可以参照laravel官方文档。