通过免费网关发送短信

8
请为我提供通过网站发送短信的示例代码。如何包含短信网关?请告诉我,我能否使用way2sms.com作为网关?
这是正确的方法吗?请建议我仅使用这些代码是否足够?
<?php
error_reporting(E_ALL);
ob_implicit_flush(true);


include_once "class.curl.php";
include_once "class.sms.php";

$smsapp=new sms();
$smsapp->setGateway('way2sms'); 


echo "Logging in  ... ";
$smsapp->login('10 digit number','way2sms password');

echo "Sending SMS ... ";
$result=$smsapp->send('receipient number','text message');

if($result=='true')
{
    echo "Message sent";
}
else
{   
    echo "Error encountered : ".$smsapp->getLastError();
}

?>

这是我的class.curl.php文件

<?php
class sms
{
    var $username;
    var $password;
    var $curl;
    var $server;
    var $loginDone;
    var $debugMode;
    var $data;
    var $error;
    public function __construct()
    {
        $this->curl=new cURL();
    //  $this->curl->setProxy("");
        $this->loginDone=false;
        $this->debugMode=false;
        $this->data=array();
    }
    public function setGateway($serverName)
    {
        switch($serverName)
        {
            case '160by2':
            $this->server='160by2';
            break;

            case 'way2sms':
            $this->server='way2sms';
            break;

            case 'airtel':
            $this->server='airtel';
            break;

            default :
            $this->server='way2sms';

        }
    }
    public function login($username,$password)
    {
        $server=$this->server;

        call_user_func(array($this,"login_$server"),$username,$password);
        $this->loginDone=true;

    }
    public function send($number,$msg)
    {
        $server=$this->server;
        if($this->loginDone)
        return call_user_func(array($this,"send_$server"),$number,$msg);
        else
        {
            echo "<h2>Please login first before sending SMS</h2>";
        }

    }
    private function login_way2sms($username,$password)
    {
        $out=($this->curl->post("http://www.way2sms.com","1=1"));
        $pattern="/Location:(.+?)\n/";
        preg_match($pattern,$out,$matches);
        $domain=trim($matches[1]);

        $this->data['domain']=$domain;

        $out= $this->curl->post("{$domain}auth.cl","username=$username&password=$password&Submit=Sign+in");

        $pattern="/Location:(.+?)\n/";
        preg_match($pattern,$out,$matches);
        $referer=trim($matches[1]);
        $this->data['referer']=$referer;


    }


    private function send_way2sms($number,$msg)
    {
        $domain=$this->data['domain'];
        $html=$this->curl->post("{$domain}jsp/InstantSMS.jsp?val=0","1=1",$this->data['referer']);
        if($this->debugMode)
        {
        echo "<h2>After logging in, the HTML returned by server is</h2>";
        echo $html;
        }

        $pattern = '/name="Action".+?value="(.*)"/';
        preg_match($pattern, $html, $matches);

        $custfrom=$matches[1];
        $msg=urlencode($msg);
        $html=$this->curl->post("{$domain}FirstServletsms?custid=","custid=undefined&HiddenAction=instantsms&Action={$custfrom}&login=&pass=&MobNo=$number&textArea=$msg");
        $pattern = '/class="style1">(.+?)<\/span>/';
        preg_match($pattern, $html, $matches);
        $out=($matches[1]);

        if(!preg_match("/successfully/",$out))
        {
        $this->setError($out);
        return false;
        }
        else
        {
        return true;
        $this->setError("No errors");
        }

    }
    public function getLastError()
    {
        return $this->error;

    }
    private function setError($error)
    {
        $this->error=$error;
    }
    private function login_160by2($username,$password)
    {
    //  $out2=$this->curl->get("http://m.160by2.com");
        $out=$this->curl->post("http://m.160by2.com/LoginCheck.asp?l=1&txt_msg=&mno=","txtUserName=$username&txtPasswd=$password&RememberMe=Yes&cmdSubmit=Login");
        $pattern="/MyMenu.asp\?Msg=(.+?)&/";

        preg_match($pattern,$out,$matches);
        $id=trim($matches[1]);
        $this->data['id']=$id;

    }

    private function send_160by2($number,$msg)
    {
        $msg=urlencode($msg);
        $id=$this->data['id'];
        $out1=$this->curl->post("http://m.160by2.com/SaveCompose.asp?l=1","txt_mobileno=$number&txt_msg=$msg&cmdSend=Send+SMS&TID=&T_MsgId=&Msg=$id");
        //echo $out1;
        $pattern = '/\<table.+?\>(.+)\<\/table/s';
        preg_match($pattern, $out1, $matches);

        $out=strip_tags(@$matches[1]);
        if(count($matches)<1)
        {
        $pattern="/\<div.+?background:.+?yellow.+?\>(.+?)\<\/div\>/s";

        preg_match($pattern,$out1,$matches);

        $out=strip_tags($matches[1]);
        }

//
    //  echo "out is $out";

        if(!preg_match("/successfully/i",$out))
        {

        $this->setError($out);

        return false;
        }
        else
        {
        return true;
        $this->setError("No errors");
        }

    }

    private function login_airtel($username,$password)
    {
        $this->data['username']=$username;
        $this->data['password']=$password;

    }


    private function send_airtel($number,$msg)
    {

    }
}

?>

在用户名和密码的位置上,我应该使用哪个用户名和密码?

2
你可能需要问他们,而不是我们。 - Pekka
3个回答

14

你也可以使用无线运营商提供的网关,这样只需使用PHP的邮件功能向他们发送电子邮件即可。

在“(Number)”处,您必须包括他们的10位电话号码。这意味着您必须包括他们的区号。

AT&T (Number)@txt.att.net

T-Mobile (Number)@tmomail.net

Sprint (Number)@messaging.sprintpcs.com

Verizon (Number)@vtext.com 或 (Number)@vzwpix.com


请问我需要联系way2sms.com的支持部门来建立短信网关或获取详细信息吗?抱歉,我对此一无所知,因此我从头开始询问。 - priya
1
你不需要做什么特别的。你只需要使用PHP邮件函数,加上他们的号码和运营商地址,就可以给每个号码发送你想要发送的短信。 - Mark Tomlin
1
我不知道为什么这个答案被接受了。提问者试图向印度的Airtel网络发送短信。这个答案只适用于美国。几乎没有其他地方有收件人付费的短信,因此也没有电子邮件到短信网关。 - Colin Pickard
我觉得他并不清楚……我猜他之前只是冲动地回答了,直到意识到这并没有对你有所帮助。我能删除我的回答让你贴上正确的回答吗?还是说我应该把这个帖子设为社区共享,以便你来编辑添加正确的答案? - Mark Tomlin

2

这仅适用于印度人。需要说明印度的城市和号码(显然也是印度的),因此对其他人无效。 - Vladimir Despotovic

1

看起来没问题,除了一行需要修改

if($result=='true')
to
if($result == true)

@JapanPro,谢谢。请指导我如何在我的网站上使用它?如何设置短信网关?如果我使用这个代码,是否足以通过网站发送短信? - priya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接