В този урок ще споделя скрипта, който използвам за изпращане на имейли до потребителите на приложенията, които създавам и други.
Какво ще правим?
Ще създадем проста програма на Python, която ще направи следното:
- Използвайте файла на шаблона, който създаваме за дизайн на имейл. Това просто ще бъде текстово базиран файл със стойности на заместители.
- Вземете името и имейла на лицето от друг текстов файл, който правим.
Тези точки правят тази програма много по-близка до реалното използване на изпращането на имейли във вашите приложения. Да започваме.
Файл за имейли
Файлът, който съдържа имейлите за потребителите, ще изглежда така:
Shubham shubham.код @ gmail.comТова е само прост текстов файл, който съдържа име на потребител и имейл, разделени с интервал. Множество имейли са поставени с нови данни на всеки потребител в нов ред. Наименувахме този файл потребители.текст.
Използване на шаблона
Нека бързо дефинираме и шаблона, който ще използваме в нашия скрипт за замяна на стойности:
Здравейте, $ PERSON_NAME,Изпратихме този имейл с помощта на модула Python smtplib. Готино, нали?
Предстои ви светъл ден!
Наздраве
Използвали сме низ от шаблон $ PERSON_NAME което ще бъде заменено с името на лицето, което получаваме от потребителите.txt файл, докато изпращате имейла.
Получаване на потребителски данни от файл
Първата стъпка за изпращане на имейл до потребител е да идентифицираме това, до което искаме да изпратим имейлите. Нека напишем функция Python, която ще приеме име на файл и ще ни върне потребителско име и имейл идентификатори, където имейлите трябва да бъдат изпратени:
def get_users_data (име_на_файл):потребителско име = []
user_email = []
с отворен (file_name, mode = 'r', encoding = 'utf-8') като user_file:
за user_info в user_file:
потребителско име.добавяне (user_info.split () [0])
потребителска_имейл.добавяне (user_info.split () [1])
връщане на потребителско име, потребителско имейл
С тази функция ние просто връщаме имената и имейлите на потребителите, които получаваме от файла.
Получаване на обекта на шаблона
Сега можем да анализираме нашия шаблон и да получим обект на шаблон от текстовия файл, който направихме:
def read_template (име_на_файл):с отворен (име_на_файл, 'r', encoding = 'utf-8') като msg_template:
msg_template_content = msg_template.Прочети()
връщане на шаблон (msg_template_content)
С това ще получим обратно обект на шаблон, който можем да използваме, за да анализираме съдържанието на файла и да направим необходимите заместители за низовете на шаблона като име на потребител.
Как се извършва изпращането на имейли?
Сега, когато сме готови с дизайна на шаблона и данните на потребителя, трябва да разберем как всъщност се изпраща имейл до потребителя:
- Създайте SMTP връзка с идентификационни данни за вход за акаунта на подателя
- Създайте заглавка от няколко части с информация с полета От, До и Тема
- Създайте тялото на съобщението, което трябва да бъде изпратено
- Изпратете имейла с SMTP обект за връзка
Настройване на SMTP връзка
Нека най-накрая дефинираме функцията, която ще изпраща имейла до посочените потребители. Ето функцията:
def main ():user_name, user_email = get_users_data ('потребители.txt ') # прочетете потребителски подробности
message_template = read_template ('съобщение.текст')
# настройте SMTP сървъра
smtplib_server = smtplib.SMTP (хост = 'smtp.gmail.com ', порт = 587)
smtplib_server.starttls ()
smtplib_server.вход (SEND_FROM, EMAIL_PWD)
# Вземете всеки потребителски детайл и изпратете имейла:
за име, имейл в zip (потребителско име, потребителско имейл):
multipart_message = MIMEMultipart () # създаване на съобщение
# добавете действителното име на човек към шаблона на съобщението
msg = шаблон_съобщение.заместител (PERSON_NAME = име.заглавие())
# Разпечатва тялото на съобщението заради нас
печат (съобщение)
# настройка на параметрите на съобщението
multipart_message ['From'] = SEND_FROM
multipart_message ['До'] = имейл
multipart_message ['Subject'] = "LinuxHint Email"
# добавяне в тялото на съобщението
multipart_message.прикачване (MIMEText (msg, 'plain'))
# изпратете съобщението чрез сървъра, настроен по-рано.
smtplib_server.send_message (multipart_message)
del multipart_message
# Прекратете SMTP сесията и затворете връзката
smtplib_server.изход ()
В горната функция изпълнихме всяка стъпка, която посочихме в предишния раздел. Изградихме SMTP връзката и я използвахме за изпращане на имейла.
Пълна програма
В последния раздел нека да разгледаме пълната програма, която може да се използва за изпращане на имейла до определен потребител:
внос smtplibот шаблон за импортиране на низове
от имейл.мим.многочастично импортиране MIMEMultipart
от имейл.мим.импортиране на текст MIMEText
SEND_FROM = 'my-email-here'
EMAIL_PWD = 'моята-парола-тук'
def get_users_data (име_на_файл):
потребителско име = []
user_email = []
с отворен (file_name, mode = 'r', encoding = 'utf-8') като user_file:
за user_info в user_file:
потребителско име.добавяне (user_info.split () [0])
потребителска_имейл.добавяне (user_info.split () [1])
връщане на потребителско име, потребителско имейл
def read_template (име_на_файл):
с отворен (име_на_файл, 'r', encoding = 'utf-8') като msg_template:
msg_template_content = msg_template.Прочети()
връщане на шаблон (msg_template_content)
def main ():
user_name, user_email = get_users_data ('потребители.txt ') # прочетете потребителски подробности
message_template = read_template ('съобщение.текст')
# настройте SMTP сървъра
smtplib_server = smtplib.SMTP (хост = 'smtp.gmail.com ', порт = 587)
smtplib_server.starttls ()
smtplib_server.вход (SEND_FROM, EMAIL_PWD)
# Вземете всеки потребителски детайл и изпратете имейла:
за име, имейл в zip (потребителско име, потребителско имейл):
multipart_message = MIMEMultipart () # създаване на съобщение
# добавете действителното име на човек към шаблона на съобщението
msg = шаблон_съобщение.заместител (PERSON_NAME = име.заглавие())
# Разпечатва тялото на съобщението заради нас
печат (съобщение)
# настройка на параметрите на съобщението
multipart_message ['From'] = SEND_FROM
multipart_message ['До'] = имейл
multipart_message ['Subject'] = "LinuxHint Email"
# добавяне в тялото на съобщението
multipart_message.прикачване (MIMEText (msg, 'plain'))
# изпратете съобщението чрез сървъра, настроен по-рано.
smtplib_server.send_message (multipart_message)
del multipart_message
# Прекратете SMTP сесията и затворете връзката
smtplib_server.изход ()
ако __name__ == '__main__':
главен ()
Когато стартираме тази програма с идентификатор на Gmail, може да се сблъскате с проблем като този:
Gmail SMTP грешка
Това е така, защото Gmail не позволява обикновените скриптове да използват API на Gmail. За това може да се наложи да деактивирате защитата за вход в акаунта си в Gmail. Прочетете за това как да направите това за Gmail тук.
Заключение
В този урок разгледахме как можем да изпращаме имейли, използвайки Python smtplib модул.