日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Python3SMTP發(fā)送郵件

Python3 SMTP發(fā)送郵件

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

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的鄄城網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

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 訪問(wèn),并使用 sendmail 方法來(lái)發(fā)送信息。

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

$ python3 test.py 
郵件發(fā)送成功

查看我們的收件箱(一般在垃圾箱),就可以查看到郵件信息:

如果我們本機(jī)沒(méi)有 sendmail 訪問(wèn),也可以使用其他服務(wù)商的 SMTP 訪問(wèn)(QQ、網(wǎng)易、Google等)。

實(shí)例

#!/usr/bin/python3

import

smtplib

from

email
.
mime
.
text

import

MIMEText

from

email
.
header

import

Header

# 第三方 SMTP 服務(wù)

mail_host
=
"
smtp.XXX.com
"

#設(shè)置服務(wù)器

mail_user
=
"
XXXX
"

#用戶名

mail_pass
=
"
XXXXXX
"

#口令

sender
=
'
from@runoob.com
'

receivers
=
[
'
429240967@qq.com
'
]

# 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱

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

message
[
'
From
'
]
=
Header
(
"
菜鳥教程
"
,
'
utf-8
'
)

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

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

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

try
:
smtpObj
=
smtplib
.
SMTP
(
)

smtpObj
.
connect
(
mail_host
,
25
)

# 25 為 SMTP 端口號(hào)

smtpObj
.
login
(
mail_user
,
mail_pass
)

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

print

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

except

smtplib
.
SMTPException
:
print

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


使用Python發(fā)送HTML格式的郵件

Python發(fā)送HTML格式的郵件與發(fā)送純文本消息的郵件不同之處就是將MIMEText中_subtype設(shè)置為html。具體代碼如下:

實(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郵箱或者其他郵箱

mail_msg
=
"""

Python 郵件發(fā)送測(cè)試...

這是一個(gè)鏈接


"""

message
=
MIMEText
(
mail_msg
,
'
html
'
,
'
utf-8
'
)

message
[
'
From
'
]
=
Header
(
"
菜鳥教程
"
,
'
utf-8
'
)

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ā)送郵件
"
)

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

$ python3 test.py 
郵件發(fā)送成功

查看我們的收件箱(一般在垃圾箱),就可以查看到郵件信息:


Python 發(fā)送帶附件的郵件

發(fā)送帶附件的郵件,首先要?jiǎng)?chuàng)建MIMEMultipart()實(shí)例,然后構(gòu)造附件,如果有多個(gè)附件,可依次構(gòu)造,最后利用smtplib.smtp發(fā)送。

實(shí)例

#!/usr/bin/python3

import

smtplib

from

email
.
mime
.
text

import

MIMEText

from

email
.
mime
.
multipart

import

MIMEMultipart

from

email
.
header

import

Header

sender
=
'
from@runoob.com
'

receivers
=
[
'
429240967@qq.com
'
]

# 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱

#創(chuàng)建一個(gè)帶附件的實(shí)例

message
=
MIMEMultipart
(
)

message
[
'
From
'
]
=
Header
(
"
菜鳥教程
"
,
'
utf-8
'
)

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

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

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

#郵件正文內(nèi)容

message
.
attach
(
MIMEText
(
'
這是菜鳥教程Python 郵件發(fā)送測(cè)試……
'
,
'
plain
'
,
'
utf-8
'
)
)

# 構(gòu)造附件1,傳送當(dāng)前目錄下的 test.txt 文件

att1
=
MIMEText
(
open
(
'
test.txt
'
,
'
rb
'
)
.
read
(
)
,
'
base64
'
,
'
utf-8
'
)

att1
[
"
Content-Type
"
]
=
'
application/octet-stream
'

# 這里的filename可以任意寫,寫什么名字,郵件中顯示什么名字

att1
[
"
Content-Disposition
"
]
=
'
attachment; filename="test.txt"
'

message
.
attach
(
att1
)

# 構(gòu)造附件2,傳送當(dāng)前目錄下的 runoob.txt 文件

att2
=
MIMEText
(
open
(
'
runoob.txt
'
,
'
rb
'
)
.
read
(
)
,
'
base64
'
,
'
utf-8
'
)

att2
[
"
Content-Type
"
]
=
'
application/octet-stream
'

att2
[
"
Content-Disposition
"
]
=
'
attachment; filename="runoob.txt"
'

message
.
attach
(
att2
)

try
:
smtpObj
=
smtplib
.
SMTP
(
'
localhost
'
)

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

print

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

except

smtplib
.
SMTPException
:
print

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

$ python3 test.py 
郵件發(fā)送成功

查看我們的收件箱(一般在垃圾箱),就可以查看到郵件信息:


在 HTML 文本中添加圖片

郵件的 HTML 文本中一般郵件服務(wù)商添加外鏈?zhǔn)菬o(wú)效的,正確添加圖片的實(shí)例如下所示:

實(shí)例

