1

I am writing a script that sends an email every 10 seconds once the button on the Pibrella is pressed. And I want it to stop when the button is pressed again.

So for example, the first time it is pressed, it sends an email every 10 seconds. Then the second time, it stops the thread.

Here is my current code, can someone please tell me where I am doing wrong?

import pibrella, signal
import threading
import time
import smtplib

server = smtplib.SMTP("smtp.gmail.com",587)
server.ehlo()
server.starttls()
server.ehlo()

server.login("email@gmail.com", "EmailPassword")

isPressed = 0

def pressed(pin):
    global isPressed
    if isPressed == 0:
        isPressed = 1
        sendMail()
    else:
        pibrella.light.off()
        t.cancel()
        isPressed = 0

def sendMail():
    pibrella.light.pulse()
    server.sendmail("email@gmail.com", "receiver@gmail.com", "Hello World")
    t.start()

t = threading.Timer(10, sendMail).start()

pibrella.button.pressed(pressed)
pibrella.pause()

server.close()

The error that I am getting right now is posted below. Note, that the email is indeed being sent.

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pibrella.py", line 262, in handle_callback
    callback(self)
  File "sendText.py", line 27, in pressed
    sendMail()
  File "sendText.py", line 36, in sendMail
    t.start()
AttributeError: 'NoneType' object has no attribute 'start'
Exception in thread Thread-14:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 760, in run
    self.function(*self.args, **self.kwargs)
  File "sendText.py", line 36, in sendMail
    t.start()
AttributeError: 'NoneType' object has no attribute 'start'
user130622
  • 53
  • 2
  • 8

1 Answers1

-1

Code for Sending Emails (From my Github)

import subprocess
import smtplib
import socket
from email.mime.text import MIMEText
import datetime
#account info
to = 'example@gmail.com'
gmail_user = 'example@gmail.com'
gmail_password = 'your_password'
smtpserver = smtplib.SMTP('smtp.gmail.com', 587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.login(gmail_user, gmail_password)
today = datetime.date.today()
arg='ip route list'
p=subprocess.Popen(arg,shell=True,stdout=subprocess.PIPE)
data=p.communicate()
split_data=data[0].split()
ipaddr=split_data[split_data.index('src')+1]
my_ip='your_message'
msg=MIMEText(my_ip)
msg['Subject']= 'the_subject'
msg['From']= gmail_user
msg['To'] = to
smtpserver.sendmail(gmail_user, [to], msg.as_string())
smtpserver.quit()
Meteodeep
  • 3
  • 4