Amazon SES viết tắt của Amazon Simple Email Service. Đây là một dịch vụ gửi email có chi phí thấp và có khả năng mở rộng, cho phép các nhà phát triển gửi email từ bất kỳ ứng dụng nào. Amazon SES có thể được cấu hình nhanh chóng để hỗ trợ nhiều mục đích sử dụng email khác nhau, như gửi email giao dịch, tiếp thị hoặc gửi email hàng loạt. Amazon SES cho phép chúng ta gửi email một cách an toàn, toàn cầu và trên quy mô lớn.
Boto3 SDK là một thư viện Python dành cho AWS. Để cài đặt phiên bản mới nhất của Boto3 SDK, chúng ta sử dụng câu lệnh sau đây:
pip install boto3code-box
Thiết lập identity trên Amazon SES
Gửi email đơn giản, không có đính kèm
Để gửi một email đơn giản, không cần đính kèm tập tin thì chúng ta có thể sử dụng hàm send_email được cung cấp trong thư viện Boto3.
# Import thư viện boto3 | |
import boto3 | |
# Khởi tạo client | |
client = boto3.client('ses') | |
# Nếu bạn viết hàm Lambda trên AWS, có thể thiết lập region bằng câu lệnh sau: | |
# Thay ap-southeast-1 bằng region của bạn | |
# client = boto3.client('ses', region_name='ap-southeast-1') | |
# Thiết lập thông số: | |
CHARSET = 'UTF-8' | |
SENDER = 'sender@domain.com' | |
# Gửi email đơn giản bằng hàm send_email | |
response = client.send_email( | |
Source=SENDER, | |
Destination={ | |
'ToAddresses': ['receiver@domain.com', 'receiver2@domain.com'], | |
'CcAddresses': ['ccreceiver@domain.com'], | |
'BccAddresses': ['bccreceiver@domain'] | |
}, | |
Message={ | |
'Subject': { | |
'Data': 'Đây là một email ví dụ', | |
'Charset': CHARSET | |
}, | |
'Body': { | |
'Html': { | |
'Data': '<html><body><h1>Xin chào bạn</h1><p>Đây là một email ví dụ gửi email bằng Python và Boto3.</p></body></html>', | |
'Charset': CHARSET | |
} | |
} | |
}, | |
) |
Gửi Raw Email có đính kèm
Để gửi email mà có đính kèm một hoặc nhiều tài liệu thì chúng ta có thể sử dụng hàm send_raw_email được cung cấp trong thư viện Boto3.
# Import thư viện boto3 | |
import boto3 | |
import os | |
# Import thư viện gửi raw email | |
from email.mime.multipart import MIMEMultipart | |
from email.mime.text import MIMEText | |
from email.mime.application import MIMEApplication | |
# Khởi tạo client | |
client = boto3.client('ses') | |
# Nếu bạn viết hàm Lambda trên AWS, có thể thiết lập region bằng câu lệnh sau: | |
# Thay ap-southeast-1 bằng region của bạn | |
# client = boto3.client('ses', region_name='ap-southeast-1') | |
SENDER = 'sender@domain.com' | |
RECEIVER = 'receiver@domain.com' | |
CHARSET = 'UTF-8' | |
# Khai báo message | |
msg = MIMEMultipart('mixed') | |
msg['Subject'] = 'Đây là một email ví dụ với tập tin đính kèm' | |
msg['From'] = SENDER | |
msg['To'] = RECEIVER | |
msg_body = MIMEMultipart('alternative') | |
# Nội dung email với ngôn ngữ HTML | |
BODY_HTML = '<html><body><h1>Xin chào bạn</h1><p>Đây là một email ví dụ gửi email bằng Python và Boto3 (có tập tin đính kèm).</p></body></html>' | |
htmlpart = MIMEText(BODY_HTML.encode(CHARSET), 'html', CHARSET) | |
msg_body.attach(htmlpart) | |
# Đường dẫn đến tập tin cần đính kèm. | |
FILE1 = "path/to/file1.pdf" | |
FILE2 = "path/to/file2.pdf" | |
# Thêm đính kèm vào email | |
att1 = MIMEApplication(open(FILE1, 'rb').read()) | |
att1.add_header('Content-Disposition', 'attachment', | |
filename=os.path.basename(FILE1)) | |
att2 = MIMEApplication(open(FILE2, 'rb').read()) | |
att2.add_header('Content-Disposition', 'attachment', | |
filename=os.path.basename(FILE2)) | |
msg.attach(msg_body) | |
msg.attach(att1) | |
msg.attach(att2) | |
try: | |
# Gửi email với tập tin đính kèm bằng hàm send_raw_email | |
response = client.send_raw_email( | |
Source=SENDER, | |
Destinations=[ | |
RECEIVER | |
], | |
RawMessage={ | |
'Data': msg.as_string(), | |
} | |
) | |
print("ID của email: ", response['MessageId']) | |
print("Gửi email thành công!") | |
except Exception as e: | |
print("Lỗi: ", e) |
Đăng nhận xét