最近在做一个网站在线监控的东西,里面有一步是一旦发现网站不在线就立即给手机发短信。这个功能显然可以用收费短信实现,但我更希望能得到一个免费的短信接口。稍微想了一下,我能想到的免费给自己发短信的方式有两种,第一个是飞信,第二个是139邮箱。至于飞信,由于API接口我实在是编不出来,于是果断转向了139邮箱。它是中国移动提供给手机用户的邮箱产品,往这个邮箱里发邮件时,手机会自动收到提示。这样,我们就可以实现外部应用或其他人免费给自己发短信。基于这一点,我编写了下面的简单脚本,我是在Sina App Engine上做的这个脚本,放在其他机器上只需要简单改动即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <?php
$sendto='13800000000@139.com'; //这里改成你的139邮箱对应的手机号
$subj=$_REQUEST['s'];
if ($subj==null ) {
die('调用错误!正确的调用格式:
http://xxxxxx.sinaapp.com/sendsms.php?s=今天天气这么好,我们该去干吗呢?');
}
$con="Sent From sendsms.";
$mail=new Saemail();
$options=array(
from => 'send@smtpserver.com', //你的任意一个邮箱用户名
to => $sendto,
smtp_host => 'smtp.smtpserver.com', //用户名对应的SMTP服务器地址
smtp_port => 25,
smtp_username => 'send@smtpserver.com', //刚才的那个邮箱用户名
smtp_password => 'password', //邮箱用户名对应的密码
subject => $subj,
content => $con,
);
$mail->setOpt($options);
$ret=$mail->send();
if ($ret === false)
var_dump($mail->errno(), $mail->errmsg());
else
die('发送成功!');
?>
保存提交后,访问
1 | http://xxxxxx.sinaapp.com/sendsms.php?s=XXXX |
就可以将XXXX发送到你的手机上了。当然,前提是你开通了中国移动的139免费邮箱。另外,你或许还需要在邮箱里将短信接收时间改为0点至24点。
这个东西有什么用呢?首先,就是别人可以免费给你发短信。第二个,就是自己的应用可以调用这个借口,实现给自己发免费提醒短信,比如可以用来监控你的VPS是否在线这类的功能。
实际使用的时候可以再编入一个参数token=,防止不认识的人给你发送垃圾短信,这样的话只需要在php脚本的第二行加入两行判定就可以了:
1 2 | $token=$_REQUEST("token"); if ("$token"!="qwer1234") die("Wrong Token!"); |
原创文章,转载请注明来源:香菇肥牛的博客http://qing.su!
我用crontab + 喵提醒,可以达到类似效果