PHP
Python

Trang chủ

Hướng dẫn gửi email trong Python: Cách thực hiện và ứng dụng thực tế

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
24/03/2025
24 phút đọc
Theo dõi Vietnix trên

Hướng dẫn gửi email trong Python: Cách thực hiện và ứng dụng thực tế

Gửi email trong Python là một thao tác phổ biến trong các ứng dụng cần gửi thông báo tự động, như hệ thống quản lý, email marketing, hay các công cụ tự động hóa. Trong bài viết này, mình sẽ hướng dẫn bạn cách gửi email qua Python bằng nhiều phương pháp khác nhau, từ việc sử dụng thư viện smtplib cơ bản, tạo SMTP server thử nghiệm, cho đến việc gửi email HTML và email có tệp đính kèm. Bạn sẽ học được cách tối ưu hóa việc gửi email tự động trong các dự án của mình.

Điểm chính cần nắm

  • Cách gửi email trong Python: Tổng quan về các phương pháp gửi email trong Python.
  • Gửi email bằng smtplib – smtplib.SMTP(): Hướng dẫn cách gửi email bằng thư viện smtplib, thiết lập và sử dụng SMTP server.
    • Cách thiết lập SMTP Server: Cách cấu hình server SMTP để gửi email.
    • Gửi email bằng smtplib: Quy trình gửi email cơ bản với smtplib.
  • Sử dụng Python smtpd để tạo SMTP server: Hướng dẫn tạo SMTP server bằng thư viện smtpd trong Python.
    • Tạo một smtp server đơn giản: Cách xây dựng một SMTP server đơn giản.
    • Gửi email đến smtp server thử nghiệm: Cách gửi email đến SMTP server thử nghiệm.
    • Chạy SMTP debugging server: Hướng dẫn chạy server SMTP để kiểm tra lỗi.
  • Gửi email HTML bằng Python với smtplib và email.mime: Cách gửi email dưới dạng HTML sử dụng smtplib và email.mime.
    • Cách tạo email HTML: Hướng dẫn tạo email dạng HTML.
    • Ví dụ gửi email HTML: Ví dụ cụ thể về cách gửi email HTML.
  • Gửi email có tệp đính kèm: Hướng dẫn cách gửi email với tệp đính kèm.
    • Cách 1: Sử dụng email.mime: Cách gửi email có tệp đính kèm sử dụng thư viện email.mime.
    • Cách 2: Sử dụng multipart/mixed (cách thủ công): Cách thủ công sử dụng multipart/mixed để gửi tệp đính kèm.
  • Gửi email bằng Gmail SMTP server: Cách gửi email qua Gmail SMTP server.
  • Vietnix – Nhà cung cấp dịch vụ lưu trữ uy tín, tốc độ và bảo mật: Giới thiệu dịch vụ của Vietnix.
  • FAQ: Những câu hỏi thường gặp về gửi email trong Python.

Cách gửi email trong Python

Trong Python, bạn có thể gửi email bằng nhiều thư viện khác nhau, nhưng phổ biến nhất là smtplibemail.

  • smtplib: Cho phép thiết lập phiên làm việc với máy chủ SMTP hoặc ESMTP để gửi email.
  • email: Hỗ trợ quản lý nội dung email theo chuẩn MIME (Multipurpose Internet Mail Extensions), giúp tạo email theo định dạng văn bản thuần, HTML hoặc có tệp đính kèm.

Máy chủ thư (mail server) là hệ thống xử lý và chuyển tiếp email qua Internet. Khi gửi email, SMTP (Simple Mail Transfer Protocol) đảm nhiệm việc truyền tải thư giữa các máy chủ, tuân theo các quy chuẩn như RFC 2822 để định dạng tin nhắn và RFC 5321 cho quá trình giao tiếp SMTP.

Cách gửi email trong Python
Cách gửi email trong Python

Gửi email trong Python bằng smtplib – smptlib.SMTP()

