How to send email by secure connection in python.
Credit : Image Source
Date | 15-01-2021 |
---|---|
Author | Thanakorn P. |
SMTP (Simple Mail Transfer Protocol) เป็น Protocol ที่ในการส่ง email กันมาอย่างยาวนาน และเป็นที่ทราบกันดีว่า Protocol นี้ โดยปกติจะไม่มีการเข้ารหัสข้อมูลที่ส่ง ทำให้ข้อมูลที่ส่งมีความปลอดภัยน้อยลง เพราะสามารถดักจับข้อมูลที่ส่งผ่าน network ได้
ต่อมาจึงได้มีการเพิ่มเติมความสามารถให้กับ Protocol SMTP ให้มีความสามารถในการเข้ารหัส ระหว่างการส่งข้อมูลจาก Client ไปยัง SMTP server และเรียกวิธีการนี้ว่า SMTPS (Simple Mail Transfer Protocol Secure)
วันนี้เราเลยจะมาทำการส่ง email แบบ SMTPS ด้วย python กัน
หมายเหตุ : การส่ง email ด้วย SMTPS นั้น SMTP server จะต้องรองรับด้วย ซึ่งในการทดสอบนี้ ผมได้ทดสอบส่ง email ด้วย SMTP server ของ Gmail ที่รองรับ SMTPS
Sample Code
import smtplib
import ssl
user = 'email@test.com'
password = 'EmailPassword'
# สร้าง ssl default setting
context = ssl.create_default_context()
# เลือกใช้ Protocol TLS version 1.2 ในการเข้ารหัส
context.options = ssl.PROTOCOL_TLSv1_2
# ทำการ connect ไปยัง smtp server ด้วย Port 465 และ config TLS ตาม setting ที่เราเลือกไว้
with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server:
# ทำการ login
server.login(user, password)
# ทำการส่ง email
server.sendmail('email@test.com', 'receiver@test.com', 'Test send email by secure connection')
print('Send mail success')
และเมื่อทำการทดสอบส่ง email ก็จะพบว่า สามารถส่ง email ออกไปได้
หวังว่าบทความนี้จะช่วยเพิ่มความปลอดภัยให้กับการส่ง email ด้วย ภาษา Python ไม่มากก็น้อยนะครับ
reference |
---|
https://docs.python.org/3/library/ssl.html#ssl.PROTOCOL_TLS |
https://docs.python.org/3/library/smtplib.html |