全部產品
Search
文件中心

Direct Mail:SMTP 之 Python2 調用樣本

更新時間:Jul 13, 2024

本文介紹SMTP 之 Python2 調用樣本。

使用 Python 通過 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

# 寄件者地址,通過控制台建立的寄件者地址
username = '***'

# 寄件者密碼,通過控制台建立的寄件者密碼
password = '***'

# 自訂的回複地址
replyto = '***'

# 收件者地址或是地址清單,支援多個收件者,具體數量參考規格清單
#receivers = ['address1@example.com', 'address2@example.com']
#rcptto = ','.join(rcptto)
rcptto = '***'

# 構建alternative結構
msg = MIMEMultipart('alternative')
msg['Subject'] = Header('自訂信件主題'.decode('utf-8')).encode()
msg['From'] = '%s <%s>' % (Header('自訂發信暱稱'.decode('utf-8')).encode(), username)
msg['To'] = rcptto
msg['Reply-to'] = replyto
msg['Message-id'] = email.utils.make_msgid()
msg['Date'] = email.utils.formatdate() 

# 構建alternative的text/plain部分
textplain = MIMEText('自訂TEXT純文字部分', _subtype='plain', _charset='UTF-8')
msg.attach(textplain)

# 構建alternative的text/html部分
texthtml = MIMEText('自訂HTML超文本部分', _subtype='html', _charset='UTF-8')
msg.attach(texthtml)

# 發送郵件
try:
    client = smtplib.SMTP()
    #python 2.7以上版本,若需要使用SSL,可以這樣建立client
    #client = smtplib.SMTP_SSL()

    #SMTP普通連接埠為25或80
    client.connect('smtpdm.aliyun.com', 25)

    #開啟DEBUG模式
    client.set_debuglevel(0)

    client.login(username, password)

    #寄件者和認證地址必須一致
    #備忘:若想取到DATA命令傳回值,可參考smtplib的sendmaili封裝方法:
    #      使用SMTP.mail/SMTP.rcpt/SMTP.data方法
    client.sendmail(username, rcptto, msg.as_string())
    #支援多個收件者
    #client.sendmail(username, receivers, msg.as_string())

    client.quit()
    print '郵件發送成功!'
except smtplib.SMTPConnectError, e:
    print '郵件發送失敗,串連失敗:', e.smtp_code, e.smtp_error
except smtplib.SMTPAuthenticationError, e:
    print '郵件發送失敗,認證錯誤:', e.smtp_code, e.smtp_error
except smtplib.SMTPSenderRefused, e:
    print '郵件發送失敗,寄件者被拒絕:', e.smtp_code, e.smtp_error
except smtplib.SMTPRecipientsRefused, e:
    print '郵件發送失敗,收件者被拒絕:', e.smtp_code, e.smtp_error
except smtplib.SMTPDataError, e:
    print '郵件發送失敗,資料接收拒絕:', e.smtp_code, e.smtp_error
except smtplib.SMTPException, e:
    print '郵件發送失敗, ', e.message
except Exception, e:
    print '郵件發送異常, ', str(e)