Можно ли использовать вызов функции для отправки почты нескольким получателям по протоколу SMTP? - PullRequest
0 голосов
/ 23 марта 2020

Я пытался написать программу, которая принимает имена, почтовые идентификаторы, тему и сообщения в виде списка, а затем отправляет их соответствующим образом всем и каждому с персонализированной почтой. Я пробовал пару вещей до даты (например, цикл по smtp, а затем преобразование сообщений и всего в строку), но это не было визуально привлекательным и немного сложным, поэтому я переписал код, но использовал другой подход (показанный ниже). Почему я получаю ошибку? Также есть предложения / рекомендация к коду высоко ценится!

 import smtplib


user_email=input("Enter your email id:")
user_pwd=input("Enter your password:")

names_list=['abc','def']
mail_list=['abc@gmail.com','def@gmail.com']
subject_list=['Hi Where are you?','Hi how are your studies?']
messages_list=['Hi! where are you? been searching for you ,contact me asap','YOYOYOYOYOYOYOYOYOOOOO!!!']

def send_mail(mail,name,subject,message):
    try:
        server=smtplib.SMTP('smtp.google.com',587)
        server.ehlo()
        server.starttls()
        server.login(user_email,user_pwd)
        msg='Hi {}\nSubject:{}\n\n{}'.format(name,subject,message)
        server.sendmail(user_email,mail,msg)
        server.quit()
        print("Task Successfull!")
        print(msg)
    except:
        print("Unsuccessfull attempt :(")

for name,mail,subject,message in zip(names_list,mail_list,subject_list,messages_list):
    send_mail(mail,name,subject,message)
    msg1='{}\n{}\n{}\n{}'.format(name,mail,subject,message)
    print(msg1)

Вывод:

Enter your email id:arsaprsa@gmail.com
Enter your password:(hidden)
Unsuccessfull attempt :(
abc
abc@gmail.com
Hi Where are you?
Hi! where are you? been searching for you ,contact me asap
Unsuccessfull attempt :(
def
def@gmail.com
Hi how are your studies?
YOYOYOYOYOYOYOYOYOOOOO!!!

Я определил msg1 только для того, чтобы проверить, правильно ли подходит мой подход или нет, и провести перекрестную проверку. Это не имеет большого значения.

(Я включил менее безопасные приложения в Google на случай, если вам интересно)

Я знаю, что для отправки почты нескольким получателям достаточно сложно (например, использовать msg ["To"] и конвертировать) это в строку) но мне было интересно, есть ли способ выполнить эту задачу с помощью функций.

Спасибо за ваше время и помощь мне!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...