Отправка массовой электронной почты с помощью Python с использованием данных из нескольких файлов.txt
В настоящее время я пишу небольшую программу, чтобы облегчить мою рабочую нагрузку, отправляя пару сотен писем в день. Я отредактировал код, который я где-то нашел, и придумал это до сих пор:
import smtplib
from email.mime.text import MIMEText
from time import sleep
from random import choice
import re
import io
user_email = input('Enter your E-mail: ')
user_password = input('Enter your Password: ')
try:
s = smtplib.SMTP_SSL('smtp.gmail.com', 587)
# re-identify ourselves as an encrypted connection
s.ehlo()
# If using TLS, uncomment the line below.
#s.starttls()
s.login(user_email, user_password)
s.set_debuglevel(1)
except IOError:
print (IOError)
SUBJECT = open('1subject.txt', 'r')
variation0 = [SUBJECT.read(), SUBJECT.read(), SUBJECT.read()]
SUBJECT.close()
GREETING = open('2greeting.txt', 'r')
variation1 = [GREETING.read(), GREETING.read(), GREETING.read()]
GREETING.close()
BODY = open('3body.txt', 'r')
variation2 = [BODY.read(), BODY.read(), BODY.read()]
BODY.close()
OUTRO = open('4outro.txt', 'r')
variation3 = [OUTRO.read(), OUTRO.read(), OUTRO.read()]
OUTRO.close()
# Where the {}'s are, is where a variation(0-3) will be substituted in.
template = """Insert your {}
Multiline email body
HERE {} {}
-transposed messenger
"""
sender = 'sender@email.com'
recipients = []
names = []
mailTxt = open("listOfRecipients.txt", 'r')
for line in mailTxt:
line = line.replace('\n',"")
names.append(re.split(':', line)[0])
recipients.append(re.split(':',line)[1])
for k in range(len(recipients)):
msg = MIMEText(template.format(choice(variation1), names[k]+",", recipients[k], choice(variation2), choice(variation3)))
msg['Subject'] = choice(variation0)
msg['From'] = sender
msg['To'] = recipients[k]
print ("Sending...")
print (msg)
try:
s = smtplib.SMTP_SSL('smtp.gmail.com', 587)
s.sendmail(sender, recipients[k], msg.as_string())
except Exception as e:
str(e)
print ((e, "error: logging in and cont with nxt address..."))
s = smtplib.SMTP_SSL('smtp.gmail.com', 587)
s.ehlo()
s.login(user_email, user_password)
s.set_debuglevel(1)
continue
with io.open('log.txt', 'a', encoding='utf-8') as f:
try:
f.write(unicode(msg))
except:
f.write("Error handling ASCII encoded names: "+ Unicode
(recipients[k]))
print ("Messages have been sent.")
f.close()
s.quit()
Это первый раз, когда я добавляю код сюда, поэтому я не знаю, правильно ли я это сделал. Однако, что бы я ни делал, я продолжаю получать ошибки. Открываемые файлы - это файлы, содержащие адреса и имена электронной почты (например, mail@email.com: mailman Johnson, а затем новая строка, продолжающаяся следующим образом), остальные файлы содержат текст отправляемого электронного письма.
мой смешной вопрос: как мне заставить это работать? Что я делаю неправильно.
Моя текущая ошибка
ssl.SSLError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:847)
Опять же, мои извинения, если это не настоящий вопрос!