您的位置:首页 > 编程语言 > PHP开发

laravel5.5 sendCloud 发送邮件(sendCloud Api and naux/sendcloud )

2018-02-07 10:20 447 查看
laravel5.5 推荐邮件驱动 MailGun  SparkPost SES 都有限制(向一个邮箱发送邮件,必须要让邮件供应商和被发送人确认后才可以)
 所以实际生产中没有办法使用默认驱动, 国内最常用的SendCloud 

也可以使用  naux/sendcloud 实现无缝使用laravel Mail 语法, 但是需要注意版本:

注意:

 1. Laravel 5.5 以下请使用 1.1.3 版本

2. 部署:

 composer require naux/sendcloud

config/app.php 添加 \Naux\Mail\SendCloudServiceProvider::class,

 .env

 MAIL_DRIVER=sendcloud
 SEND_CLOUD_USER=   # 创建的 api_user
SEND_CLOUD_KEY=    # 分配的 api_key

下面是Api操作模板的实例

注意:  1. xsmtpapi 是X-SMTP扩展字段,  base64编码封装过的json字符串, 但是json条用的时候 传入json字符串就可以了

          2.  X-SMTP 每一个key对用的是数组(在json_encode之前) 

<?php
namespace App\SendCloud;

use App\User;

class SendCloud
{

// 模板发送邮件Api
private $url = 'http://api.sendcloud.net/apiv2/mail/sendtemplate';

/**
* @param User $user 用户对象
* @param string $template 模板名称
* @param string $subject 主题
* @param array $params 希望传递的变量 eg: ['%name%' => [$user->name], '%confirm_code%' => [$user->confirm_code]]
* @return bool|string
*/
public function sendCloud(User $user, $template, $subject, $params = [])
{
// $params = ['%name%' => [$object_user->name], '%route%' => ['verify/' . $object_user->confirm_code]];
// (new SendCloud())->sendCloud($object_user, 'register', '用户激活账号邮件', $params);
$x_smtpapi = json_encode(['to' => [$user->email], 'sub' => $params]);
$param = [
'apiUser' => env('SENDCLOUD_API_USER'),
'apiKey' => env('SENDCLOUD_API_KEY'),
'from' => env('SENDCLOUD_FORM'),
'fromName' => env('SENDCLOUD_FORM_NAME'),
'subject' => $subject,
'templateInvokeName' => $template,
'respEmailId' => 'true',
'xsmtpapi' => $x_smtpapi
];
$data = http_build_query($param);

$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => $data
));

$context = stream_context_create($options);
return file_get_contents($this->url, false, $context);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: