SMTP Request Mode

Last updated:2023-03-14

The following is the session process.

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

        
This code block in the floating window

Note : the SMTP call returns 536 frequency limited, which means that the total number of API and SMTP calls per apiuser per minute cannot exceed 20000 times.

Using label function for SMTP access

When verify , the label ID  splicing  after  API_USER .

api_user + '#' + label_id

Without label:

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)

        
This code block in the floating window

With label:

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)

        
This code block in the floating window

python code snippet :

# without label: s = SMTP('%s:%d' % (HOST, PORT)) s.set_debuglevel(DEBUG_MODE) if USE_SSL: s.starttls() s.login(API_USER, API_KEY) # with 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)
          # without label:
s = SMTP('%s:%d' % (HOST, PORT))
s.set_debuglevel(DEBUG_MODE)
if USE_SSL:
    s.starttls()
s.login(API_USER, API_KEY)

# with 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)

        
This code block in the floating window

Send embedded pictures by SMTP

Code examples :

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()

        
This code block in the floating window

SMTP protocol requests sending mail encrypted

The hole vulnerability indicates that SSL V3.0 is completely insecure now, so users can access the encryption protocol through SMTP, which supports tls-v1.0-v1.2, and does not support SSL 3.0 or earlier. Ports 25  support starttls encryption. Users need to add a piece of encryption code to the code, such as Java language props.setProperty("mail.smtp.starttls.enable", "true");

在文档中心打开