Mengirim Email Menggunakan Python

Halo para pemrogram Python yang ambisius! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia pengiriman email menggunakan Python. Sebagai guru komputer ramah lingkungan Anda, saya sangat senang untuk menunjukkan proses ini kepada Anda.percayalah, pada akhir tutorial ini, Anda akan mengirim email seperti seorang profesional!

Python - Sending Email

Mengirim Email di Python

Mari kita mulai dengan dasar-dasar. Mengirim email di Python seperti menjadi posman digital, tetapi bukannya berjalan dari pintu ke pintu, kita menggunakan pustaka Python khusus bernama smtplib. SMTP adalah singkatan dari Simple Mail Transfer Protocol, yang merupakan cara yang khusus untuk mengatakan "aturan untuk mengirim surat melalui internet".

Berikut adalah contoh sederhana untuk memulainya:

import smtplib

pengirim_email = "[email protected]"
penerima_email = "[email protected]"
password = "your_password"
pesan = "Halo, ini adalah email uji dari Python!"

with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(pengirim_email, password)
server.sendmail(pengirim_email, penerima_email, pesan)

Mari kita pecahkan ini:

  1. Kita mengimpor pustaka smtplib.
  2. Kita mengatur email pengirim, penerima email, dan kata sandi.
  3. Kita membuat pesan sederhana.
  4. Kita menyambung ke server SMTP Gmail (lebih banyak tentang ini nanti).
  5. Kita memulai TLS untuk keamanan.
  6. Kita log in ke akun email kita.
  7. Akhirnya, kita mengirim email!

Fungsi Python smtplib.SMTP()

Fungsi SMTP() seperti kunci ke pos office digital kita. Ini membuat sambungan ke server SMTP yang ingin kita gunakan. Berikut adalah gambaran yang lebih detil:

import smtplib

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

Dalam contoh ini:

  • Kita membuat objek SMTP untuk server Gmail.
  • ehlo() seperti mengatakan "halo" ke server.
  • starttls() memulai enkripsi TLS untuk keamanan.

Modul Python smtpd

Sementara smtplib untuk mengirim email, smtpd adalah untuk menerima mereka. Ini seperti mengatur mini server email Anda sendiri! Berikut adalah contoh sederhana:

import asyncore
from smtpd import SMTPServer

class EmailServer(SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
print(f'Menerima pesan dari: {peer}')
print(f'Pesan dikirim dari: {mailfrom}')
print(f'Pesan dikirim ke  : {rcpttos}')
print(f'Panjang pesan      : {len(data)}')

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

Ini mengatur server email dasar yang mencetak informasi tentang email yang diterima. Ini seperti memiliki ruang penyortiran surat pribadi Anda!

Mengirim Email HTML menggunakan Python

Sekarang, mari kita membuat email kita menjadi fancy dengan beberapa HTML:

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

pengirim_email = "[email protected]"
penerima_email = "[email protected]"
password = "your_password"

pesan = MIMEMultipart("alternative")
pesan["Subject"] = "uji multipart"
pesan["From"] = pengirim_email
pesan["To"] = penerima_email

teks = "Halo! Ini adalah email teks biasa."
html = """\
<html>
<body>
<p>Halo there!<br>
Ini adalah email <b>HTML</b>.
</p>
</body>
</html>
"""

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

pesan.attach(part1)
pesan.attach(part2)

with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(pengirim_email, password)
server.sendmail(pengirim_email, penerima_email, pesan.as_string())

Contoh ini mengirim email dengan versi teks biasa dan HTML. Ini seperti mengirim surat dengan amplop yang fancy!

Mengirim Lampiran sebagai Email

Apa jika kita ingin mengirim file dengan email kita? Tidak masalah! Ini bagaimana:

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

pengirim_email = "[email protected]"
penerima_email = "[email protected]"
password = "your_password"

pesan = MIMEMultipart()
pesan["From"] = pengirim_email
pesan["To"] = penerima_email
pesan["Subject"] = "Email dengan lampiran"

badan = "Ini adalah email dengan lampiran."
pesan.attach(MIMEText(badan, "plain"))

namafile = "document.pdf"  # Ganti dengan nama file Anda
lampiran = open(namafile, "rb")

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

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

pesan.attach(part)

with smtplib.SMTP("smtp.gmail.com", 587) as server:
server.starttls()
server.login(pengirim_email, password)
server.sendmail(pengirim_email, penerima_email, pesan.as_string())

Skrip ini meletakkan file sebagai lampiran email Anda. Ini seperti menambahkan paket ke surat Anda!

Mengirim Email Menggunakan Server SMTP Gmail

Selama tutorial ini, kita telah menggunakan server SMTP Gmail. Berikut adalah tabel referensi cepat untuk server SMTP umum:

Penyedia Email Server SMTP Port
Gmail smtp.gmail.com 587
Outlook smtp-mail.outlook.com 587
Yahoo Mail smtp.mail.yahoo.com 587

Ingat, saat menggunakan Gmail, Anda mungkin perlu mengaktifkan "Akses Aplikasi Lebih Tidak Aman" atau menggunakan "Kata Sandi Aplikasi" jika Anda memiliki Otentikasi Dua Faktor yang diaktifkan.

Dan itu adalah semua, teman-teman! Anda sekarang memiliki kekuatan untuk mengirim email seperti seorang pro Python. Ingat, dengan kekuatan besar datang tanggung jawab besar - gunakan keahlian mengirim email baru Anda dengan bijak! Selamat coding, dan semoga email Anda selalu mencapai tujuannya!

Credits: Image by storyset