Reputation:
I am using the below script for sending SMS, but I am always getting the error message "Check your internet connection". Is there any working python script for waytosms or for any other service,which I can use to send SMS on international numbers.
#!/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!!!"
Please suggest me the SMS service for which I can get the python script also.
Upvotes: 1
Views: 7636
Reputation: 11
DailySMS is gone. The script has been updated to use Solinked: http://pastebin.com/21yft50r
But please don't overuse it or they can shut down too.
Upvotes: 1
Reputation: 1
My free solution uses DailySMS form and works on most countries:
#!/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"
Upvotes: 0
Reputation: 728
This code uses Twilio to send a text message:
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")
This is not free but is easy-to-use and reliable.
Upvotes: 0
Reputation: 3346
You can try twilio and there is official python code also provided as in below link. But this is not free service so you can see the pricing.
https://github.com/twilio/twilio-python#readme
Upvotes: 2