phpアリクラウドAPIメール検証送信コードを実現

2419 ワード

//      
//$RecNum        
//$ParamString         ;          ;              15   。  
//$SignName              (         )  
//$TemplateCode                      CODE(         )  
//$AccessKeyId                   ID  
//$AccessKeySecret                      
//     
//      true,      ,         
function SendSMS($RecNum,$ParamString,$SignName,$TemplateCode,$AccessKeyId,$AccessKeySecret)  
{  
  $url='https://sms.aliyuncs.com/';//        
  $Params['Action']='SingleSendSms';//     ,      ,  :SingleSendSms  
  //$Params['RegionId']='cn-hangzhou';//      
  $Params['AccessKeyId']=$AccessKeyId;//                  ID  
  //$Params['Format']='JSON';//      ,  JSON XML。   XML  
  $Params['ParamString']=rawurlencode($ParamString);//        ;          ;              15   。  
  $Params['RecNum']=$RecNum;//       
  $Params['SignatureMethod']='HMAC-SHA1';//    ,    HMAC-SHA1  
  $Params['SignatureNonce']=time();//       
  $Params['SignatureVersion']='1.0';//      ,     1.0  
  $Params['SignName']=rawurlencode($SignName);//             (         )  
  $Params['TemplateCode']=$TemplateCode;//                     CODE(         )  
  $Params['Timestamp']=rawurlencode(gmdate("Y-m-d\TH:i:s\Z"));//      。      ISO8601    ,  
                                                              //     UTC  。   YYYY-MM-DDThh:mm:ssZ  
  $Params['Version']='2016-09-27';//API   ,    2016-09-27  
  ksort($Params);  
  $PostData='';  
  foreach ($Params as $k => $v) $PostData.=$k.'='.$v.'&';  
  $PostData.='&Signature='.rawurlencode(base64_encode(hash_hmac('sha1','POST&%2F&'.rawurlencode(substr($PostData,0,-1)),$AccessKeySecret.'&',true)));  
  $httphead['http']['method']="POST";  
  $httphead['http']['header']="Content-type:application/x-www-form-urlencoded
"; $httphead['http']['header'].="Content-length:".strlen($PostData)."
"; $httphead['http']['content']=$PostData; $httphead=stream_context_create($httphead); $result=@simplexml_load_string(file_get_contents($url,false,$httphead)); return !isset($result->Code); }