Hàm smtplib.SMTP() trong Python được sử dụng để tạo một đối tượng phiên máy khách SMTP, cho phép bạn thiết lập kết nối với một máy chủ SMTP. Kết nối này cho phép bạn gửi email thông qua máy chủ.

Cách thiết lập SMTP Server

Hàm smtplib.SMTP() trong Python được sử dụng để tạo một đối tượng phiên máy khách SMTP, cho phép thiết lập kết nối với một máy chủ SMTP để gửi email.

1. Thiết lập kết nối SMTP

Trước khi gửi email, bạn cần thiết lập kết nối đến máy chủ SMTP. Ví dụ, để kết nối với máy chủ smtp.example.com trên port 25:

import smtplib  

# Tạo đối tượng SMTP và kết nối đến máy chủ
smtpObj = smtplib.SMTP("smtp.example.com", 25)

# Xác định danh tính với máy chủ SMTP
smtpObj.ehlo()

# Bảo mật kết nối bằng TLS (nếu cần)
smtpObj.starttls()

2. Đăng nhập vào máy chủ smtp (nếu cần)

Một số máy chủ yêu cầu xác thực trước khi gửi email:

smtpObj.login('your_email@example.com', 'your_password')

Gửi email bằng smtplib

Script sau đây kết nối với máy chủ SMTP tại “smtp.example.com” trên port 25, tùy chọn nhận diện và bảo mật kết nối, đăng nhập (nếu cần thiết), gửi một email, và sau đó kết thúc phiên làm việc:

import smtplib

try:
    # Kết nối đến SMTP server
    smtpObj = smtplib.SMTP("smtp.example.com", 25)
    smtpObj.ehlo()
    smtpObj.starttls()
    
    # Đăng nhập vào server (nếu cần)
    smtpObj.login("your_email@example.com", "your_password")

    # Gửi email
    from_address = "your_email@example.com"
    to_address = "recipient@example.com"
    message = """\
    Subject: Test Email

    This is a test email message.
    """
    
    smtpObj.sendmail(from_address, to_address, message)
    print("Email đã được gửi thành công.")

except smtplib.SMTPException as e:
    print("Lỗi khi gửi email:", e)

finally:
    smtpObj.quit()

Giải thích đoạn code

  • Kết nối SMTP: Tạo kết nối đến máy chủ SMTP với địa chỉ và port tương ứng.

  • Xác thực EHLO: Giúp xác định danh tính với máy chủ SMTP.

  • Bảo mật TLS: Giúp mã hóa dữ liệu gửi đi.

  • Đăng nhập: Nếu máy chủ yêu cầu, phải cung cấp email và mật khẩu.

  • Gửi email: Sử dụng sendmail() để gửi email đến địa chỉ nhận.

  • Xử lý lỗi: Dùng try-except để bắt lỗi nếu có sự cố trong quá trình gửi.

Sử dụng Python smtpd để tạo SMTP server

Module smtpd của Python được sử dụng để tạo và quản lý một máy chủ Simple Mail Transfer Protocol (SMTP). Module này cho phép thiết lập một máy chủ SMTP có thể nhận và xử lý email đến, giúp ích cho việc kiểm thử và gỡ lỗi các chức năng email trong ứng dụng mà không cần sử dụng máy chủ SMTP thực tế.

Tạo một SMTP server đơn giản

Dưới đây là cách tạo một SMTP server cục bộ để nhận email và in nội dung email ra terminal:

import smtpd
import asyncore

class CustomSMTPServer(smtpd.SMTPServer):
    def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
        print(f"Nhận email từ: {mailfrom}")
        print(f"Gửi đến: {rcpttos}")
        print("Nội dung email:")
        print(data.decode())
        return

# Khởi chạy SMTP server trên localhost, port 1025
server = CustomSMTPServer(("localhost", 1025), None)

try:
    print("SMTP server đang chạy trên localhost:1025...")
    asyncore.loop()
except KeyboardInterrupt:
    print("Đã dừng SMTP server.")

