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!
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:
- Kita mengimpor pustaka
smtplib
. - Kita mengatur email pengirim, penerima email, dan kata sandi.
- Kita membuat pesan sederhana.
- Kita menyambung ke server SMTP Gmail (lebih banyak tentang ini nanti).
- Kita memulai TLS untuk keamanan.
- Kita log in ke akun email kita.
- 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