laravel框架下发送 阿里云 语音 邮件 短信

2018-05-12  本文已影响80人  噫那里有条咸鱼

阿里云上的创建签名、模板、开通相应服务等相关操作不在此叙说。


阿里云语音


<?php
/**
 * Created by PhpStorm.
 * User: 有梦想的咸鱼
 * Date: 2018/5/12
 * Time: 15:36
 */
namespace App\Http\Controllers;

use Aliyun\DySDKLite\SignatureHelper;
use Illuminate\Http\Request;

class aliyunVoiceController extends Controller
{
    public function sendVoice(Request $request)
    {
        $input = $request->all();
        $params = array ();

        // *** 需用户填写部分 ***
        // fixme 必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息
        $accessKeyId = "你的阿里云key";
        $accessKeySecret = "你的阿里云secret";

        // fixme 必填: 被叫显号
        $params["CalledShowNumber"] = "这里填写被叫显示的号码";

        // fixme 必填: 语音接收号码
        $params["CalledNumber"] = $input['phone'];

        // fixme 必填: Tts模板Code
        $params["TtsCode"] = "这里填写模板你的code";

        // fixme 选填: Tts模板中的变量替换JSON,假如Tts模板中存在变量,则此处必填
        $params["TtsParam"] = array(
            "code" => $input['code']  //这里填写你的模板变量,根据自己的模板需要填写
        );

        // fixme 选填: 音量
        $params["Volume"] = 100;

        // fixme 选填: 播放次数
        $params["PlayTimes"] = 3;

        // fixme 选填: 音量, 取值范围 0~200
        $params["Volume"] = 100;

        // fixme 选填: 预留给调用方使用的ID, 最终会通过在回执消息中将此ID带回给调用方
        $params["OutId"] = "";

        // *** 需用户填写部分结束, 以下代码若无必要无需更改 ***

        if(!empty($params["TtsParam"]) && is_array($params["TtsParam"])) {
            $params["TtsParam"] = json_encode($params["TtsParam"], JSON_UNESCAPED_UNICODE);
        }

        // 初始化SignatureHelper实例用于设置参数,签名以及发送请求
        $helper = new SignatureHelper();

        // 此处可能会抛出异常,注意catch
        $result = $helper->request(
            $accessKeyId,
            $accessKeySecret,
            "dyvmsapi.aliyuncs.com",
            array_merge($params, array(
                "RegionId" => "cn-hangzhou",
                "Action" => "SingleCallByTts",
                "Version" => "2017-05-25",
            ))
        // fixme 选填: 启用https
        // ,true
        );
        if ($result->Code == 'OK'){
           echo "语音发送成功";
        }else{
            echo "语音发送失败";
        }
    }
}

阿里云短信

<?php
namespace App\Http\Controllers;

use Aliyun\DySDKLite\SignatureHelper;
use Illuminate\Http\Request;

class SmsController extends Controller
{
    public function sendSms(Request $request)
    {
        $input = $request->all(); 
        $params = array ();

        // *** 需用户填写部分 ***
        // fixme 必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息
        $accessKeyId = "你的阿里云key";
        $accessKeySecret = "你的阿里云secret";

        // fixme 必填: 短信接收号码
        $params["PhoneNumbers"] = $input['phone'];

        // fixme 必填: 短信签名,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
        $params["SignName"] = "这里填写你的签名名称";

        // fixme 必填: 短信模板Code,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
        $params["TemplateCode"] = "这里填写模板你的code";

        // fixme 可选: 设置模板参数, 假如模板中存在变量需要替换则为必填项
        $params['TemplateParam'] = Array (
            "code" => $input['code'] //这里填写你的模板变量,根据自己的模板需要填写
        );

        // fixme 可选: 设置发送短信流水号
        $params['OutId'] = "123456";

        // fixme 可选: 上行短信扩展码, 扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段
        $params['SmsUpExtendCode'] = "1234567";

        // *** 需用户填写部分结束, 以下代码若无必要无需更改 ***
        if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
            $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
        }

        // 初始化SignatureHelper实例用于设置参数,签名以及发送请求
        $helper = new SignatureHelper();

        // 此处可能会抛出异常,注意catch
        $content = $helper->request(
            $accessKeyId,
            $accessKeySecret,
            "dysmsapi.aliyuncs.com",
            array_merge($params, array(
                "RegionId" => "cn-hangzhou",
                "Action" => "SendSms",
                "Version" => "2017-05-25",
            ))
        );
        if ($result->Code == 'OK'){
            echo "短信发送成功";
        }else{
            echo "短信发送失败";
        }
    }
}


阿里云邮件

<?php
namespace App\Http\Controllers;

use App\libs\Smtp;
use Illuminate\Http\Request;

class SmtpController extends Controller
{
    //发送邮件
    public function sendSmtp(Request $request)
    {
        $input = $request->all();

        // fixme 必填:目标邮箱,发送给谁
        $mailto         = $input['email'];
        // fixme 必填:邮件主题  ps:如果 主题/内容 填 123 这种容易被当垃圾邮件拦截
        $mailsubject    = $input['title'];
        // fixme 必填:邮件内容
        $mailbody       = $input['content'];

        // *** 需用户填写部分结束, 以下代码若无必要无需更改 ***
        // fixme SMTP服务器 80端口时删掉 "ssl://"
        $smtpserver     = "ssl://smtpdm.aliyun.com";

        // fixme SMTP服务器端口 默认端口25不开放,80端口-未加密,465端口-ssl加密
        $smtpserverport = 465;

        // fixme SMTP服务器的用户邮箱
        $smtpusermail   = "这里填写你的SMTP服务器的用户邮箱";

        // fixme SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
        $smtpuser       = "这里填写你的SMTP服务器的用户帐号";

        // fixme SMTP服务器的用户密码
        $smtppass       = "这里填写你的SMTP服务器的用户密码";

        $mailsubject    = "=?UTF-8?B?" . base64_encode($mailsubject) . "?=";

        // fixme 邮件格式(HTML/TXT),TXT为文本邮件
        $mailtype       = "HTML";

        // 初始化smtp
        $smtp           = new Smtp($smtpserver, $smtpserverport, true, $smtpuser, $smtppass);
        $smtp->debug    = false;

        // 发送邮件
        $result = $smtp->sendMail($mailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);

        if ($result == true){
            echo "邮件发送成功";
        }else{
            echo "邮件发送失败";
        }
    }
}

需要引入的资源

阿里云语音、短信需要引进文件:SignatureHelper.php
链接:https://pan.baidu.com/s/15WhLckrH8zbAvpMfbcGc1A 密码:78t1
阿里云语音邮件需要引进文件:Smtp.class.php
链接:https://pan.baidu.com/s/1v1pQqxrf5CdXAKoIZdNjWA 密码:wnlg

下载后根据需要自行修改一下命名空间

ps: laravel框架第三方包不是扔进项目就能用的,这里需要用到第三方包自动加载。
比如我放置两个文件的路径是app\libs\SignatureHelper.phpapp\libs\Smtp.class.php
在composer.json中加上:

     "classmap": [
          "app/libs"
      ],

然后在项目根目录执行一下命令:composer dumpautoload

开始你的发送吧~

上一篇 下一篇

猜你喜欢

热点阅读