Menggunakan SMTP Server dan SMTPLib di Python

Ridwan Fajar 14 Februari 2017

Menggunakan SMTP Server dan SMTPLib di Python

Kadangkala ketika ingin membuat fitur kirim e-mail di dalam aplikasi yang kita kembangkan, kita harus memasang mailserver yang cukup menyita ukuran harddisk padahal hanya untuk kirim e-mail saja.

Python memiliki sebuah modul bernama SMTP Server yang dapat digunakan untuk menerima e-mail dari client dan menampilkan isinya ke stdout alias konsol. Untuk menjalankannya, kamu cukup mengeksekusi perintah berikut di konsol:

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

Dimana 1025 adalah port untuk menerima e-mail yang datang. Bila kamu ingin menggunakan port 25 pastikan port tersebut tidak dipakai. Sekarang mari kita buat contoh client yang mengirim e-mail ke SMTP server ini:

import smtplib

sender = 'mikail@website.com'
recipient = ['sonanjaya@website.com']

message = """From: From Person <%s>
To: To Person <%s>
Subject: Testing SMTP E-Mail

Pesan ini dikirim melalui smtplib dan diterima oleh modul SMTP Server Python.

""" % (sender, recipient)

try:

   	smtpObj = smtplib.SMTP('localhost', 1025)
   	smtpObj.sendmail(sender, recipient, message)    

   	print "Mengirim e-mail berhasil :D..."

except Exception, e:

	print str(e)
   	print "Error: e-mail gagal terkirim :(..."

Pada kode diatas dengan menggunakan smtplib kamu cukup mengakses URL dan port yang dituju, lalu kirim e-mail dengan menggunakan method sendmail() dengan melewatkan pengirim, penerima, dan pesan.

Baca juga: Kumpulan Tutorial Belajar Bahasa Pemrograman Python

Bila kita eksekusi maka output pada SMTP Server akan tampak seperti berikut:

client:

$ python send_email.py
Mengirim e-mail berhasil :D...

server:

$ python -m smtpd -n -c DebuggingServer localhost:1025
---------- MESSAGE FOLLOWS ----------
From: From Person <mikail@website.com>
To: To Person <['sonanjaya@website.com']>
Subject: Testing SMTP E-Mail
X-Peer: 127.0.0.1

Pesan ini dikirim melalui smtplib dan diterima oleh modul SMTP Server Python.

------------ END MESSAGE ------------

(rfs/python)