اگر میخواهید ایمیلهایی را در پایتون ارسال کنید، از یک راهحل مطمئن و مطمئن API ایمیل استفاده کنید. در این مقاله مراحل گام به گام ارسال ایمیل در پایتون با استفاده از روش API را خواهید آموخت.
راه اندازی Email API
برای سادهسازی ارسال ایمیل در پایتون، میتوانید از یک سرویس ایمیل تراکنشی مانند Mailtrap، Gmail API، Sendgrid و غیره استفاده کنید. همچنین یک API به شما امکان میدهد تا بیشتر ارسال ایمیل را خودکار کنید.
اکنون، من به شما نشان خواهم داد که چگونه انواع مختلف ایمیل (متن ساده، ایمیل با پیوست، ایمیل های HTML) و ایمیل برای چندین گیرنده را در پایتون با استفاده از یک ایمیل ارسال کنید. API ایمیل قبل از آن، بیایید نحوه تنظیم یک API ایمیل را درک کنیم:
- یک API ایمیل را انتخاب کنید: برای شروع، یک API ایمیل با توجه به تنظیمات برگزیده خود انتخاب کنید. مطمئن شوید که SDK های Python را برای ارسال ایمیل های خودکار (به عنوان مثال Mailtrap’s Python SDK) ارائه می دهد.
- ثبت نام کنید: در ارائه دهنده API ایمیل انتخابی ثبت نام کنید.
- دامنه خود را متصل و تأیید کنید: سپس، دامنه خود را با ارائهدهنده خدمات API ایمیلی که انتخاب کردهاید، متصل کرده و تأیید کنید. اگر تأیید نشد، میتوانید فقط به آدرس ایمیل مالک حساب ایمیل ارسال کنید.
این تضمین می کند که گیرندگان فقط ایمیل های واقعی را دریافت می کنند و از هرزنامه جلوگیری می کنند. بر اساس ارائه دهنده خدمات، احراز هویت دامنه را کامل کنید.
- کتابخانه API ایمیل را نصب کنید: بیایید API ایمیل خود را – “MyEmailAPI” صدا کنیم. مطمئن شوید که برنامه پایتون در سیستم شما نصب شده است و سپس MyEmailAPI Python SDK را با استفاده از دستور زیر نصب کنید:
pip install myemailapi
یک ایمیل با متن ساده ارسال کنید
مرحله 1: شی ایمیل خود را ایجاد کنید و متغیرها را پر کنید
1 |
import myemailapi |
2 |
|
3 |
# Create a mail object
|
4 |
|
5 |
mailobj = Mail( |
6 |
newsender= Address(email1=“testmail@domain.com”, name=“Test Sender”), |
7 |
to=(Address(email1=“reciever@example.com”, name=“Test Receiver”)), |
8 |
newsubject=“Test email”, |
9 |
newtext=“This is a plain-text email.”, |
10 |
)
|
اکنون، کلاینت ایمیل را با استفاده از توکن های API خود ایجاد کنید:
- باز کردن حساب API ایمیل شما
- یافتن نشانه های API و کپی کردن اعتبار
مرحله 2: پیام خود را ارسال کنید
# سرویس گیرنده API ایمیل را تعریف کنید و ایمیل ارسال کنید
1 |
emailclient = MyEmailAPIClient(newtoken=“new-api-key”) |
2 |
emailclient.send(mailobj) |
این قطعه کد کامل است:
1 |
from myemailapi import Mail, EAddress, MyEmailAPIClient |
2 |
mailobj = Mail( |
3 |
# Define sender address and name
|
4 |
newsender=Address(email1=“testmail@domain.com”, name=“Test Sender”), |
5 |
# Define receivers
|
6 |
to=(Address(email1=“receiver@example.com”, name=“Test Receiver”)), |
7 |
# Email subject
|
8 |
newsubject=“Test email”, |
9 |
# Define plain text
|
10 |
newtext=“Hi,/nThis is a plain-text email.”, |
11 |
)
|
12 |
|
13 |
# Define MyEmailAPIClient using your API keys
|
14 |
emailclient = MyEmailAPIClient(newtoken=“new-api-key”) |
15 |
|
16 |
# Send your plain-text email
|
17 |
emailclient.send(mailobj) |
18 |
|
19 |
print(“Congrats! You’ve successfully sent your first plain text email in Python.”) |
یک ایمیل HTML ارسال کنید
دستورالعمل ها را دنبال کنید یک ایمیل HTML ارسال کنید:
- پارامتر HTML را مشخص کنید: پارامتر ‘html’ را برای شی – “Mail” مشخص کنید. اینجا جایی است که شما محتوای HTML را که ایجاد می کنید نگه می دارید. کلاینتهای ایمیلی که میتوانند HTML را نمایش دهند، این بخش ایمیل را نمایش میدهند.
- محتوای متن بازگشتی: اگر یک سرویس گیرنده ایمیل نتواند محتوای HTML را ارائه دهد، متن ساده ای که در داخل ایمیل تعریف می کنید به عنوان نسخه بازگشتی استفاده می شود. این همچنین برای کاربران نهایی که ایمیل های مبتنی بر متن خالص را ترجیح می دهند مفید است.
در اینجا قطعه کد کامل برای ارسال ایمیل پایتون با محتوای HTML آمده است:
1 |
from myemailapi import Mail, EAddress, MyEmailAPIClient |
2 |
|
3 |
mailobj = Mail( # Create the Mail object for the HTML email |
4 |
# Define sender address and name
|
5 |
newsender=Address(emailaddress=“testmail@domain.com”, name=“Test Sender”), |
6 |
# Define receivers
|
7 |
to=(Address(emailaddress=“receiver@example.com”, name=“Test Receiver”)), |
8 |
# Define email subject
|
9 |
newsubject=“HTML email”, |
10 |
# Define text
|
11 |
newtext=“Hi,/nEmail client can’t render HTML? Use this fallback text.”, |
12 |
html_text=“”” |
13 |
<html> |
14 |
<head> |
15 |
<title>Titletitle> |
16 |
head> |
17 |
|
18 |
<body> |
19 |
<h1>Hi, there!h1> |
20 |
<p>This is text HTML content sent using MyEmailAPI.p> |
21 |
body> |
22 |
html> |
23 |
“””, |
24 |
)
|
25 |
|
26 |
# Define MyEmailAPIClient using your API keys
|
27 |
emailclient = MyEmailAPIClient(newtoken=“new-api-key”) |
28 |
|
29 |
# Send your HTML email
|
30 |
emailclient.send(mailobj) |
31 |
|
32 |
print(“Congrats! You’ve successfully sent your first HTML email.”) |
ارسال ایمیل به چندین گیرنده
دستورالعمل های زیر را دنبال کنید:
- پیکربندی چندین گیرنده: من بخش گیرنده را تغییر میدهم تا ایمیل برای گیرندگان بیشتر تنظیم شود. به جای استفاده از تنها یک آدرس ‘to’، از چندین آدرس استفاده می کنیم.
- تنظیم فیلد “به”: در کد زیر، دو آدرس گیرنده برای فیلد “To” تعریف می کنیم- گیرنده[email protected] و گیرنده[email protected]. علاوه بر این، ما نام هایی را برای هر گیرنده تعریف خواهیم کرد – گیرنده تست 1 و گیرنده تست 2.
در اینجا کد کامل برای ارسال ایمیل به چندین گیرنده در پایتون آمده است:
1 |
from myemailapi import Mail, EAddress, MyEmailAPIClient |
2 |
|
3 |
# Create the Mail object for multiple recipients
|
4 |
mailobj = Mail( |
5 |
# Define sender address and name
|
6 |
newsender=Address(emailaddress=“testmail@domain.com”, name=“Test Sender”), |
7 |
# Define receivers
|
8 |
to=( |
9 |
Address(emailaddress=“receiver1@example.com”, name=“Test Receiver 1”)), |
10 |
Address(emailaddress=“receiver2@example.com”, name=“Test Receiver 2”)), |
11 |
),
|
12 |
# Define email subject
|
13 |
newsubject=“ This is email subject”, |
14 |
# Define text
|
15 |
newtext=“Hello, /nThis email has multiple recipients.”, |
16 |
)
|
17 |
|
18 |
# Define MyEmailAPIClient using your API keys
|
19 |
emailclient = MyEmailAPIClient(newtoken=“new-api-key”) |
20 |
|
21 |
# Send email
|
22 |
emailclient.send(mailobj) |
23 |
|
24 |
print(“Congrats! You’ve successfully sent emails to multiple recipients in Python.”) |
ارسال ایمیل با پیوست
دستورالعمل های زیر را دنبال کنید:
- مسیر فایل را مشخص کنید: ابتدا مسیر فایل پیوست ها را مشخص کنید. کد محتوای فایل را به صورت بایت می خواند تا مطمئن شود هر پیوست دارای رمزگذاری مناسب است. به این ترتیب، پیوست ها به طور ایمن از طریق شبکه منتقل می شوند.
- کدگذاری در Base64: اطمینان حاصل کنید که محتوای فایل را در base64 رمزگذاری کنید تا از آن در برابر عوامل مخرب محافظت کنید زیرا پروتکل های ایمیل فاقد ویژگی های باینری ایمن هستند. هنگامی که محتوای فایل خود را رمزگذاری می کنید، داده های باینری برای انتقال ایمن به متن تبدیل می شوند. برای رمزگذاری محتوای فایل از روش زیر استفاده کنید:
base64.b64encode
- فایل پیوست را ایجاد کنید: نمونه کلاس Attachment را با پارامترهای زیر ایجاد کنید:
- disposition_new: برای نشان دادن فایل بهعنوان پیوست، «disposition_new» روی «Disposition.ATTACHMENT» تنظیم میشود.
- content_new: این نشان دهنده محتوای فایل کدگذاری شده در base64 است
- mimetype_new: این پارامتر به مشتریان ایمیل در مورد نوع فایل سیگنال می دهد.
این هم کد کامل:
1 |
from myemailapi import Mail, EAddress, MyEmailAPIClient Attachment, Disposition |
2 |
import base64 |
3 |
from pathlib import Path |
4 |
|
5 |
# Define files to attach
|
6 |
filepath = Path(“thisis/your/filepath/abc.pdf”) # Insert your file’s name |
7 |
filecontent = filepath.read_bytes() |
8 |
|
9 |
# Base64 is used to encode the content of the file
|
10 |
encodedcontent = base64.b64encode(filecontent) |
11 |
|
12 |
# Specify the email object with an attachment
|
13 |
mailobj = Mail( |
14 |
# Define sender address and name
|
15 |
newsender=Address(emailaddress=“testmail@domain.com”, name=“Test Sender”), |
16 |
# Define receiver
|
17 |
to=(Address(emailaddress=“receiver@example.com”, name=“Test Receiver”)), |
18 |
# Define email subject
|
19 |
newsubject=“ Attachment inside!”, |
20 |
# Define text
|
21 |
newtext=“Hello, /nThis email has an important attachment.”, |
22 |
# Define email attachment
|
23 |
attachments_new=( |
24 |
Attachment( |
25 |
content_new=encodedcontent, |
26 |
filename_new=filepath.name, # The file name |
27 |
disposition_new=Disposition.ATTACHMENT, |
28 |
mimetype_new= “application/pdf”, # The file type used here is PDF |
29 |
)
|
30 |
),
|
31 |
)
|
32 |
|
33 |
# Define MyEmailAPIClient using your API keys
|
34 |
emailclient = MyEmailAPIClient(newtoken=“new-api-key”) |
35 |
|
36 |
# Send email
|
37 |
emailclient.send(mailobj) |
38 |
|
39 |
print(“Congrats! You’ve successfully sent emails with an attachment.”) |
تست ایمیل قبل از ارسال
قبل از ارسال ایمیل های انبوه با استفاده از سرویس API ایمیل، مطمئن شوید که از قبل آن را روی یک سرور آزمایشی تست کرده اید. این شبیه به آزمایش یک برنامه جدید یا ارائه یک ویژگی جدید در برنامه شما است.
یک API تست ایمیل مانند یک وب سرور شخص ثالث کار خواهد کرد. شما یک محیط مرحلهبندی امن دریافت خواهید کرد که در آن میتوانید ترافیک ایمیل خود را به صورت داخلی مدیریت کنید و بررسی کنید که آیا عملکرد ارسال ایمیل به خوبی کار میکند یا خیر. همچنین می توانید قبل از ارسال ایمیل های خود به گیرندگان هدف، باگ ها و خطاها را شناسایی و برطرف کنید. علاوه بر این، می توانید محتوای ایمیل خود را در دستگاه های مختلف و کلاینت های ایمیل به منظور بهینه سازی پیام خود پیش نمایش و ارزیابی کنید.
در نتیجه، شما قادر خواهید بود:
- ارسال ایمیل به گیرندگان مناسب و افزایش قابلیت تحویل ایمیل
- از ارسال هرزنامه دریافت کنندگان با ایمیل های آزمایشی بیش از حد خودداری کنید
- از ارسال ایمیل با لینک های شکسته، به ویژه در ایمیل های تراکنشی مانند ایمیل های تایید اشتراک، جلوگیری کنید
- با جلوگیری از قرار گرفتن در لیست سیاه دامنه یا دریافت امتیازات هرزنامه بالاتر از اعتبار دامنه خود محافظت کنید
بنابراین، قبل از اینکه ایمیل های خود را ارسال کنید، آنها را با استفاده از یک API تست ایمیل به یک آدرس ایمیل تعیین شده ارسال کنید. محتوای ایمیل را مشاهده کنید، لینک ها را بررسی کنید، مشکلات را برطرف کنید و سپس ایمیل های خود را فقط برای مخاطبان هدف ارسال کنید.
در بخش زیر، به شما نشان خواهم داد که چگونه یک ایمیل را با استفاده از یک API تست ایمیل فرضی – ‘EtestAPI’ آزمایش کنید. در اینجا نحوه شروع مرحله به مرحله آورده شده است:
- به مشتری EtestAPI متصل شوید
- محتوای ایمیل را تعریف کنید – موضوع، متن، پیوست (در صورت وجود)، فرستنده و گیرنده (ها)
- با استفاده از داده ها و رمز API خود، یک درخواست POST برای EtestAPI ایجاد کنید.
در اینجا کد کامل برای آزمایش ایمیل خود با استفاده از EtestAPI آمده است:
1 |
# Import ‘json’ and ‘requests’ libraries for handling JSON data and HTTP requests
|
2 |
import requests |
3 |
import json |
4 |
|
5 |
# Define a function ‘test_my_email’ with parameters for email testing
|
6 |
def test_my_email(etestapi_token1, inbox_id1, sender_email1, recipient_email1, subject, text): |
7 |
url = f"https://api.etestapi.com/v1/inboxes/{inbox_id1}/messages" |
8 |
headers = { |
9 |
"Authorization": f"Bearer {etestapi_token1}", |
10 |
"Content-Type": "application/json", |
11 |
}
|
12 |
|
13 |
data = { |
14 |
"from": ({“sender_email1”: “sender@domain.com”, “name”: “Test Sender”}), |
15 |
"to": ({“recipient_email1”: “receiver@example.com”, “name”: “Test Receiver”}), |
16 |
"subject": “Email Test”, |
17 |
"text": “Hi,/nLet’s perform email testing”, |
18 |
}
|
19 |
|
20 |
|
21 |
# Convert data to a JSON string
|
22 |
json_data = json.dumps(data) |
23 |
|
24 |
# make a POST request using ‘requests.post’ to send your email to EtestAPI and get the response in JSON
|
25 |
response = requests.post(url, headers=headers, json_data) |
26 |
|
27 |
if response.status_code == 200: |
28 |
print("Congrats! Your email test is successful!") |
29 |
print("The test email is sent to EtestAPI inbox.") |
30 |
else: |
31 |
print(f"Test email failed: {response.status_code}") |
32 |
print(response.text) |
توضیح:
- ‘url’: URL نقطه پایانی API ساخته شده است
- “سرصفحه”: هدرها تنظیم می شوند که نوع محتوا و توکن API را مشخص می کنند
- answer.status.code: به شما کمک می کند بررسی کنید که آیا ایمیل شما با موفقیت به API تست ایمیل ارسال شده است یا خیر.
جمع بندی
استفاده از یک راه حل مطمئن و ایمن API ایمیل به شما امکان می دهد ایمیل ها را سریعتر و بدون دردسر ارسال کنید. اگر کسبوکاری دارید، یک API ایمیل به شما کمک میکند فرآیند را خودکار کنید. بنابراین، همانطور که در بالا ذکر کردیم، می توانید ایمیل های بسیار شخصی و انبوه را به سرعت با چند خط کد ارسال کنید.
همچنین توصیه می کنیم به مستندات پایتون و راه حل API ایمیلی که ترجیح می دهید مراجعه کنید. به آزمایش کدهای جدید و کاوش در عملکردهای ارسال ایمیل ادامه دهید.
منبع: https://code.tutsplus.com/python-send-email-api–cms-108845t