招生電話:0816-8119777
新聞詳情

python教程—— SMTP發(fā)送郵件

發(fā)表時(shí)間:2023-05-24 17:35

SMTP(Simple Mail Transfer Protocol)即簡(jiǎn)單郵件傳輸協(xié)議,它是一組用于由源地址到目的地址傳送郵件的規(guī)則,由它來(lái)控制信件的中轉(zhuǎn)方式。


python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝。


Python創(chuàng)建 SMTP 對(duì)象語(yǔ)法如下:


import smtplib


smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

參數(shù)說(shuō)明:


host: SMTP 服務(wù)器主機(jī)。 你可以指定主機(jī)的ip地址或者域名如:runoob.com,這個(gè)是可選參數(shù)。

port: 如果你提供了 host 參數(shù), 你需要指定 SMTP 服務(wù)使用的端口號(hào),一般情況下SMTP端口號(hào)為25。

local_hostname: 如果SMTP在你的本機(jī)上,你只需要指定服務(wù)器地址為 localhost 即可。

Python SMTP對(duì)象使用sendmail方法發(fā)送郵件,語(yǔ)法如下:


SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

參數(shù)說(shuō)明:


from_addr: 郵件發(fā)送者地址。

to_addrs: 字符串列表,郵件發(fā)送地址。

msg: 發(fā)送消息

這里要注意一下第三個(gè)參數(shù),msg是字符串,表示郵件。我們知道郵件一般由標(biāo)題,發(fā)信人,收件人,郵件內(nèi)容,附件等構(gòu)成,發(fā)送郵件的時(shí)候,要注意msg的格式。這個(gè)格式就是smtp協(xié)議中定義的格式。


實(shí)例

以下是一個(gè)使用Python發(fā)送郵件簡(jiǎn)單的實(shí)例:


實(shí)例

#!/usr/bin/python3


import smtplib

from email.mime.text import MIMEText

from email.header import Header


sender = 'from@runoob.com'

receivers = ['429240967@qq.com']   # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱


# 三個(gè)參數(shù):第一個(gè)為文本內(nèi)容,第二個(gè) plain 設(shè)置文本格式,第三個(gè) utf-8 設(shè)置編碼

message = MIMEText('Python 郵件發(fā)送測(cè)試...', 'plain', 'utf-8')

message['From'] = Header("菜鳥教程", 'utf-8')     # 發(fā)送者

message['To'] =   Header("測(cè)試", 'utf-8')          # 接收者


subject = 'Python SMTP 郵件測(cè)試'

message['Subject'] = Header(subject, 'utf-8')



try:

    smtpObj = smtplib.SMTP('localhost')

    smtpObj.sendmail(sender, receivers, message.as_string())

    print ("郵件發(fā)送成功")

except smtplib.SMTPException:

    print ("Error: 無(wú)法發(fā)送郵件")

我們使用三個(gè)引號(hào)來(lái)設(shè)置郵件信息,標(biāo)準(zhǔn)郵件需要三個(gè)頭部信息: From, To, 和 Subject ,每個(gè)信息直接使用空行分割。


我們通過(guò)實(shí)例化 smtplib 模塊的 SMTP 對(duì)象 smtpObj 來(lái)連接到 SMTP 訪問,并使用 sendmail 方法來(lái)發(fā)送信息。


執(zhí)行以上程序,如果你本機(jī)安裝sendmail,就會(huì)輸出:


$ python3 test.py

郵件發(fā)送成功


辦公室/傳真:0816-8119666
招生辦:0816- 8119777
地址:四川省綿陽(yáng)市園藝山教育園區(qū)
郵箱:mzsyxxzsb@sina.com
官方服務(wù)號(hào)
官方訂閱號(hào)
官方視頻號(hào)
官方抖音號(hào)
官方微博號(hào)
北京英才苑
四川省電化教育館
綿陽(yáng)教育體育館
綿陽(yáng)招生考試網(wǎng)
友情鏈接: