Skip to main content
0
Python

ส่งอีเมลอัตโนมัติด้วย Python ผ่าน Gmail แบบง่าย ๆ

อีกหนึ่่งเทคนิคที่น่าสนใจสำหรับมือใหม่ หัดเขียน Python แล้วอยากเอาไปงานจริง ๆ การเอาไปช่วยทำโปรแกรมในการส่งอีเมลอัตโนมัติ ที่เปลี่ยนจากงานเดิม ๆ ซ้ำ ๆ เอา Python มาทำให้มันง่ายขึ้น กับวิธีการส่งจากตัวอย่างง่าย ๆ ด้วย Gmail นั่นเอง ก่อนอื่นการจะใช้ Gmail ในการส่งเราจะต้องรู้จักกับ Gmail SMTP ก่อน โดย Gmail SMTP (Simple Mail Transfer Protocol) มันคือ โปรโตคอลหรือวิธีการที่ Google ใช้เพื่อให้ผู้ใช้สามารถส่งอีเมลผ่านบัญชี Gmail จากโปรแกรมหรือแอปพลิเคชันภายนอก เช่น Python, Microsoft Outlook, และโปรแกรมส่งอีเมลอื่น ๆ โดยไม่ต้องเข้าถึง Gmail ผ่านเว็บเบราว์เซอร์โดยตรง แล้วส่วนที่จะใช้ Python ในการส่งเราก็จะต้องรู้จักกกับ smtplib โดยมันคือ ตัวช่วยที่มากับ Python ที่เราติดตั้งอยู่แล้ว เราสามารถใช้ Lib ตัวนี้เชื่อมต่อกับเซิร์ฟเวอร์ SMTP (Simple Mail Transfer Protocol) เพื่อส่งอีเมลโดยตรงจากโปรแกรม Python โดยไม่ต้องใช้เว็บเบราว์เซอร์ ได้เลย และแน่นอนคือมันรองรับ Gmail SMTP ด้วย

สิ่งที่ต้องเตรียมก่อนเริ่ม

  1. บัญชี Gmail เราจะต้องมี account ของ Gmail ก่อนเพื่อจะส่งอีเมลได้
  2. การเปิดใช้งานการเข้าถึง SMTP ของบัญชี Gmail (เดี๋ยวทำตาม step ด้านล่างได้เลย)
  3. Python ที่ติดตั้งพร้อม smtplib (ซึ่งมากับ Python อยู่แล้ว)

ขั้นตอนการตั้งค่าบัญชี Gmail สำหรับการใช้งาน SMTP

  1. เปิดการใช้งาน 2-Step Verification โดยไปที่หน้า https://myaccount.google.com/security และเปิดการยืนยันแบบสองขั้นตอน (2-Step Verification)
  2. สร้าง App Password โดยเมื่อเปิดการยืนยันสองขั้นตอนแล้ว ให้สร้างรหัสผ่านสำหรับแอปพลิเคชันโดยเฉพาะ (App Password) เพื่อใช้ในการเข้าถึง SMTP
  3. โดยรหัสนี้จะถูกใช้แทนรหัสผ่านปกติของ Gmail ใน Python

โค้ดการใช้งาน Gmail SMTP กับ Python

หลังจากนั้นเราก็สามารถนำค่า gmail_user และ app_password มาใช้กับโค้ด Python ได้ตาม ตัวอย่างด้านล่างนี้ โดยข้อมูลที่เอามาตอนเขียนจริงต้องเก็บให้ปลอดภัยกว่านี้ อย่าแปะไว้ในโค้ดนะ เช่น เอาไปเก็บไว้ในไฟล์ .env แยกต่างหากและใช้ไลบรารีอย่าง python-dotenv เพื่อดึงค่ามา แต่ในตัวอย่างนี้เพื่อความสะดวก แอดจะเขียน gmail_user และ app_password ไว้ในโค้ดโดยตรง เพื่อให้เข้าใจส่วนการตั้งค่าของผู้ส่งให้เข้าใจง่าย ๆ

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# ข้อมูลการตั้งค่าของผู้ส่ง
gmail_user = 'your-email@gmail.com'         # ใส่ที่อยู่อีเมลของคุณ
app_password = 'your-app-password'          # ใส่ App Password ที่สร้างไว้

# ข้อมูลของผู้รับและเนื้อหาอีเมล
to = 'recipient-email@example.com'          # ใส่อีเมลผู้รับ
subject = 'ทดสอบการส่งอีเมลด้วย Python'   # ใส่หัวเรื่อง
body = 'สวัสดีครับ นี่เป็นอีเมลทดสอบที่ส่งด้วย Python!'  # ใส่เนื้อหาของอีเมล

# การสร้างอีเมล
msg = MIMEMultipart()
msg['From'] = gmail_user
msg['To'] = to
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))

try:
    # การเชื่อมต่อกับ SMTP ของ Gmail
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()  # เปิดการเข้ารหัส TLS
    server.login(gmail_user, app_password)  # เข้าสู่ระบบด้วยอีเมลและรหัสผ่านแอป
    text = msg.as_string()

    # ส่งอีเมล
    server.sendmail(gmail_user, to, text)
    print("อีเมลถูกส่งสำเร็จ!")

except Exception as e:
    print(f"เกิดข้อผิดพลาด: {e}")

finally:
    # ปิดการเชื่อมต่อ
    server.quit()

Python

อย่างในโค้ดจะเริ่มจากการกำหนดข้อมูลของผู้ส่งและผู้รับ ตั้งค่าให้เรียบร้อย จากนั้นใช้ IMEMultipart และ MIMEText เพื่อสร้างโครงสร้างและเนื้อหาของอีเมล โดยมีหัวข้อ (subject) และข้อความ (body) ที่จะส่งไปยังผู้รับ หลังจากเตรียมข้อมูลเรียบร้อย ระบบจะเชื่อมต่อกับเซิร์ฟเวอร์ Gmail SMTP (smtp.gmail.com) บนพอร์ต 587 ซึ่งรองรับการเข้ารหัสแบบ TLS เพื่อความปลอดภัย จากนั้นใช้คำสั่ง server.sendmail() ในการส่งอีเมลไปยังผู้รับที่กำหนดไว้ เมื่อส่งอีเมลสำเร็จ จะปิดการเชื่อมต่อด้วย server.quit() เพื่อสิ้นสุดการทำงาน

แค่นี้เราก็จะโปรแกรมที่ส่งอีเมลอัตโนมัติได้แล้ว ! ซึ่งที่เหลือใครอยากปรับ Logic ยังไง? เพิ่ม flow ส่วนไหนก็สามารถลุยต่อได้เลย แอดหวังว่าบทความแบบไว ๆ นี้จะช่วยจุดประกายไอเดีย และช่วยให้เพื่อน ๆ ทำงาน ลดงานได้มากขึ้นนะครับ 🧡

Sirasit Boonklang

Author Sirasit Boonklang

More posts by Sirasit Boonklang

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า