Skip to content

Instantly share code, notes, and snippets.

@chrislkeller
Created June 18, 2021 20:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chrislkeller/ae1620fde40fecaa39c6bb20711a14f5 to your computer and use it in GitHub Desktop.
Save chrislkeller/ae1620fde40fecaa39c6bb20711a14f5 to your computer and use it in GitHub Desktop.
import smtplib
from email.message import EmailMessage
import csv
import logging
logger = logging.getLogger("root")
logging.basicConfig(
format="\033[1;36m%(levelname)s: %(filename)s (def %(funcName)s %(lineno)s): \033[1;37m %(message)s",
level=logging.DEBUG
)
data_file = 'tracking-state-party-delegate-plans.csv'
def handle():
mailserver = smtplib.SMTP('smtp.office365.com',587)
mailserver.ehlo()
mailserver.starttls()
mailserver.login('EMAIL ADDRESS', 'EMAIL PASSWORD')
with open(data_file) as file:
reader = csv.DictReader(file)
for r in reader:
if r['email_address']:
logger.debug('Sending email to {}'.format(r['state']))
msg = EmailMessage()
msg['To'] = r['email_address']
msg['From'] = 'chris.keller@latimes.com'
msg['Subject'] = "RE: {state} Democratic Party 2020 Delegate Selection Plans".format(state=r['state'])
message = ""
message += "Afternoon - I\'m working to compile 2020 delegate selection plans from each state Democratic party.\n\n"
message += "Could you point me to a link to the delegate selection plan for the {state} Democratic Party on your website, or provide a copy? I'm also interested in getting a sense of when it was approved by the DNC.\n\n".format(state=r['state'])
message += "Thanks in advance for any guidance you can provide.\n\n"
message += "Chris K\n----\nChris Keller"
msg.set_content(message)
mailserver.sendmail(
'chris.keller@latimes.com', r['email_address'], msg.as_string()
)
mailserver.quit()
if __name__ == '__main__':
handle()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment