SMTPリクエストメソッド

開発者にSMTPプロトコルの配信方法を提供します。以下はセッションプロセスです。

S: 220 EngageLab Inbound Server ESMTP Haraka 2.2.4 ready C: ehlo ifaxin.com S: 250-EngageLab Inbound Server Hello, Haraka is at your service. 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 Authentication successful C: mail FROM:<support@ifaxin.com> S: 250 sender <support@ifaxin.com> OK C: rcpt TO:<ben@ifaxin.com> S: 250 recipient <ben@ifaxin.com> OK C: data S: 354 go ahead, make my day C: ... ... C: . S: 250 #1426390015358_15_6484_8661.sc-10_10_127_51-inbound#Queued C: quit S: 221 EngageLab Inbound Server closing connection. Have a jolly good day
              
              S: 220 EngageLab Inbound Server ESMTP Haraka 2.2.4 ready

C: ehlo ifaxin.com

S: 250-EngageLab Inbound Server Hello, Haraka is at your service.
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 Authentication successful

C: mail FROM:<support@ifaxin.com>

S: 250 sender <support@ifaxin.com> OK

C: rcpt TO:<ben@ifaxin.com>

S: 250 recipient <ben@ifaxin.com> OK

C: data

S: 354 go ahead, make my day

C: ... ...
C: .

S: 250 #1426390015358_15_6484_8661.sc-10_10_127_51-inbound#Queued

C: quit

S: 221 EngageLab Inbound Server closing connection. Have a jolly good day

            
このコードブロックはフローティングウィンドウ内に表示されます

注意 SMTPコールが536 Frequency limitedを返す場合、各apiuserは1分間に30,000回を超えるAPIおよびSMTPコールを行うことはできません。

SMTP統合でのラベル機能の使用

API_USERを検証する際、ラベルID(label_id)を末尾に追加します。連結ルールは以下の通りです:

api_user + '#' + label_id

ラベルを使用せずに統合する場合:

S: 250-EngageLab Inbound Server Hello, Haraka is at your service. 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 Hello, Haraka is at your service.
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 Hello, Haraka is at your service. 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 Hello, Haraka is at your service.
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)

            
このコードブロックはフローティングウィンドウ内に表示されます

Pythonコードスニペット:

# ラベルを使用せずに統合する場合: s = SMTP('%s:%d' % (HOST, PORT)) s.set_debuglevel(DEBUG_MODE) if USE_SSL: s.starttls() s.login(API_USER, API_KEY) # ラベルを使用して統合する場合: s = SMTP('%s:%d' % (HOST, PORT)) s.set_debuglevel(DEBUG_MODE) if USE_SSL: s.starttls() s.login(API_USER + '#' + label_id, API_KEY)
              
              # ラベルを使用せずに統合する場合:
s = SMTP('%s:%d' % (HOST, PORT))
s.set_debuglevel(DEBUG_MODE)
if USE_SSL:
    s.starttls()
s.login(API_USER, API_KEY)

# ラベルを使用して統合する場合:
s = SMTP('%s:%d' % (HOST, PORT))
s.set_debuglevel(DEBUG_MODE)
if USE_SSL:
    s.starttls()
s.login(API_USER + '#' + label_id, API_KEY)

            
このコードブロックはフローティングウィンドウ内に表示されます

埋め込み画像付きメールのSMTP送信

コード例:

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' # same as 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 = 'python test inline image' msg['Subject'] = email_title content = MIMEText('test image content <img src="cid:image1" alt="xxxxx">', 'html', 'utf-8') msg.attach(content) fp = open('./test.png','rb') img = MIMEImage(fp.read()) img.add_header('Content-ID','image1') #the value of content-id is the cid in 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'    # same as 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 = 'python test inline image'
        msg['Subject'] = email_title
        content = MIMEText('test image content <img src="cid:image1" alt="xxxxx">', 'html', 'utf-8')
        msg.attach(content)

        fp = open('./test.png','rb')
        img = MIMEImage(fp.read())
        img.add_header('Content-ID','image1') #the value of content-id is the cid in 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()

            
このコードブロックはフローティングウィンドウ内に表示されます

SMTPプロトコルを使用した暗号化メール送信

POODLE脆弱性により、SSL v3.0は完全に安全ではなくなりました。そのため、SMTP暗号化プロトコルを使用する場合、Tls-v1.0-v1.2をサポートし、SSL 3.0およびそれ以前のバージョンはサポートされません。

ポート25はSTARTTLS暗号化をサポートしており、ユーザーはコード内に暗号化コードのセグメントを追加する必要があります。例えば、Javaでは以下のようにします:

props.setProperty("mail.smtp.starttls.enable", "true");
              
              props.setProperty("mail.smtp.starttls.enable", "true");

            
このコードブロックはフローティングウィンドウ内に表示されます
icon
お問い合わせ