Как мне в цикле послать письма?
Вот у меня есть такая функция,
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_mail():
mailsender = smtplib.SMTP('smtp.gmail.com', 587)
mailsender.starttls()
mailsender.login('Адрес почты отправителя', 'Пароль к почте отправителя')
mail_recipient = 'Адрес почты получателя'
mail_subject = 'Тема сообщения'
mail_body = 'Текст сообщения'
msg = MIMEText(mail_body, 'plain', 'utf-8')
msg['Subject'] = Header(mail_subject, 'utf-8')
mailsender.sendmail('Адрес почты отправителя', mail_recipient, msg.as_string())
mailsender.quit()
print('Сообщение на адрес', mail_recipient, 'отправлено')
send_mail()
К примеру у меня есть цикл, где выводится в каждой новой строке, почтовые адреса, как мне послать сообщения этим адресатам? И сообщение тоже должно содержать переменные из другого цикла, надеюсь понятно объяснил. Как вариант пример:
mail_body = 'Скоро др у Вася 24.05 , Петя 10.10' вот ВасяПетя, и числа берутся из значений колонок таблиц. Ну и адреса кому отправить тоже берутся из значений таблиц.
Ответы (1 шт):
Автор решения: BlueScreen
→ Ссылка
Я видоизменил функцию send_mail, вынес вашу почту в отдельную переменную.
Теперь код выглядит так:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
mailsender = smtplib.SMTP('smtp.gmail.com', 587)
mailsender.starttls()
mailsender.login('Адрес почты отправителя', 'Пароль к почте отправителя')
mail_recipient = 'Адрес почты получателя'
your_email = 'Ваш em@il'
def send_mail(mail_subject, mail_body):
msg = MIMEText(mail_body, 'plain', 'utf-8')
msg['Subject'] = Header(mail_subject, 'utf-8')
mailsender.sendmail(your_email, mail_recipient, msg.as_string())
mailsender.quit()
print('Сообщение на адрес', mail_recipient, 'отправлено')
while True:
mail_subject = input() #Вместо этого можно сделать считывание с БД.
mail_body = input()
send_mail(mail_subject, mail_body)