日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

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

Python3 SMTP發(fā)送郵件

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

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

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

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

import smtplib

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

參數(shù)說明:

  • host: SMTP 服務(wù)器主機。 你可以指定主機的ip地址或者域名如:runoob.com,這個是可選參數(shù)。
  • port: 如果你提供了 host 參數(shù), 你需要指定 SMTP 服務(wù)使用的端口號,一般情況下SMTP端口號為25。
  • local_hostname: 如果SMTP在你的本機上,你只需要指定服務(wù)器地址為 localhost 即可。

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

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

參數(shù)說明:

  • from_addr: 郵件發(fā)送者地址。
  • to_addrs: 字符串列表,郵件發(fā)送地址。
  • msg: 發(fā)送消息

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

實例

以下是一個使用Python發(fā)送郵件簡單的實例:

實例

#!/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郵箱或者其他郵箱

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

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

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

# 發(fā)送者

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

# 接收者

subject
=
'
Python SMTP 郵件測試
'

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: 無法發(fā)送郵件
"
)

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

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

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

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

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

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

實例

#!/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ā)送測試...
'
,
'
plain
'
,
'
utf-8
'
)

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

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

subject
=
'
Python SMTP 郵件測試
'

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

try
:
smtpObj
=
smtplib
.
SMTP
(
)

smtpObj
.
connect
(
mail_host
,
25
)

# 25 為 SMTP 端口號

smtpObj
.
login
(
mail_user
,
mail_pass
)

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

print

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

except

smtplib
.
SMTPException
:
print

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


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

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

實例

#!/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ā)送測試...

這是一個鏈接


"""

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

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

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

subject
=
'
Python SMTP 郵件測試
'

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: 無法發(fā)送郵件
"
)

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

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

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


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

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

實例

#!/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)建一個帶附件的實例

message
=
MIMEMultipart
(
)

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

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

subject
=
'
Python SMTP 郵件測試
'

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

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

message
.
attach
(
MIMEText
(
'
這是菜鳥教程Python 郵件發(fā)送測試……
'
,
'
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: 無法發(fā)送郵件
"
)

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

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


在 HTML 文本中添加圖片

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

實例

#!/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
(
"
測試
"
,
'
utf-8
'
)

subject
=
'
Python SMTP 郵件測試
'

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

msgAlternative
=
MIMEMultipart
(
'
alternative
'
)

msgRoot
.
attach
(
msgAlternative
)

mail_msg
=
"""

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

菜鳥教程鏈接

圖片演示:


"""

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: 無法發(fā)送郵件
"
)

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

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


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

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

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

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

以下實例你需要修改:發(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ā)件人郵箱賬號

my_pass
=
'
xxxxxxxxxx
'

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

my_user
=
'
429240967@qq.com
'

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

def

mail
(
)
:
ret
=
True

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

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

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

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

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

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

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

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

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

server
.
login
(
my_sender
,
my_pass
)

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

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

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

server
.
quit
(
)

# 關(guān)閉連接

except

Exception
:
# 如果 try 中的語句沒有執(zhí)行,則會執(zhí)行下面的 ret=False

ret
=
False

return

ret

ret
=
mail
(
)

if

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

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

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

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

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


網(wǎng)頁標(biāo)題:Python3SMTP發(fā)送郵件
文章來源:http://www.5511xx.com/article/dphpiso.html