DevGang
Авторизоваться

Автоматизация с помощью Python - как создать автоматизированную систему электронной почты для подачи заявлений о приеме на работу

Все мы получаем рекламные письма от таких компаний, как Swiggy и Amazon, которые предлагают нам ознакомиться с их новыми блюдами или воспользоваться внезапными распродажами.

Вы когда-нибудь задумывались, как им удается отправлять электронные письма миллионам клиентов? Это невозможно сделать вручную! Вместо этого они используют автоматизированные системы электронной почты, чтобы эффективно контролировать и планировать свои письма.

Самое приятное, что такую систему можно быстро создать с помощью пакетов Python с открытым исходным кодом. Предположим, вы студент или работающий специалист, который ищет новую работу. Ручная рассылка резюме и сопроводительного письма нескольким рекрутерам может занять много времени и часто чревата ошибками.

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

Предварительные условия

Прежде чем мы погрузимся в процесс автоматизации почтовых систем с помощью Python, убедитесь, что у вас есть базовые рабочие знания общих концепций Python.

Если вы новичок в Python, вы можете ознакомиться с курсом "Введение в Python" на Hyperskill, где я выступаю в качестве эксперта.

Шаг 1: Настройка подключения к серверу электронной почты

Smtplib - это встроенный пакет Python. Он бесплатный и позволяет отправлять электронные письма через любые сервисы, такие как Gmail, Yahoo и так далее. В этом примере я буду использовать Gmail.

Номер порта зависит от того, какой сервер вы выберете. Мы можем начать соединение с помощью класса smtplib.SMTP пакета, указав в качестве входных параметров сервер и порт. SMTP расшифровывается как Simple Mail Transfer Protocol (Простой протокол передачи почты).

 import smtplib 
   
    my_email=’jess_xxx@gmail.com’
    password_key=’xxxxx’
    
    # SMTP Server and port no for GMAIL.com
    gmail_server= "smtp.gmail.com"
    gmail_port= 587


    # Starting connection
    my_server = smtplib.SMTP(gmail_server, gmail_port)
    my_server.ehlo()
    my_server.starttls()
      
    # Login with your email and password
    my_server.login(my_email, password_key)

Далее, чтобы идентифицировать клиента с сервером, мы вызываем метод ehlo() или расширенное приветствие. Также очень важно обеспечить безопасность соединения и исключить утечку информации.

Мы можем включить шифрование соединения с помощью Transport Layer Security (TLS), вызвав метод starttls(). После этого можно использовать метод login(), указав данные электронной почты и пароля.

Шаг 2: Добавление различных типов содержимого с помощью MIME

Ваше соединение создано! Но прежде чем мы рассмотрим, как отправлять электронные письма списку людей, необходимо понять, как прикреплять к письму различные типы содержимого.

Вы можете отправить письмо непосредственно на SMTP-сервер, если речь идет о текстовом сообщении. Но что делать, если вы хотите добавить ссылку на свой профиль LinkedIn или PDF-файл вашего аттестата или резюме?

Введите команду MIMEMultipart. Аббревиатура MIME расшифровывается как Multipurpose Internet Mail Extensions (Многоцелевые расширения Интернет-почты). Он также называется Multipart и поддерживает языки обычного текста и HTML. Использование HTML для добавления содержимого обеспечивает гибкость в форматировании и прикреплении изображений.

Модуль MIMEMultipart предоставляет класс для создания MIME-документов, представляющих многокомпонентное сообщение. Они могут включать текст, изображения и вложения..

Давайте создадим объект MIMEMultipart с именем message, как показано ниже. Мы используем подтип alternative, который включает в себя обычную текстовую и HTML-версию сообщения.

from email.mime.multipart import MIMEMultipart
message = MIMEMultipart("alternative")

Как добавить текстовое содержимое?

Модуль MIMEText предоставляет класс для создания MIME-документов, представляющих обычный текст в электронном сообщении.

from email.mime.text import MIMEText


text_content= “ Hello, I am a final year student with an Mtech degree in Computer science specializing in Artificial Intelligence. I’m interested in data science roles at your organization.”


message.attach(MIMEText(text))

Как добавить изображения в электронное письмо?

Модуль MIMEImage предоставляет класс для создания MIME-документов, представляющих данные изображения в электронном сообщении.

Импортируйте модуль MIMEImage и укажите путь, по которому находится файл изображения. Здесь мы считываем его двоичные данные и присоединяем к объекту сообщения как часть MIMEImage.

from email.mime.image import MIMEImage
import os


# define your location
grade_card_path = 'path/to/your/grade_card.jpg'


