【问题标题】:Python: Script to send SMS on International numbers?Python:在国际号码上发送短信的脚本?
【发布时间】:2012-06-03 11:53:31
【问题描述】:

我正在使用以下脚本发送短信,但我总是收到错误消息“检查您的互联网连接”。是否有任何适用于 waytosms 或任何其他服务的可用 python 脚本,我可以使用它在国际号码上发送短信。

#!/usr/bin/python

import cookielib
import urllib2
from getpass import getpass
import sys
from urllib import urlencode
from getopt import getopt

ask_username = True
ask_password = True
ask_message = True
ask_number = True

def Usage():
    print '\t-h, --help:  View help'
    print '\t-u, --username: Username'
    print '\t-p, --password: Password'
    print '\t-n, --number: numbber to send the sms'
    print '\t-m, --message: Message to send'
    sys.exit(1)


opts, args = getopt(sys.argv[1:], 'u:p:m:n:h',["username=","password=","message=","number=","help"])

for o,v in opts:
    if o in ("-h", "--help"):
        Usage()
    elif o in ("-u", "--username"):
        username = v
        ask_username = False
    elif o in ("-p", "--password"):
        passwd = v
        ask_password = False
    elif o in ("-m", "--message"):
        message = v
        ask_message = False
    elif o in ("-n", "--number"):
        number = v
        ask_number = False

#Credentials taken here
if ask_username: username = raw_input("Enter USERNAME: ")
if ask_password: passwd = getpass()
if ask_message: message = raw_input("Enter Message: ")
if ask_number: number = raw_input("Enter Mobile number: ")

#Logging into the SMS Site
url = 'http://wwwg.way2sms.com//auth.cl'
data = 'username='+username+'&password='+passwd+'&Submit=Sign+in'

#Remember, Cookies are to be handled
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

# To fool way2sms as if a Web browser is visiting the site
opener.addheaders = [('User-Agent','Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20091020 Ubuntu/9.10 (karmic) Firefox/3.5.3 GTB7.0')]
try:
    usock = opener.open(url, data)
except IOError:
    print "Check your internet connection"
    sys.exit(1)

#urlencode performed.. Because it was done by the site as i checked through HTTP headers

message = urlencode({'message':message})
message = message[message.find("=")+1:]

#SMS sending
send_sms_url = 'http://wwwg.way2sms.com//FirstServletsms?custid='
#Check this line with HTTP Headers, if script is not working
send_sms_data = 'custid=undefined&HiddenAction=instantsms&Action=custfrom950000&login=&pass=&MobNo='+number+'&textArea='+message
opener.addheaders = [('Referer','http://wwwg.way2sms.com//jsp/InstantSMS.jsp?val=0')]

try:
    sms_sent_page = opener.open(send_sms_url,send_sms_data)
    inp = open("log.html","w")
    inp.write(sms_sent_page.read())
    inp.close()

except IOError:
    print "Check your internet connection( while sending sms)"
    sys.exit(1)
print "SMS sent!!!"

请向我推荐一个短信服务,我也可以为其获取 python 脚本。

【问题讨论】:

  • 简单,那是因为你有一个404错误。也就是说,请检查 URL。

标签: python sms sms-gateway


【解决方案1】:

你可以试试 twilio,下面的链接也提供了官方的 python 代码。 但这不是免费服务,所以你可以看到pricing

https://github.com/twilio/twilio-python#readme

【讨论】:

  • 谢谢,但我也可以在印度使用 twilio 服务吗?
【解决方案2】:

每日短信不见了。该脚本已更新为使用 Solinked:http://pastebin.com/21yft50r

但请不要过度使用它,否则它们也会关闭。

【讨论】:

    【解决方案3】:

    Twiliohighly recommended

    此代码使用 Twilio 发送短信:

    from twilio.rest import TwilioRestClient
    
    account = "getFromYourTwilioDashboard"
    token   = "getFromYourTwilioDashboard"
    client  = TwilioRestClient(account, token)
    
    message = client.sms.messages.create(to="+yourCellNumber", from_="+yourTwilioNumber", body="Message here")
    

    这不是免费的,但易于使用且可靠。

    【讨论】:

      【解决方案4】:

      My free solution 使用 DailySMS 表单,适用于大多数国家/地区:

      #!/usr/bin/env python
      # -*- coding: utf-8 -*-
      # Free worldwide SMS sending script using DailySMS API.
      # By Multiversum
      
      import sys
      import requests
      
      forge_user_agent = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5'
      script_url = 'http://www.uthsms.net/api/index.php'
      forge_headers = {
          'Origin' : 'http://www.uthsms.net',
          'Connection' : 'keep-alive',
          'User-Agent' : forge_user_agent,
          'Content-Type' : 'application/x-www-form-urlencoded',
          'Referer' : script_url,
      }
      
      def sendsms(destphone, smsbody):
          resp = requests.post(script_url, {'phone': destphone, 'hyderabad': smsbody}, headers=forge_headers)
      
      if __name__ == "__main__":
          if len(sys.argv) < 3:
              print "Usage: dailysms [num in international format without +] [message]"
          else:
              sendsms(sys.argv[1], sys.argv[2])
              print "Message sent"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-05
        • 2021-11-01
        • 2018-02-11
        • 1970-01-01
        相关资源
        最近更新 更多