Giải thích đoạn code

  • Tạo lớp CustomSMTPServer kế thừa từ smtpd.SMTPServer để xử lý email.

  • Ghi đè method process_message() để in nội dung email nhận được.

  • Chạy SMTP server trên localhost, port 1025 (có thể đổi port nếu cần).

  • Dùng asyncore.loop() để giữ server chạy liên tục.

Gửi email đến SMTP server thử nghiệm

Sau khi chạy server, có thể gửi email đến localhost bằng Python:

import smtplib

server = smtplib.SMTP("localhost", 1025)

from_address = "your_email@example.com"
to_address = "recipient@example.com"
message = """\
Subject: Test SMTP Server

This is a test email sent to a local SMTP server.
"""

server.sendmail(from_address, to_address, message)
server.quit()

iconLưu ý

  • Server này chỉ nhận email và không gửi email ra ngoài.

  • Dùng cho mục đích kiểm thử nội bộ, không phù hợp để triển khai thực tế.

  • Nếu cần một SMTP server thực sự, có thể dùng smtplib với Gmail hoặc một máy chủ SMTP khác.

Chạy SMTP debugging server

Python cung cấp một máy chủ SMTP gỡ lỗi để kiểm thử mà không cần xử lý mã hóa hoặc xác thực. Có thể chạy server này bằng lệnh bên dưới. Sau khi chạy, tất cả email gửi đến localhost:1025 sẽ được in ra console thay vì thực sự gửi đi.

python -m smtpd -c DebuggingServer -n localhost:1025

Ví dụ: Gửi email đến server cục bộ

Ví dụ sau đây minh họa cách gửi một email giả lập bằng cách sử dụng chức năng smtplib kết hợp với máy chủ gỡ lỗi SMTP local:

import smtplib

fromaddr = input("From: ").strip()
toaddrs = input("To: ").split()

print("Enter message, end with ^D (Unix) or ^Z (Windows):")

msg = f"From: {fromaddr}\r\nTo: {', '.join(toaddrs)}\r\n\r\n"
while True:
    try:
        line = input()
    except EOFError:
        break
    if not line:
        break
    msg += line + "\n"

server = smtplib.SMTP("localhost", 1025)
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

Giải thích

  • From: Nhập địa chỉ email của người gửi.
  • To: Nhập địa chỉ người nhận (có thể nhập nhiều địa chỉ cách nhau bằng dấu cách).
  • Message: Nhập nội dung email, kết thúc bằng ^D (Unix) hoặc ^Z (Windows).
  • sendmail() gửi email đến server gỡ lỗi chạy trên localhost:1025.

Phương thức sendmail() của smtplib gửi email sử dụng địa chỉ người gửi, người nhận và nội dung tin nhắn chỉ định tới máy chủ gỡ lỗi SMTP cục bộ chạy trên localhost tại port 1025.

Kết quả:

Khi bạn chạy chương trình, console sẽ hiển thị giao tiếp giữa chương trình và máy chủ SMTP. Trong khi đó, terminal đang chạy máy chủ SMTPD sẽ hiển thị nội dung tin nhắn đến, giúp bạn gỡ lỗi và xác minh quá trình gửi email.

From: abc@xyz.com
To: xyz@abc.com
Enter message, end with ^D (Unix) or ^Z (Windows):
Hello World
^Z
Message length is 49

Terminal nơi SMTP server đang chạy sẽ hiển thị nội dung email như sau:

——— MESSAGE FOLLOWS ———
From: abc@xyz.com
To: xyz@abc.com
X-Peer: ::1
Hello World
———- END MESSAGE ———-

iconLưu ý

  • Server này chỉ nhận email, không gửi email ra ngoài.

  • Dùng để kiểm thử nội bộ, không phù hợp để triển khai thực tế.

  • Nếu cần SMTP server thực sự, có thể sử dụng smtplib với Gmail hoặc một dịch vụ SMTP khác.

Gửi email HTML bằng Python với smtplib và email.mime

