阿里云上的创建签名、模板、开通相应服务等相关操作不在此叙说。
阿里云语音
<?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.php
和app\libs\Smtp.class.php
在composer.json中加上:
"classmap": [
"app/libs"
],

然后在项目根目录执行一下命令:composer dumpautoload
开始你的发送吧~
网友评论