همه ما ایمیل‌های تبلیغاتی را از شرکت‌هایی مانند Swiggy و Amazon دریافت می‌کنیم که ما را تشویق می‌کنند تا غذای جدید یا فروش‌های فلش آنها را بررسی کنیم.

آیا تا به حال فکر کرده اید که چگونه آنها می توانند برای میلیون ها مشتری ایمیل ارسال کنند؟ انجام آن به صورت دستی غیرممکن است! در عوض، آنها از سیستم‌های ایمیل خودکار برای مدیریت و زمان‌بندی کارآمد ایمیل‌های خود استفاده می‌کنند.

بهترین بخش این است که می توانید آن را به سرعت با بسته های منبع باز Python بسازید. فرض کنید شما یک دانشجو یا یک حرفه ای هستید که به دنبال شغل جدید هستید. ارسال دستی رزومه و نامه حمایتی به چندین استخدام‌کننده می‌تواند زمان‌بر و اغلب مستعد اشتباه باشد.

در این مقاله، نحوه خودکارسازی ارسال برنامه های شغلی با استفاده از کتابخانه پایتون را به صورت گام به گام با کد نشان خواهم داد.

پیش نیازها

قبل از اینکه به فرآیند خودکارسازی سیستم‌های ایمیل با پایتون بپردازیم، مطمئن شوید که دانش اولیه از مفاهیم عمومی پایتون دارید.

اگر در پایتون تازه کار هستید، می‌توانید دوره مقدماتی پایتون در مورد مهارت هایپراسکل را بررسی کنید، جایی که من به عنوان یک متخصص در آن مشارکت می‌کنم.

مرحله 1: اتصال به سرور ایمیل خود را تنظیم کنید

Smtplib یک بسته داخلی پایتون است. استفاده از آن رایگان است و به شما امکان می دهد از طریق هر سرویسی مانند جیمیل، یاهو و غیره ایمیل ارسال کنید. من در این مثال از جیمیل استفاده خواهم کرد.

شماره پورت به سروری که انتخاب می کنید بستگی دارد. ما می توانیم اتصال را با استفاده از بسته شروع کنیم 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() یا روش سلام گسترده. همچنین اطمینان از ایمن بودن اتصال شما و عدم نشت اطلاعات بسیار مهم است.

ما می توانیم با استفاده از رمزگذاری برای اتصال فعال کنیم امنیت لایه حمل و نقل (TLS) با تماس با starttls() روش. پس از این، می توانید از متد login() با اعتبار ایمیل و رمز عبور خود استفاده کنید.

مرحله 2: انواع مختلف محتوا را با استفاده از MIME اضافه کنید

اتصال شما آماده است! اما قبل از اینکه نحوه ارسال ایمیل به لیستی از افراد را ببینیم، بسیار مهم است که بدانیم چگونه انواع مختلف محتوا را به ایمیل خود پیوست کنیم.

پیشنهاد می‌کنیم بخوانید:  استفاده از کتابخانه Plotly برای تجسم داده های تعاملی در پایتون

اگر ایمیل شما یک پیام متنی باشد، می توانید ایمیل خود را مستقیماً به سرور SMTP خود ارسال کنید. اما اگر بخواهید پیوندی به پروفایل لینکدین خود یا PDF کارت نمره یا رزومه خود اضافه کنید، چه؟

MIMEMultipart را وارد کنید. MIME مخفف برنامه های افزودنی ایمیل چند منظوره اینترنتی. به آن Multipart نیز می‌گویند که از زبان‌های متن ساده و HTML پشتیبانی می‌کند. استفاده از HTML برای افزودن محتوای خود باعث انعطاف پذیری در قالب بندی و پیوست کردن تصاویر می شود.

این MIMEMultipart ماژول یک کلاس برای ایجاد اسناد MIME ارائه می دهد که یک پیام چند بخشی را نشان می دهد. این می تواند شامل متن، تصاویر و پیوست ها باشد.

بیایید a ایجاد کنیم MIMEMultipart شی به نام پیام، همانطور که در زیر نشان داده شده است. ما از نوع فرعی جایگزین استفاده می کنیم که شامل متن ساده و نسخه های 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، داده های باینری آن را بخوانید و آن را به عنوان بخشی از برنامه MIMEA به شی پیام متصل کنید. همچنین هدر 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= “””
سلام {recruiter_name}، امیدوارم که حالت خوب باشد. من جین دو هستم، فارغ التحصیل مهندسی با Mtech در علوم کامپیوتر و تخصص در هوش مصنوعی.

من برای پرس و جو در مورد نقش های باز می نویسم {نقش کار} در {سازمان}. من تجربه انجام تجزیه و تحلیل داده ها و مدل سازی را از طریق کارآموزی و پروژه های تحقیقاتی خود دارم. من هیجان زده هستم که فرصتی برای به کار بردن مهارت هایم و یادگیری بیشتر در این زمینه دارم {سازمان_بخش}.

کارت نمره و رزومه خود را در زیر پیوست کرده ام. انتظار دارم که از خودت بشنوم.

با تشکر،
…… “””

حالا قسمت پایانی می رسد. همانطور که در قطعه زیر نشان داده شده است، فایل 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 (لایه سوکت های امن) ایجاد کنید. این یک جایگزین برای TLS است که ما برای ارائه رمزگذاری در یک اتصال ناامن استفاده کرده ایم.
  • می‌توانید چندین پیام ایمیل شخصی‌سازی شده برای بخش‌های مختلف شغلی ایجاد کنید و از مناسب‌ترین آن‌ها با استفاده از تطبیق سوئیچ استفاده کنید.

با تشکر از شما برای خواندن! من جس هستم و در Hyperskill متخصص هستم. شما می توانید بررسی کنید مقدمه ای بر پایتون دوره روی پلت فرم