1、邮件:PHPMailer
版本: 6.0v
1、下载好了之后直接引入src
文件夹和重新根目录写一个文件email.php
(该文件内容使用phpmailer下载加压后的README.md
里面的example代码就行)
2、socket
和openssl
扩展要开启
3、去邮件方获取SMTP密码,例如qq、163
/**
* 发送邮件
*/
public function sendMail()
{
$mail = new PHPMailer(true); // 通过`true`启用例外
try {
//服务器设置
$mail->SMTPDebug = 2; // 启用详细的调试输出[0:就没有email的调试信息]
$mail->isSMTP(); // 设置邮件使用SMTP
$mail->Host = 'smtp.qq.com'; // 指定主要和备份SMTP服务器
$mail->SMTPAuth = true; // 启用SMTP验证
$mail->Username = '[email protected]'; // SMTP用户名
$mail->Password = '*********'; // SMTP密码(例如:qq邮箱获取的,具体方法百度一下,很简单)
$mail->SMTPSecure = 'tls'; // 启用TLS加密,`ssl`也接受
$mail->Port = 587; // TCP端口连接
//收件人
$mail->setFrom('[email protected]', '习近平'); //设置发送人信息(参数1:发送人邮箱,参数2:发送人名称)
$mail->addAddress('[email protected]', '特朗普'); // 添加收件人
// $mail->addAddress('[email protected]'); // 名称是可选的
// $mail->addReplyTo('[email protected]', 'Information');
// $mail->addCC('[email protected]');
// $mail->addBCC('[email protected]');
//附件
$mail->addAttachment('2.jpg'); // 添加附件
// $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // 可选文件
//Content
$mail->isHTML(true); // 将电子邮件格式设置为HTML
$mail->Subject = '中美谈判'; //邮件主题,即标题
$mail->Body = '给我滚过来,敢我国的商品税?'; //邮件内容
$mail->AltBody = '中国是全球第一大消费市场,不怕你威胁'; //邮件附件信息,可以省略
$mail->send();
echo '信息已发送到白宫';
} catch (Exception $e) {
echo '信息发送失败. 失败原因: ', $mail->ErrorInfo;
}
}
2、短信:submail
第一种:CURL发送短信
1、submail
第三方API官网阅读相关开发文档。
2、封装好curl
请求(本地php需要开启curl
扩展)
3、本地需要下载ssl证书,要在本地加入ssl证书来验证我们的身份.
1、到 sll下载证书 =>下载
cacert.pem
文件
2、把下载的cacert.pem
文件放到本地或服务器的一个固定文件下,然后再去php.ini
文件下搜索curl
,找到curl.cainfo=
,把该代码前 的#
去掉,并把刚才存放cacert.pem
文件的绝对路径放到curl.cainfo=
后面,例如:curl.cainfo="D:\ssl\cacert.pem"
,重启服务器
现在就可以使用封装好的函数了
/**
* 发送短信: 使用submail第三方API
*/
public function sendMessage($phone, $msg)
{
$curl = curl_init();
$url = 'https://api.mysubmail.com/message/xsend'; //submail开发文档主URL
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
$data = [
'appid' => '',//获取
'to' => $phone,
'project' => '',//获取
'vars' => '{"msg":' . $msg . ',"time":"60"}',
'signature' => '',//获取
];
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$res = curl_exec($curl);
curl_close($curl);
# 转成json
$res = json_encode($res);
return $res;
}
第二种:SDK发送验证码
1、有50条免费短信
2、下载submail
开发文档中的SDK,解压之后,根据demo中message_xsend_demo.php
进行编写逻辑。补充:下载的SDK有demo可以参考
/**
* 使用submail的SDK,比上面第一种调用submail的接口方便
* 区别于 message/send API,message/xsend 无需提交短信内容和短信签名,仅需提交你在
* SUBMAIL MESSAGE 应用程序中创建的短信项目的标记,并可以使用文本变量动态的控制每封短信的内容。
*/
public function send_code_to_phone($phone, $code)
{
$submail = new MESSAGEXsend();
$submail->SetTo($phone);
$submail->SetProject('');//就是submail中获取的 project
$submail->AddVar('code', $code);//接口文档中定义的动态变量
$submail->AddVar('time', 60);
$xsend = $submail->xsend();
if($xsend['status'] !== 'success'){
//todo... 发送失败
}else{
//todo... 发送成功,每天发送5次,请在60s内验证!
}
}