ในการส่งอีเมลด้วยภาษา Python ผมจะขอกล่าวถึงการใช้งานสองไลบรารีดังนี้
- ไลบรารี smtplib
- ไลบรารี email
เนื่องจากทั้งสองไลบรารีมีคำสั่งปรีกย่อยจำนวนมากผมจึงขอนำเสนอเฉพาะคำสั่งที่ใช้งานบ่อย ๆ ในการส่งอีเมลด้วยภาษา Python ครับ
ไลบรารี smtplib
ไลบรารี smtplib เป็นไลบรารีสำหรับส่งอีเมลผ่าน SMTP ในการส่งอีเมลในภาษา Python เราต้องใช้ไลบรารีอีกอันร่วมด้วย คือ ไลบรารี email สำหรับใช้จัดการกับข้อมูลก่อนส่งอีเมลครับ
ในการใช้งานทุกครั้งต้อง
[python]import smtplib[/python]
เข้ามาทุกครั้งครับ
มีคำสั่งที่ควรรู้ดังนี้
[python]smtplib.SMTP('Host SMTP', port)[/python]
เป็นคำสั่งสำหรับสร้างวัตถุ SMTP จากการเชื่อมต่อ
[python]SMTP.set_debuglevel(level)[/python]
เป็นคำสั่งกำหนดค่าระดับ debug ของ output
[python]SMTP.login(user, password)[/python]
ล็อกอินเข้าสู่ระบบอีเมล
[python]SMTP.verify(address)[/python]
ยืนยันอีเมล
[python]SMTP.ehlo(name='')[/python]
ระบุตัวเองไปยังเซิร์ฟเวอร์ ESMTP โดย EHLO
[python]SMTP.starttls(keyfile=None, certfile=None, context=None)[/python]
เป็นคำสั่งสำหรับเชื่อมต่อ SMTP เข้ารหัสโหมด TLS (Transport Layer Security)
[python]SMTP.sendmail(from_addr, to_addrs, msg)[/python]
ส่งอีเมล
[python]SMTP.quit()[/python]
ปิดการเชื่อมต่อ
ตัวอย่างการใช้งาน
ส่งอีเมล (เฉพาะข้อความ ไม่มีหัวข้ออีเมล อาจถูกมองเป็นสแปมได้)
[python]
import smtplib
server = smtplib.SMTP('Host SMTP', port)
server.ehlo()
server.starttls()
server.ehlo()
server.login(user, password)
text = "Test by Python"
server.sendmail("you_email", "to_email", text)
server.quit()
[/python]
นำไปใช้งานกับ G-mail
ไลบรารี email
หากต้องการแนบไฟล์ ส่งเป็น HTML ใส่หัวข้อเพิ่มเติม ต้องใช้ไลบรารี email เข้ามาใช้งานร่วมด้วยครับ
เนื่องจากไลบรารี email มีรายละเอียดการใช้งานที่ซับซ้อนมากมากเป็นไลบรารีหนึ่งของภาษา Python ผมจึงขอนำเฉพาะคำสั่งที่ใช้งานบ่อยมาใช้ครับ
import ไลบรารีเข้ามา
[python]
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email import encoders
[/python]
สามารถกำหนดรายละอียดการส่งอีเมลด้วยไลบรารี email ได้ดังนี้
ใส่รายเอียดเนื้อหาอีเมลทั้งแบบ plain และแบบ HTML ได้ดังนี้
[python]
body = "Python test mail"
bodyhtml = """
<html>
<head></head>
<body>
<b>By Python</b>
</p>
</body>
</html>
"""
msg.attach(MIMEText(body, 'plain')) # ส่งแบบ plain
msg.attach(MIMEText(bodyhtml, 'html')) # ส่งแบบ HTML
[/python]
แนบไฟล์รูปภาพไปพร้อมกับอีเมล
ใช้คำสั่ง attach
[python]
attachment = "ไฟล์รูปภาพ.jpg"
fp = open(attachment, 'rb')
img = MIMEImage(fp.read())
fp.close()
img.add_header('Content-ID','<image1>')
img.add_header('Content-Disposition', 'inline', filename=attachment)
msg.attach(img)
[/python]
แนบไฟล์ zip หรือไฟล์อื่น ๆ ไปพร้อมกับอีเมล
[python]
attachmentfile = "ไฟล์ที่ต้องการแนบ"
file = MIMEBase('application', "octet-stream")
file.set_payload(open(attachmentfile, 'rb').read())
encoders.encode_base64(file) # เข้ารหัสไฟล์เป็น base64
file.add_header('Content-Disposition','attachment; filename="%s"' % os.path.basename(attachmentfile)) # ใช้ไลบรารี os มาช่วยในการระบุชื่อและนามสกุลของไฟล์
msg.attach(file)
[/python]
ตัวอย่างการใช้งาน
ตัวอย่างที่ 1 ส่งอีเมลแบบ plain และแบบ HTML
ตัวอย่างที่ 2 ส่งอีเมลพร้อมแนบไฟล์รูปภาพและไฟล์อื่น ๆ
อ่านเอกสารการใช้งานไลบรารี smtplib และไลบรารี email ได้ที่
docs.python.org/3/library/smtplib.html
docs.python.org/3/library/email.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)