Topik ini memberikan contoh panggilan SMTP dalam Python 2.
Kirim email menggunakan Python melalui protokol SMTP
# -*- coding:utf-8 -*-
import smtplib
import email
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email.mime.application import MIMEApplication
from email.header import Header
# Alamat pengirim. Alamat ini dibuat di Konsol.
username = '***'
# Kata sandi pengirim. Kata sandi ini dibuat di Konsol.
password = '***'
# Alamat balasan kustom.
replyto = '***'
# Alamat penerima atau daftar alamat penerima. Beberapa penerima didukung.
# Untuk jumlah penerima yang diizinkan, lihat spesifikasi Produk.
#receivers = ['address1@example.com', 'address2@example.com']
#rcptto = ','.join(rcptto)
rcptto = '***'
# Bangun struktur alternatif.
msg = MIMEMultipart('alternative')
msg['Subject'] = Header('Custom email subject'.decode('utf-8')).encode()
msg['From'] = '%s <%s>' % (Header('Custom sender nickname'.decode('utf-8')).encode(), username)
msg['To'] = rcptto
msg['Reply-to'] = replyto
msg['Message-id'] = email.utils.make_msgid()
msg['Date'] = email.utils.formatdate()
# Bangun bagian text/plain dari struktur alternatif.
textplain = MIMEText('Custom plain text content', _subtype='plain', _charset='UTF-8')
msg.attach(textplain)
# Bangun bagian text/html dari struktur alternatif.
texthtml = MIMEText('Custom HTML content', _subtype='html', _charset='UTF-8')
msg.attach(texthtml)
# Kirim email.
try:
client = smtplib.SMTP()
# Untuk Python 2.7 atau versi lebih baru, buat klien dengan cara ini untuk menggunakan SSL.
#client = smtplib.SMTP_SSL()
# Port SMTP standar adalah 25 atau 80.
client.connect('smtpdm.aliyun.com', 25)
# Aktifkan mode DEBUG.
client.set_debuglevel(0)
client.login(username, password)
# Alamat pengirim dan alamat autentikasi harus sama.
# Catatan: Untuk mendapatkan nilai kembali perintah DATA, gunakan langsung
# metode SMTP.mail, SMTP.rcpt, dan SMTP.data.
client.sendmail(username, rcptto, msg.as_string())
# Untuk mengirim ke beberapa penerima:
#client.sendmail(username, receivers, msg.as_string())
client.quit()
print 'Email berhasil dikirim!'
except smtplib.SMTPConnectError, e:
print 'Gagal mengirim email. Kesalahan koneksi: ', e.smtp_code, e.smtp_error
except smtplib.SMTPAuthenticationError, e:
print 'Gagal mengirim email. Kesalahan autentikasi: ', e.smtp_code, e.smtp_error
except smtplib.SMTPSenderRefused, e:
print 'Gagal mengirim email. Pengirim ditolak: ', e.smtp_code, e.smtp_error
except smtplib.SMTPRecipientsRefused, e:
print 'Gagal mengirim email. Penerima ditolak: ', e.smtp_code, e.smtp_error
except smtplib.SMTPDataError, e:
print 'Gagal mengirim email. Kesalahan data: ', e.smtp_code, e.smtp_error
except smtplib.SMTPException, e:
print 'Gagal mengirim email. ', e.message
except Exception, e:
print 'Terjadi pengecualian saat mengirim email. ', str(e)