Python - Menghantar E-mel

Hai semuanya, pemrogram Python yang berhasrat! Hari ini, kita akan menyusuri perjalanan yang menarik ke dunia penghantaran e-mel menggunakan Python. Sebagai guru komputer yang ramah dan paling dekat dengan kawasan anda, saya sangat gembira untuk membimbing anda melalui proses ini. Percayalah, pada akhir tutorial ini, anda akan menghantar e-mel seperti seorang profesional!

Python - Sending Email

Menghantar E-mel di Python

Mari kita mulakan dengan dasar-dasar. Menghantar e-mel di Python adalah seperti menjadi posman digital, tetapi bukannya berjalan dari pintu ke pintu, kita menggunakan pustaka Python khas yang dipanggil smtplib. SMTP adalah singkatan untuk Simple Mail Transfer Protocol, yang merupakan cara yang klasik untuk mengatakan "aturan untuk mengirim surat melalui internet".

Berikut adalah contoh yang sederhana untuk memulakan:

import smtplib

sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "your_password"
message = "Hello, this is a test email from Python!"

with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)

Mari kita kongsi ini:

  1. Kita import pustaka smtplib.
  2. Kita tetapkan e-mel pengirim, e-mel penerima, dan kata laluan.
  3. Kita cipta mesej yang sederhana.
  4. Kita sambung ke pelayan SMTP Gmail (maklumat lanjut tentang ini di atas).
  5. Kita mulakan TLS untuk keselamatan.
  6. Kita log masuk ke akaun e-mel kita.
  7. Akhirnya, kita menghantar e-mel!

Fungsi Python smtplib.SMTP()

Fungsi SMTP() adalah seperti kunci untuk pos office digital kita. Ia menubungkan sambungan ke pelayan SMTP yang kita ingin gunakan. Berikut adalah pandangan yang lebih detil:

import smtplib

server = smtplib.SMTP('smtp.gmail.com', 587)
print(server.ehlo())
server.starttls()
print(server.ehlo())

Dalam contoh ini:

  • Kita cipta objek SMTP untuk pelayan Gmail.
  • ehlo() adalah seperti untuk mengatakan "hai" kepada pelayan.
  • starttls() memulakan penyulitan TLS untuk keselamatan.

Modul Python smtpd

Sementara smtplib untuk menghantar e-mel, smtpd adalah untuk menerima mereka. Ia seperti untuk menetapkan rakit penyediaan e-mel anda sendiri! Berikut adalah contoh yang sederhana:

import asyncore
from smtpd import SMTPServer

class EmailServer(SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
print(f'Receiving message from: {peer}')
print(f'Message addressed from: {mailfrom}')
print(f'Message addressed to  : {rcpttos}')
print(f'Message length        : {len(data)}')

server = EmailServer(('localhost', 1025), None)
asyncore.loop()

Set ini menjadikan rakit e-mel yang basic yang mencetak maklumat tentang e-mel yang diterima. Ia seperti memiliki rakit penyusunan surat pribadi anda!

Menghantar E-mel HTML menggunakan Python

Sekarang, mari kita jadikan e-mel kita lebih kelas dengan beberapa HTML:

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

sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "your_password"

message = MIMEMultipart("alternative")
message["Subject"] = "multipart test"
message["From"] = sender_email
message["To"] = receiver_email

text = "Hi there! This is a plain text email."
html = """\
<html>
<body>
<p>Hi there!<br>
This is an <b>HTML</b> email.
</p>
</body>
</html>
"""

part1 = MIMEText(text, "plain")
part2 = MIMEText(html, "html")

message.attach(part1)
message.attach(part2)

with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())

Contoh ini menghantar e-mel dengan kedua-dua versi teks biasa dan HTML. Ia seperti mengirim surat dengan wong yang klasik!

Menghantar Lampiran sebagai E-mel

Bagaimana jika kita ingin mengirim fail bersama dengan e-mel kita? Tidak masalah! Ini cara:

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

sender_email = "[email protected]"
receiver_email = "[email protected]"
password = "your_password"

message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = "Email with attachment"

body = "This is an email with an attachment."
message.attach(MIMEText(body, "plain"))

filename = "document.pdf"  # Ganti dengan nama fail anda
attachment = open(filename, "rb")

part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())

encoders.encode_base64(part)
part.add_header(
"Content-Disposition",
f"attachment; filename= {filename}",
)

message.attach(part)

with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message.as_string())

Skrip ini meletakkan fail kepada e-mel anda. Ia seperti menambah pakej kepada surat anda!

Menghantar E-mel Menggunakan Pelayan SMTP Gmail

Di seluruh tutorial ini, kita telah menggunakan pelayan SMTP Gmail. Berikut adalah rakam penyediaan bagi pelayan SMTP umum:

Penyedia E-mel Pelayan SMTP Port
Gmail smtp.gmail.com 587
Outlook smtp-mail.outlook.com 587
Yahoo Mail smtp.mail.yahoo.com 587

Ingat, apabila menggunakan Gmail, anda mungkin perlu untuk membolehkan "Akses Aplikasi Kurang Selamat" atau menggunakan "Kata Laluan Aplikasi" jika anda mempunyai Pengesahan Dua Faktor yang diaktifkan.

Dan itu tadi, rakan-rakan! Anda kini diperalatkan untuk menghantar e-mel seperti seorang profesional Python. Ingat, dengan kuasa yang besar datang tanggungjawab yang besar - gunakan kemahiran menghantar e-mel baru anda dengan bijak! Selamat coding, dan may e-mel anda sentiasa mencapai tempat tujuannya!

Credits: Image by storyset