ต้องการส่งอีเมลผ่าน Amazon Simple Email Service (SES) โดยใช้ไลบรารี boto3 ใน Python
ต้องการส่งอีเมลผ่าน Amazon Simple Email Service (SES) โดยใช้ไลบรารี boto3 ใน Python ให้ทำตามขั้นตอนต่อไปนี้:
- กำหนด AWS Credentials: ตรวจสอบให้แน่ใจว่าได้กำหนด AWS credentials แล้ว สามารถทำได้โดยการตั้งค่า AWS CLI หรือกำหนด credentials โดยตรงในโค้ด (ไม่แนะนำสำหรับการใช้งานจริง)
- ส่งอีเมล: ใช้ไลบรารี
boto3เพื่อส่งอีเมลผ่าน SES
ติดตั้ง boto3: ถ้ายังไม่ได้ติดตั้ง boto3 ให้ติดตั้งด้วยคำสั่ง pip:
pip install boto3
ตัวอย่างโค้ดสำหรับส่งอีเมลโดยใช้ boto3 และ SES ดังนี้:
import boto3
from botocore.exceptions import NoCredentialsError, PartialCredentialsError
def send_email(sender, recipient, subject, body_text, body_html):
# สร้าง SES resource และระบุ region
ses_client = boto3.client('ses', region_name='us-west-2') # แทนที่ด้วย region ของคุณ
# พยายามส่งอีเมล
try:
# ระบุเนื้อหาของอีเมล
response = ses_client.send_email(
Destination={
'ToAddresses': [recipient],
},
Message={
'Body': {
'Html': {
'Charset': 'UTF-8',
'Data': body_html,
},
'Text': {
'Charset': 'UTF-8',
'Data': body_text,
},
},
'Subject': {
'Charset': 'UTF-8',
'Data': subject,
},
},
Source=sender,
)
except NoCredentialsError:
print("Credentials ไม่พร้อมใช้งาน")
except PartialCredentialsError:
print("Credentials ไม่ครบถ้วน")
except Exception as e:
print(f"เกิดข้อผิดพลาด: {e}")
else:
print("ส่งอีเมลสำเร็จ! Message ID:", response['MessageId'])
# ตัวอย่างการใช้งาน
sender = '[email protected]' # แทนที่ด้วยอีเมลผู้ส่งที่ยืนยันแล้ว
recipient = '[email protected]' # แทนที่ด้วยอีเมลผู้รับ
subject = 'ทดสอบส่งอีเมล'
body_text = 'นี่คือเนื้อหาของอีเมลในรูปแบบข้อความ'
body_html = '<h1>นี่คือเนื้อหาของอีเมลในรูปแบบ HTML</h1>'
send_email(sender, recipient, subject, body_text, body_html)
จุดสำคัญ:
- Region: ตรวจสอบให้แน่ใจว่าระบุ region ที่คุณตั้งค่า SES อย่างถูกต้อง
- อีเมลที่ยืนยัน: ตรวจสอบให้แน่ใจว่าอีเมลผู้ส่งถูกยืนยันใน Amazon SES แล้ว
- การจัดการข้อผิดพลาด: โค้ดรวมการจัดการข้อผิดพลาดพื้นฐานสำหรับ credentials ที่หายไปหรือไม่ครบถ้วน
การกำหนดค่าเพิ่มเติม:
- สิทธิ์ IAM: ตรวจสอบให้แน่ใจว่า IAM user หรือ role ที่คุณใช้มีสิทธิ์ที่จำเป็นในการส่งอีเมลผ่าน SES
- SES Sandbox: ถ้าบัญชีของคุณอยู่ใน SES sandbox คุณจะส่งอีเมลไปยังอีเมลที่ยืนยันเท่านั้น คุณอาจต้องขอสิทธิ์การผลิตเพื่อส่งอีเมลไปยังอีเมลที่ไม่ได้ยืนยัน
นี่คือวิธีการเริ่มต้นในการส่งอีเมลโดยใช้ boto3 และ Amazon SES