Gửi email HTML trong Python thường được thực hiện bằng cách sử dụng thư viện smtplib để kết nối tới máy chủ SMTP và module email.mime để tạo nội dung email theo định dạng MIME. Điều này giúp đảm bảo email được hiển thị đúng cách trên các ứng dụng email phổ biến như Gmail, Outlook hoặc Thunderbird.

Để gửi một email HTML bằng Python, bạn có thể sử dụng thư viện smtplib để kết nối tới một máy chủ SMTP và các module email.mime để cấu trúc và định dạng nội dung email của bạn một cách thích hợp.

Cách tạo email HTML

Khi gửi email HTML, bạn cần chỉ định một số tiêu đề nhất định và cấu trúc nội dung thư cho phù hợp để đảm bảo ứng dụng email của người nhận nhận dạng và hiển thị dưới dạng HTML. Khi gửi email HTML, nội dung email phải được định dạng theo đúng tiêu chuẩn MIME. Cụ thể, chúng ta cần:

  • Đặt tiêu đề email (Subject), người gửi (From), và người nhận (To).
  • Sử dụng MIMEMultipart để tạo email chứa nội dung HTML.
  • Sử dụng MIMEText để định dạng nội dung HTML bên trong email.

Ví dụ gửi email HTML

Dưới đây là ví dụ gửi nội dung HTML dưới dạng email trong Python:

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

# Thông tin email
sender = "no-reply@vietnix.com"
receiver = "user@example.com"
password = "your_vietnix_smtp_password"

# Tạo email HTML
msg = MIMEMultipart("alternative")
msg["From"] = sender
msg["To"] = receiver
msg["Subject"] = "Thông báo từ Vietnix"

# Nội dung email (HTML)
html_content = """\
<html>
  <body>
    <p style="color:blue;">Chào bạn,</p>
    <p>Cảm ơn bạn đã sử dụng dịch vụ của <b>Vietnix</b>.</p>
    <h2 style="color:red;">Chúc bạn một ngày tốt lành!</h2>
  </body>
</html>
"""

# Đính kèm nội dung HTML vào email
msg.attach(MIMEText(html_content, "html"))

# Kết nối đến SMTP server của Vietnix và gửi email
try:
    smtp_server = smtplib.SMTP("smtp.vietnix.com", 587)
    smtp_server.starttls()  # Bật mã hóa TLS
    smtp_server.login(sender, password)  # Đăng nhập vào Vietnix SMTP
    smtp_server.sendmail(sender, receiver, msg.as_string())
    smtp_server.quit()
    print("Email đã được gửi thành công!")
except smtplib.SMTPException as e:
    print(f"Lỗi khi gửi email: {e}")

iconLưu ý

SMTP Debugging Server chỉ dùng để kiểm tra, email sẽ không thực sự được gửi đi.

Giải thích đoạn code

  • Dùng SMTP server của Vietnix: smtp.vietnix.com trên port 587.

  • Bật bảo mật TLS: smtp_server.starttls() để mã hóa kết nối.

  • Đăng nhập SMTP: smtp_server.login(sender, password).

  • Gửi email: Dùng sendmail() để gửi email đi.

Cách 1: Sử dụng email.mime

Cách này sử dụng MIMEMultipart để tạo email có nhiều phần (văn bản + tệp đính kèm), kết hợp với MIMETextMIMEBase để thêm nội dung và tệp đính kèm.

Các bước thực hiện:

  • Tạo email bằng MIMEMultipart.
  • Thêm nội dung email với MIMEText.
  • Đính kèm tệp bằng MIMEBase.
  • Sử dụng SMTP để gửi email.

Ví dụ:

import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# Thông tin email
sender = "no-reply@vietnix.com"
receiver = "user@example.com"
password = "your_smtp_password"
file_path = "document.pdf"  # Đường dẫn tới file đính kèm

# Tạo email
msg = MIMEMultipart()
msg["From"] = sender
msg["To"] = receiver
msg["Subject"] = "Thông báo quan trọng"

