Mode Permintaan SMTP
Berikut adalah alur sesi SMTP.
S: 220 EngageLab Inbound Server ESMTP Haraka 2.2.4 siap
C: ehlo ifaxin.com
S: 250-EngageLab Inbound Server Halo, Haraka siap melayani Anda.
S: 250-PIPELINING
S: 250-8BITMIME
S: 250-SIZE 16000000
S: 250 AUTH LOGIN
C: AUTH LOGIN base64(api_user)
S: 334 UGFzc3dvcmQ6
C: base64(api_key)
S: 235 Autentikasi berhasil
C: mail FROM:<support@ifaxin.com>
S: 250 pengirim <support@ifaxin.com> OK
C: rcpt TO:<ben@ifaxin.com>
S: 250 penerima <ben@ifaxin.com> OK
C: data
S: 354 silakan lanjutkan
C: ... ...
C: .
S: 250 #1426390015358_15_6484_8661.sc-10_10_127_51-inbound#Queued
C: quit
S: 221 EngageLab Inbound Server menutup koneksi. Semoga hari Anda menyenangkan
S: 220 EngageLab Inbound Server ESMTP Haraka 2.2.4 siap
C: ehlo ifaxin.com
S: 250-EngageLab Inbound Server Halo, Haraka siap melayani Anda.
S: 250-PIPELINING
S: 250-8BITMIME
S: 250-SIZE 16000000
S: 250 AUTH LOGIN
C: AUTH LOGIN base64(api_user)
S: 334 UGFzc3dvcmQ6
C: base64(api_key)
S: 235 Autentikasi berhasil
C: mail FROM:<support@ifaxin.com>
S: 250 pengirim <support@ifaxin.com> OK
C: rcpt TO:<ben@ifaxin.com>
S: 250 penerima <ben@ifaxin.com> OK
C: data
S: 354 silakan lanjutkan
C: ... ...
C: .
S: 250 #1426390015358_15_6484_8661.sc-10_10_127_51-inbound#Queued
C: quit
S: 221 EngageLab Inbound Server menutup koneksi. Semoga hari Anda menyenangkan
Tampilkan blok kode ini di jendela mengambang
Catatan: Panggilan SMTP akan mengembalikan 536 frequency limited, artinya total panggilan API dan SMTP per apiuser per menit tidak boleh melebihi 30.000 kali.
Menggunakan Fungsi Label untuk Akses SMTP
Saat verifikasi, ID label digabungkan setelah API_USER.
api_user + '#' + label_id
Tanpa label:
S: 250-EngageLab Inbound Server Halo, Haraka siap melayani Anda.
S: 250-PIPELINING
S: 250-8BITMIME
S: 250-SIZE 16000000
S: 250-STARTTLS
S: 250 AUTH LOGIN
C: AUTH LOGIN base64(api_user)
S: 250-EngageLab Inbound Server Halo, Haraka siap melayani Anda.
S: 250-PIPELINING
S: 250-8BITMIME
S: 250-SIZE 16000000
S: 250-STARTTLS
S: 250 AUTH LOGIN
C: AUTH LOGIN base64(api_user)
Tampilkan blok kode ini di jendela mengambang
Dengan label:
S: 250-EngageLab Inbound Server Halo, Haraka siap melayani Anda.
S: 250-PIPELINING
S: 250-8BITMIME
S: 250-SIZE 16000000
S: 250-STARTTLS
S: 250 AUTH LOGIN
C: AUTH LOGIN base64(api_user + '#' + label_id)
S: 250-EngageLab Inbound Server Halo, Haraka siap melayani Anda.
S: 250-PIPELINING
S: 250-8BITMIME
S: 250-SIZE 16000000
S: 250-STARTTLS
S: 250 AUTH LOGIN
C: AUTH LOGIN base64(api_user + '#' + label_id)
Tampilkan blok kode ini di jendela mengambang
Cuplikan kode python:
# tanpa label:
s = SMTP('%s:%d' % (HOST, PORT))
s.set_debuglevel(DEBUG_MODE)
if USE_SSL:
s.starttls()
s.login(API_USER, API_KEY)
# dengan label:
s = SMTP('%s:%d' % (HOST, PORT))
s.set_debuglevel(DEBUG_MODE)
if USE_SSL:
s.starttls()
s.login(API_USER + '#' + label_id, API_KEY)
# tanpa label:
s = SMTP('%s:%d' % (HOST, PORT))
s.set_debuglevel(DEBUG_MODE)
if USE_SSL:
s.starttls()
s.login(API_USER, API_KEY)
# dengan label:
s = SMTP('%s:%d' % (HOST, PORT))
s.set_debuglevel(DEBUG_MODE)
if USE_SSL:
s.starttls()
s.login(API_USER + '#' + label_id, API_KEY)
Tampilkan blok kode ini di jendela mengambang
Mengirim Gambar Tertanam melalui SMTP
Contoh kode:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import smtplib
class MyEmail:
def __init__(self):
self.smtp = smtplib.SMTP()
self.login_username = 'postmaster@testdomain'
self.login_password = '*****'
self.sender = 'postmaster@testdomain' # sama dengan login_username
self.receiver = 'test123@qq.com'
self.host = 'smtp.engagelab.net'
self.port = 25
def connect(self):
self.smtp.connect(self.host)
def login(self):
self.smtp.login(self.login_username, self.login_password)
def send(self):
msg = MIMEMultipart('related')
msg['From'] = self.sender
msg['To'] = self.receiver
email_title = 'uji coba python gambar inline'
msg['Subject'] = email_title
content = MIMEText('konten gambar uji coba <img src="cid:image1" alt="gambar uji coba">', 'html', 'utf-8')
msg.attach(content)
fp = open('./test.png','rb')
img = MIMEImage(fp.read())
img.add_header('Content-ID','image1') #nilai content-id adalah cid di html
msg.attach(img)
self.smtp.sendmail(self.sender, self.receiver, msg.as_string())
def quit(self):
self.smtp.quit()
def send():
myemail = MyEmail()
myemail.connect()
myemail.login()
myemail.send()
myemail.quit()
if __name__ == "__main__":
send()
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import smtplib
class MyEmail:
def __init__(self):
self.smtp = smtplib.SMTP()
self.login_username = 'postmaster@testdomain'
self.login_password = '*****'
self.sender = 'postmaster@testdomain' # sama dengan login_username
self.receiver = 'test123@qq.com'
self.host = 'smtp.engagelab.net'
self.port = 25
def connect(self):
self.smtp.connect(self.host)
def login(self):
self.smtp.login(self.login_username, self.login_password)
def send(self):
msg = MIMEMultipart('related')
msg['From'] = self.sender
msg['To'] = self.receiver
email_title = 'uji coba python gambar inline'
msg['Subject'] = email_title
content = MIMEText('konten gambar uji coba <img src="cid:image1" alt="gambar uji coba">', 'html', 'utf-8')
msg.attach(content)
fp = open('./test.png','rb')
img = MIMEImage(fp.read())
img.add_header('Content-ID','image1') #nilai content-id adalah cid di html
msg.attach(img)
self.smtp.sendmail(self.sender, self.receiver, msg.as_string())
def quit(self):
self.smtp.quit()
def send():
myemail = MyEmail()
myemail.connect()
myemail.login()
myemail.send()
myemail.quit()
if __name__ == "__main__":
send()
Tampilkan blok kode ini di jendela mengambang
Permintaan Protokol SMTP untuk Pengiriman Email Terenkripsi
Karena SSL V3.0 kini sudah tidak aman, pengguna dapat mengakses protokol enkripsi melalui SMTP yang mendukung tls-v1.0-v1.2 (tidak mendukung SSL 3.0 atau versi sebelumnya). Port 25 mendukung enkripsi starttls. Pengguna perlu menambahkan kode enkripsi pada kode, misalnya pada bahasa Java: props.setProperty("mail.smtp.starttls.enable", "true");