#!/usr/bin/python3

import

smtplib

from

email
.
mime
.
image

import

MIMEImage

from

email
.
mime
.
multipart

import

MIMEMultipart

from

email
.
mime
.
text

import

MIMEText

from

email
.
header

import

Header

sender
=
'
from@runoob.com
'

receivers
=
[
'
429240967@qq.com
'
]

# 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱

msgRoot
=
MIMEMultipart
(
'
related
'
)

msgRoot
[
'
From
'
]
=
Header
(
"
菜鳥教程
"
,
'
utf-8
'
)

msgRoot
[
'
To
'
]
=
Header
(
"
測(cè)試
"
,
'
utf-8
'
)

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

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

msgAlternative
=
MIMEMultipart
(
'
alternative
'
)

msgRoot
.
attach
(
msgAlternative
)

mail_msg
=
"""

Python 郵件發(fā)送測(cè)試...

菜鳥教程鏈接

圖片演示:


"""

msgAlternative
.
attach
(
MIMEText
(
mail_msg
,
'
html
'
,
'
utf-8
'
)
)

# 指定圖片為當(dāng)前目錄

fp
=
open
(
'
test.png
'
,
'
rb
'
)

msgImage
=
MIMEImage
(
fp
.
read
(
)
)

fp
.
close
(
)

# 定義圖片 ID,在 HTML 文本中引用

msgImage
.
add_header
(
'
Content-ID
'
,
'

'
)

msgRoot
.
attach
(
msgImage
)

try
:
smtpObj
=
smtplib
.
SMTP
(
'
localhost
'
)

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

print

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

except

smtplib
.
SMTPException
:
print

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

$ python3 test.py 
郵件發(fā)送成功

查看我們的收件箱(如果在垃圾箱可能需要移動(dòng)到收件箱才可正常顯示),就可以查看到郵件信息:


使用第三方 SMTP 服務(wù)發(fā)送

這里使用了 QQ 郵箱(你也可以使用 163,Gmail等)的 SMTP 服務(wù),需要做以下配置:

QQ 郵箱通過(guò)生成授權(quán)碼來(lái)設(shè)置密碼:

QQ 郵箱 SMTP 服務(wù)器地址:smtp.qq.com,ssl 端口:465。

以下實(shí)例你需要修改:發(fā)件人郵箱(你的QQ郵箱),密碼,收件人郵箱(可發(fā)給自己)。

QQ SMTP

#!/usr/bin/python3

import

smtplib

from

email
.
mime
.
text

import

MIMEText

from

email
.
utils

import

formataddr

my_sender
=
'
429240967@qq.com
'

# 發(fā)件人郵箱賬號(hào)

my_pass
=
'
xxxxxxxxxx
'

# 發(fā)件人郵箱密碼

my_user
=
'
429240967@qq.com
'

# 收件人郵箱賬號(hào),我這邊發(fā)送給自己

def

mail
(
)
:
ret
=
True

try
:
msg
=
MIMEText
(
'
填寫郵件內(nèi)容
'
,
'
plain
'
,
'
utf-8
'
)

msg
[
'
From
'
]
=
formataddr
(
[
"
FromRunoob
"
,
my_sender
]
)

# 括號(hào)里的對(duì)應(yīng)發(fā)件人郵箱昵稱、發(fā)件人郵箱賬號(hào)

msg
[
'
To
'
]
=
formataddr
(
[
"
FK
"
,
my_user
]
)

# 括號(hào)里的對(duì)應(yīng)收件人郵箱昵稱、收件人郵箱賬號(hào)

msg
[
'
Subject
'
]
=
"
菜鳥教程發(fā)送郵件測(cè)試
"

# 郵件的主題,也可以說(shuō)是標(biāo)題

server
=
smtplib
.
SMTP_SSL
(
"
smtp.qq.com
"
,
465
)

# 發(fā)件人郵箱中的SMTP服務(wù)器,端口是25

server
.
login
(
my_sender
,
my_pass
)

# 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、郵箱密碼

server
.
sendmail
(
my_sender
,
[
my_user
,
]
,
msg
.
as_string
(
)
)

# 括號(hào)中對(duì)應(yīng)的是發(fā)件人郵箱賬號(hào)、收件人郵箱賬號(hào)、發(fā)送郵件

server
.
quit
(
)

# 關(guān)閉連接

except

Exception
:
# 如果 try 中的語(yǔ)句沒(méi)有執(zhí)行,則會(huì)執(zhí)行下面的 ret=False

ret
=
False

return

ret

ret
=
mail
(
)

if

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

else
:
print
(
"
郵件發(fā)送失敗
"
)

$ python test.py 
郵件發(fā)送成功

發(fā)送成功后,登陸收件人郵箱即可查看:

更多內(nèi)容請(qǐng)參閱:。


當(dāng)前題目:Python3SMTP發(fā)送郵件
分享路徑:http://www.dlmjj.cn/article/dphpiso.html