# Nội dung email
body = "Chào bạn,\n\nDưới đây là tài liệu cần thiết. Vui lòng kiểm tra!\n\nTrân trọng."
msg.attach(MIMEText(body, "plain"))

# Đính kèm tệp tin
if os.path.exists(file_path):
    with open(file_path, "rb") as attachment:
        part = MIMEBase("application", "octet-stream")
        part.set_payload(attachment.read())

    encoders.encode_base64(part)  # Mã hóa file
    part.add_header(
        "Content-Disposition",
        f"attachment; filename={os.path.basename(file_path)}",
    )
    msg.attach(part)
else:
    print("Lỗi: Tệp đính kèm không tồn tại!")

# Kết nối SMTP server và gửi email
try:
    smtp_server = smtplib.SMTP("smtp.vietnix.com", 587)
    smtp_server.starttls()  # Bật mã hóa TLS
    smtp_server.login(sender, password)  # Đăng nhập SMTP
    smtp_server.sendmail(sender, receiver, msg.as_string())
    smtp_server.quit()
    print("Email đã được gửi thành công!")
except smtplib.SMTPException as e:
    print(f"Lỗi khi gửi email: {e}")

iconLưu ý

  • File đính kèm cần tồn tại, nếu không chương trình sẽ báo lỗi.

  • Mật khẩu SMTP không nên lưu trực tiếp trong mã nguồn, có thể dùng biến môi trường.

  • Có thể đính kèm nhiều file bằng cách lặp lại đoạn mã MIMEBase với các file khác nhau.

Giải thích đoạn code

  • Tạo email dạng MIMEMultipart, cho phép đính kèm tệp.

  • Thêm nội dung email bằng MIMEText(body, "plain").

  • Đính kèm file:

    • Mở file ở chế độ nhị phân (rb).

    • Mã hóa file bằng encode_base64().

    • Thêm tiêu đề "Content-Disposition" để trình duyệt email hiểu đây là file đính kèm.

  • Gửi email qua SMTP server bằng mã hóa TLS.

Cách 2: Sử dụng multipart/mixed (cách thủ công)

Một cách khác để gửi email có tệp đính kèm trong Python là sử dụng multipart/mixed thay vì thư viện email.mime. Cách tiếp cận này yêu cầu bạn tự xây dựng nội dung email theo định dạng MIME và quản lý các phần của email một cách thủ công.

Thiết lập một email có file đính kèm

Khi gửi email chứa tệp đính kèm, bạn cần thiết lập header Content-Typemultipart/mixed để báo hiệu rằng email bao gồm cả nội dung văn bản và tệp đính kèm. Các phần của email được ngăn cách bằng một boundary đặc biệt.

Ví dụ:

Dưới đây là ví dụ về cách gửi email có tệp đính kèm document.pdf bằng smtplibbase64:

import smtplib
import base64

filename = "document.pdf"

# Đọc file và mã hóa base64
with open(filename, "rb") as f:
    filecontent = f.read()
encodedcontent = base64.b64encode(filecontent).decode()  # Chuyển thành chuỗi base64

sender = "no-reply@vietnix.com"
receiver = "user@example.com"
password = "your_smtp_password"

marker = "AUNIQUEMARKER"

# Nội dung email
body = """
Chào bạn,

Đây là email chứa tệp đính kèm.
"""

# Header chính của email
part1 = f"""From: Vietnix <{sender}>
To: Người nhận <{receiver}>
Subject: Thông báo quan trọng
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary={marker}
--{marker}
"""

# Phần nội dung email
part2 = f"""Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit

{body}
--{marker}
"""

# Phần tệp đính kèm
part3 = f"""Content-Type: application/octet-stream; name="{filename}"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="{filename}"

{encodedcontent}
--{marker}--
"""

# Gộp toàn bộ nội dung email
message = part1 + part2 + part3

# Gửi email qua SMTP
try:
    smtpObj = smtplib.SMTP("smtp.vietnix.com", 587)
    smtpObj.starttls()
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receiver, message)
    smtpObj.quit()
    print("Email đã được gửi thành công!")
except Exception as e:
    print(f"Lỗi khi gửi email: {e}")

Gửi email bằng Gmail SMTP server

Để gửi email qua Gmail SMTP server trong Python, bạn cần sử dụng App Password nếu bật xác thực hai bước (2FA) hoặc đăng nhập trực tiếp nếu chưa bật 2FA (không khuyến khích do bảo mật thấp).

iconLưu ý

Google đã bỏ tính năng “Less secure apps access” từ tháng 5/2022. Vì vậy, mình chỉ nên hướng dẫn sử dụng App Password.

Thiết lập Gmail SMTP server

  • SMTP server: smtp.gmail.com
  • Cổng (port): 587 (TLS) hoặc 465 (SSL)
  • Cách đăng nhập:
    • Nếu bật 2FA → Dùng App Password
    • Nếu không bật 2FA → Dùng mật khẩu tài khoản Gmail (không khuyến khích)

Để gửi email bằng máy chủ SMTP của Gmail trong Python, bạn cần thiết lập kết nối tới smtp.gmail.com trên port 587 với mã hóa TLS, xác thực bằng thông tin đăng nhập Gmail của bạn, xây dựng tin nhắn email bằng các thư viện smtplibemail.mime của Python, và gửi nó bằng phương thức sendmail(). Cuối cùng, kết thúc kết nối SMTP với quit().

Ví dụ gửi email có file đính kèm bằng gmail SMTP

Bạn cần thiết lập kết nối tới smtp.gmail.com trên port 587 với mã hóa TLS, xác thực bằng thông tin đăng nhập Gmail, xây dựng tin nhắn email bằng các thư viện smtplibemail.mime, sau đó gửi email bằng phương thức sendmail(). Cuối cùng, kết thúc kết nối SMTP với quit().

import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# Thông tin tài khoản Gmail
gmail_user = "your_email@gmail.com"
gmail_password = "your_app_password"  # Nếu bật 2FA, dùng App Password

# Thông tin người nhận
receiver = "receiver@example.com"
subject = "Thông báo từ Vietnix"
body = "Chào bạn,\n\nDưới đây là tài liệu đính kèm.\n\nTrân trọng."

# Tạo email
msg = MIMEMultipart()
msg["From"] = gmail_user
msg["To"] = receiver
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain"))

# File đính kèm
file_path = "document.pdf"  # Thay bằng đường dẫn file của bạn
if os.path.exists(file_path):
    with open(file_path, "rb") as attachment:
        part = MIMEBase("application", "octet-stream")
        part.set_payload(attachment.read())

    encoders.encode_base64(part)  # Mã hóa file
    part.add_header("Content-Disposition", f"attachment; filename={os.path.basename(file_path)}")
    msg.attach(part)
else:
    print("Lỗi: Tệp đính kèm không tồn tại!")

# Gửi email qua Gmail SMTP server
try:
    server = smtplib.SMTP("smtp.gmail.com", 587)
    server.starttls()  # Bật TLS
    server.login(gmail_user, gmail_password)  # Đăng nhập Gmail
    server.sendmail(gmail_user, receiver, msg.as_string())
    server.quit()
    print("Email đã được gửi thành công!")
except smtplib.SMTPException as e:
    print(f"Lỗi khi gửi email: {e}")

Các bước gửi email qua Gmail SMTP server

  1. Tạo email với MIMEMultipart

    • MIMEText để thêm nội dung email.

    • MIMEBase để đính kèm file.

    • Mã hóa file bằng encode_base64() và thêm header Content-Disposition.

  2. Gửi email qua Gmail SMTP
    • Kết nối tới smtp.gmail.com qua port 587.

    • Bật TLS (starttls()).

    • Đăng nhập Gmail bằng login(gmail_user, gmail_password).

    • Gửi email bằng sendmail().