# Read the image from location
grade_card_img = open(grade_card, 'rb').read()


# Attach your image
message.attach(MIMEImage(grade_card_img, name=os.path.basename(grade_card_path)))

Как прикреплять файлы к электронному письму?

Модуль MIMEApplication предоставляет класс для создания MIME-документов, представляющих произвольные двоичные данные в электронном сообщении. Он часто используется для прикрепления файлов.

Сначала определите путь к файлу вложения (resume_file), прочитайте его двоичные данные и присоедините его к объекту сообщения как часть MIMEApplication. При этом в заголовке Content-Disposition указывается имя файла.

resume_file = '...../resume.txt'


# Read the file from location
with open(resume_file, 'rb') as f:
    file = MIMEApplication(
        f.read(),
        name=os.path.basename(resume_file)
    )
    file['Content-Disposition'] = f'attachment; 


    filename="{os.path.basename(resume_file)}"'
    message.attach(file)

При прикреплении файлов заменяйте пути, указанные в поле ввода, на реальные. С помощью этой функции можно также прикрепить список файлов.

Шаг 3: Отправка нескольких настраиваемых писем

Надеюсь, вы уже знакомы с тем, как добавлять различные типы контента в электронные письма. Давайте приступим к реализации нашего проекта: автоматизации персональных писем рекрутерам.

При создании системы автоматизации важно настроить ее в соответствии с конкретными потребностями. Например, если вы рекрутер, вы предпочтете письмо, составленное с учетом особенностей вашей компании и вас, а не письмо, в котором к вам обращаются просто как "сэр/мадам".

Для этого в текстовом сообщении нужно создать персонализированные поля, в которые будут вводиться параметры.

Создайте CSV-файл с информацией, которую вы хотите персонализировать, в разных колонках. Например, я создал CSV с именем рекрутера, электронной почтой рекрутера, названием организации и ролью в вакансии.

Сохраните CSV-файл под именем job_contacts.csv. Убедитесь, что значения разделены запятой и что нет пробелов, чтобы избежать проблем с форматированием. Оформите текстовое сообщение, добавив в него персонализированное содержимое с помощью функции str.format(). Вы можете использовать фигурные скобки для частей, которые хотите настроить.

Посмотрите на мой пример:

text_content= """
Hello {recruiter_name}, I hope you are doing well. I’m Jane Doe, an engineering graduate with an Mtech in Computer Science and a specialization in Artificial Intelligence.

I am writing to inquire regarding open roles in {job_role} at {organization}. I have experience performing data analysis and modeling through my internships and research projects. I’m excited to have an opportunity to apply my skills and learn more in the {organization_sector}.

I have attached my grade card and résumé below. Looking forward to hearing from you.

Thanks,
…… """

Теперь наступает заключительная часть. Мы считываем CSV-файл и перебираем каждую строку, как показано в приведенном ниже фрагменте. Новые данные о работе считываются и заменяются на каждом шаге сообщения, после чего рекрутеру отправляется электронное письмо.

import csv


with open("job_contacts.csv") as csv_file:
        jobs = csv.reader(csv_file)
        next(jobs)  # Skip header row
        
        for recruiter_name, recruiter_email, organization, 
        organization_sector,job_role in jobs:
            
            email_text=text_content.format(recruiter_name, recruiter_email
            Organziation, organization_sector, job_role)
            
            # Attaching the personalized text to our message
            message.attach(MIMEText(email_text))
            
            my_server.sendmail(
                from_addr= my_email,
                to_addrs=recruiter_email,
                msg=message
            )




my_server.quit()

Наконец, мы используем функцию SMTP sendmail() с адресами электронной почты "от кого" и "кому" и сообщениями в качестве входных данных. Не забудьте выйти из сервера по завершении процесса.

Советы и лучшие методы

Надеюсь, вам понравился этот проект. Вы можете использовать этот шаблон для создания автоматизированной системы электронной почты для различных целей, таких как маркетинговые кампании, продвижение вашей рассылки и многое другое.

Вот несколько рекомендаций, которые следует запомнить:

  • Не стоит хранить пароль электронной почты в коде. Вместо этого запросите его через ввод или сохраните в переменной окружения.
  • Вы можете создать защищенное SMTP-соединение с помощью SSL (Secure Sockets Layer). Это альтернатива TLS, которую мы использовали для обеспечения шифрования на небезопасном соединении.
  • Вы можете создать несколько персонализированных электронных сообщений для разных сфер занятости и использовать наиболее подходящее из них с помощью переключения регистров.

Спасибо, что прочитали! Счастливого Вам кодинга!

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу