laravel 5 邮件发送

解:本教程中使用到的是SMTP(Simple Message Transfer Protocol)简单邮件传输协议,通常理解为邮件发送服务器。实验使用邮箱的163,QQ邮箱。
首先注册163邮箱
注册完需要 =>设置=>开启163邮箱的POP3和SMTP服务。=>设置授权码(配置要用到)
laravel配置
修改邮件发送配置。laravel4.2 在 app/config/mail.php,laravel 5上 在config/mail.php,修改以下配置:
`'driver' => 'smtp',
 'host' => 'smtp.163.com',
 'port' => 25,
 'from' => array('address' => '账号@163.com', 'name' => '发件人名称'),
 'username' => '账号@163.com', // 注意,这里必须和上一行配置里面的邮件地址一致
 'password' => '授权码',`

配置说明:
1.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,
其他要么付费要么不能用。
2.host:是邮箱所在主机,比如我们使用163邮箱,对应值是smtp.163.com,使用QQ邮箱的话,对应值是smtp.qq.com。
3.port:用于配置邮箱发送服务端口号,比如一般默认值是25,但如果设置SMTP使用SSL加密,该值为465。
4.from:配置项包含address和name,前者表示发送邮箱,后者表示发送邮件使用的用户名。
5.encryption:表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。
6.username:表示邮箱账号,比如yaojinbu@163.com
7.password:表示上述邮箱登录对应登录密码。注意QQ邮箱的话应该开启POP3|SMTP服务时给的密钥。
8.sendmail:是在设置driver为sendmail时使用,用于指定sendmail命令路径
模板 views/emails/test.blade.php:
{{$name}} 你好,这是一封测试文件。//发送的邮件内容
生成控制器
php artisan make::controller MailController;(也可以手动创建)
use Illuminate\Support\Facades\Mail;
class MailController{
  public function send()
  {
      $name = '收件人称呼';
      $flag = Mail::send('emails.test',['name'=>$name],function($message){
        $to = '*****@qq.com';
         $message ->to($to)->subject('邮件测试');
      });
  }
}
//Mail::send();需要传三个参数,第一个为引用的模板,第二个为给模板传递的变量,第三个为一个闭包,参数绑定Mail类的一个实例。
发送纯文本邮件
Mail::raw('你好', function ($message) {
    $to = '******@qq.com';
    $message ->to($to)->subject('纯文本信息邮件测试');
});
邮件中发送附件
//网络图片
# test.blade.php
{{$name}}你好,这是一封测试文件。 
<br>
<img src='{{$message->embed($image)}}'>
public function send()
{
     $name = 'asdf';
     $image = 'http://11632a6.jpg';
     $flag = Mail::send('emails.test',['name'=>$name,'image'=>$image],function($message){
         $to = '******@qq.com';
         $message ->to($to)->subject('主题');
     });

}
//本地图片引用需要使用到Storage类,模板方法略有不同,在Storage/images文件夹中有一张图片。
//embedData()两个参数,第一个为图片,第二个为自定义图片名称。
<img src="{{$message->embedData($image,'我的自拍照.jpg')}}">
# MailController.php
public function send(){
   $image = Storage::get('images/1.jpg');
   $flag = Mail::send('emails.test',['image'=>$image],function($message){
   $to = '********@qq.com';
   $message->to($to)->subject('[本地图片测试]');
   });
}
邮件附件
public function sendFile(){
    $name = 'sdf';
    $flag = Mail::send('emails.test',['name'=>$name],function($message){
        $to = '******@qq.com';
        $message->to($to)->subject('邮件主题');
        $attachment = storage_path('app/files/test.txt');
        // 在邮件中上传附件
        $message->attach($attachment,['as'=>'中文文档.txt']);
     });
}
//$message的attach方法上传附件,该方法第一个参数是附件地址,第二个参数为一些额外参数,这里我们通过as指定附件在邮件中的显示名称。

错误解决

1.Expected response code 250 but got code "553", with message "553 Mail from must equal authorized user 
邮件服务器要求from和username必须一致;
    2.文件名乱码的话:$message->attach($attachment,['as'=>"=?UTF-8?B?".base64_encode('中文文档')."?=.txt"]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel 中发送邮件非常简单,可以使用内置的邮件服务提供者 Mail,以及支持多种邮件驱动程序(如SMTP、Sendmail、Amazon SES等)。 下面是一个简单的示例,展示如何在 Laravel 中发送电子邮件: ```php use Illuminate\Support\Facades\Mail; use App\Mail\DemoEmail; class DemoController extends Controller { public function sendEmail() { $details = [ 'title' => 'Demo Email', 'body' => 'This is a demo email from Laravel.' ]; Mail::to('example@example.com')->send(new DemoEmail($details)); return "Email sent"; } } ``` 在上面的示例中,我们使用 `Mail` 门面调用 `to()` 方法指定收件人,然后使用 `send()` 方法发送邮件。在 `send()` 方法中,我们传递了一个 `DemoEmail` 类实例,该类是我们定义的一个电子邮件类,它负责构建邮件内容。 以下是一个示例 `DemoEmail` 类: ```php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Queue\ShouldQueue; class DemoEmail extends Mailable { use Queueable, SerializesModels; public $details; public function __construct($details) { $this->details = $details; } public function build() { return $this->subject('Demo Email') ->view('emails.demo'); } } ``` 在上面的示例中,我们定义了一个 `$details` 属性,它持有电子邮件内容的详细信息。然后,我们定义了一个构造函数,它接受 `$details` 并将其赋值给 `$this->details`。最后,我们定义了一个 `build()` 方法,它返回一个邮件视图,并指定了邮件主题。 在 Laravel 中,邮件视图通常存储在 `resources/views/emails` 目录中。例如,在上面的示例中,我们可以创建一个名为 `demo.blade.php` 的视图文件,其中包含电子邮件的内容。 此外,我们还可以通过链式调用方法来添加其他邮件内容,例如添加附件、Carbon副本等。 以上是一个简单的 Laravel 发送邮件的示例。您可以根据自己的需求进行更改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值