Dưới đây là script ví dụ minh họa cách gửi email bằng máy chủ SMTP của Gmail:

import smtplib

# Email content
content = "Hello World"

# Set up SMTP connection to Gmail's SMTP server
mail = smtplib.SMTP('smtp.gmail.com', 587)
# Identify yourself to the SMTP server
mail.ehlo()  
# Start TLS encryption for the connection
mail.starttls()  

# Gmail account credentials 
sender = 'your_email@gmail.com'
password = 'your_password'

# Login to Gmail's SMTP server
mail.login(sender, password)

# Email details
recipient = 'recipient_email@example.com'
subject = 'Test Email'

# Construct email message with headers
header = f'To: {recipient}\nFrom: {sender}\nSubject: {subject}\n'
content = header + content

# Send email
mail.sendmail(sender, recipient, content)

# Close SMTP connection
mail.quit()

Vietnix – Nhà cung cấp dịch vụ lưu trữ uy tín, tốc độ và bảo mật

Vietnix hiện là một trong những nhà cung cấp dịch vụ cho thuê máy chủ (server), hosting, VPSdomain hàng đầu tại Việt Nam. Với mục tiêu mang lại giải pháp lưu trữ hiệu quả và bảo mật cao, Vietnix cam kết cung cấp dịch vụ chất lượng vượt trội cùng đội ngũ hỗ trợ kỹ thuật chuyên nghiệp 24/7. Hơn 80.000 khách hàng đã tin tưởng và lựa chọn Vietnix nhờ vào dịch vụ cho thuê máy chủ đáng tin cậy, giúp tối ưu hóa hiệu suất và bảo mật dữ liệu cho doanh nghiệp.

Thông tin liên hệ:

  • Hotline: 18001093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Website: https://vietnix.vn/

Câu hỏi thường gặp

Làm thế nào để gửi email tự động trong Python mà không cần phải mở trình duyệt?

Sử dụng thư viện smtplib trong Python, bạn có thể tự động gửi email mà không cần mở trình duyệt, bằng cách kết nối với một máy chủ SMTP và sử dụng thông tin đăng nhập của bạn để gửi thư điện tử.

Python có thể gửi email đến nhiều người nhận cùng lúc không?

, bạn có thể gửi email đến nhiều người nhận trong Python bằng cách sử dụng danh sách các địa chỉ email trong trường “To” hoặc “Bcc” của email.

Có thể gửi email HTML trong Python hay không?

, bạn có thể gửi email với định dạng HTML bằng cách sử dụng thư viện smtplib kết hợp với email.mime để tạo email với nội dung HTML thay vì văn bản thuần túy.

Có thể gửi email qua nhiều máy chủ SMTP khác ngoài Gmail trong Python không?

, bạn có thể gửi email qua bất kỳ máy chủ SMTP nào như Outlook, Yahoo, hay các dịch vụ hosting khác, chỉ cần thay đổi thông tin máy chủ và cổng SMTP tương ứng.

Python có thể gửi email với nhiều tệp đính kèm không?

Có thể, bạn chỉ cần lặp qua các tệp và thêm chúng vào email dưới dạng các phần đính kèm riêng biệt.

Python có hỗ trợ gửi email với định dạng MIME không?

, Python hỗ trợ gửi email với định dạng MIME, giúp gửi email với nhiều phần nội dung khác nhau như văn bản, hình ảnh, hoặc các tệp đính kèm.

Lời kết

Với những hướng dẫn chi tiết trên, bạn đã nắm vững các phương pháp gửi email trong Python, từ cách đơn giản đến các kỹ thuật phức tạp hơn như gửi email HTML hay có tệp đính kèm. Hy vọng bài viết đã giúp bạn có cái nhìn tổng quan và áp dụng thành công vào dự án của mình. Nếu bạn có bất kỳ thắc mắc nào hoặc cần hỗ trợ thêm, đừng ngần ngại để lại bình luận bên dưới. Cảm ơn bạn đã theo dõi!

Mọi người cũng xem:

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn