Python

Изпращане на имейл в Python

Изпращане на имейл в Python
Изпращането на имейл е една от най-често срещаните задачи, които трябва да правя в уеб приложенията и други проекти, които създавам. С Python това е доста лесно и лесно. Дори когато трябва да използваме някои предварително дефинирани шаблони, Python ни помага да заменим стойностите на заместители с действителни данни, така че крайният имейл да изглежда елегантен и изпълнен с подробности, което прави клиента ми щастлив.

В този урок ще споделя скрипта, който използвам за изпращане на имейли до потребителите на приложенията, които създавам и други.

Какво ще правим?

Ще създадем проста програма на 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 връзка

Нека най-накрая дефинираме функцията, която ще изпраща имейла до посочените потребители. Ето функцията:

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 модул.

Битка за Уеснот 1.13.6 Разработка освободена
Битка за Уеснот 1.13.6, издаден миналия месец, е шестата версия за разработка в 1.13.x серия и предоставя редица подобрения, най-вече на потребителски...
Как да инсталирате League Of Legends на Ubuntu 14.04
Ако сте фен на League of Legends, това е възможност за вас да тествате League of Legends. Имайте предвид, че LOL се поддържа на PlayOnLinux, ако сте п...
Инсталирайте най-новата стратегия за игра OpenRA на Ubuntu Linux
OpenRA е Libre / Free Real Time стратегия за игра, която пресъздава ранните игри на Westwood като класическата Command & Conquer: Red Alert. Разпредел...