2
votes

I'm really lost now at this part where I need to send sms to multiple recipients.

How do i send an sms to all the contacts i have in my database? Do I use for-loops? Or is there other ways? Please help thank you so much.

This is my SMS code

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import serial
import time
import sys
import MySQLdb as mdb

try:
    con = mdb.connect('localhost', 'user', 'password', 'db')
    print 'Database connected';
except Exception as e:
    sys.exit('Database connection failed')

cur = con.cursor()
cur.execute("Select contacts from dbtable")
con.commit()
number= cur.fetchall()
print number

for item in number:
    recipient= recipient+item

class TextMessage:
    def __init__(self, recipient="xxxxxxxx",message="TextMessage.content not set."):
        self.recipient = recipient
        self.content = message

    def setRecipient(self, number):
        self.recipient = number

    def setContent(self, message):
        self.content = message

    def connectPhone(self):
        self.ser = serial.Serial('/dev/ttyUSBSMS', 460800, timeout=5, xonxoff = False, rtscts = False, bytesize = serial.EIGHTBITS, parity = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE)
        time.sleep(1)

    def sendMessage(self):
        self.ser.write('ATZ\r')
        time.sleep(1)
        self.ser.write('AT+CMGF=1\r')
        time.sleep(1)
        self.ser.write('''AT+CMGS="''' + self.recipient + '''"\r''')
        time.sleep(1)
        self.ser.write(self.content + "\r")
        time.sleep(1)
        self.ser.write(chr(26))
        time.sleep(1)
     def disconnectPhone(self):
        self.ser.close()

sms = TextMessage("xxxxxxxx","Important!")
sms.connectPhone()
sms.sendMessage()
sms.disconnectPhone()
print "message sent successfully"

The printed output

(('99876545',), ('87546412',), ('97789546',), ('87546464',), ('97377454',))
1
Please decide which coding you want to use since it does not make sense to specify more than one. I would suggest using UTF-8 for the sake of compatability. See PEP0263 for further details.albert
Okay will note that thanksTyra
After reading your question several times: What exactly is your question? Could you please provide a anonymised snippet illustrating what the Database-Server returns on your .fetchall() since the docs are telling that this is a list of tuples.albert
Yeah it is tuples.. I want to be able to send to many recipients as this code is originally for one number.. I'll put the snipplet when I reach school..Tyra
Hi, I've added the snippet.Tyra

1 Answers

0
votes

A simple for loop would do the job:

t_list =  (('99876545',), ('87546412',), ('97789546',), ('87546464',), ('97377454',))

for t in t_list:
    number = t[0]
    print(number)
    # Call function to send SMS to the given `number`

Just adapt this basic approach do fulfill your needs.