全部产品
Search
文档中心

Direct Mail:Contoh panggilan SMTP untuk Python 2

更新时间:Nov 10, 2025

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)