python 发送邮件正文字体设置_python 文字 坐标python smtplib模块发送SSL/TLS安全邮件实例...
python的smtplib提供了一種很方便的途徑發(fā)送電子郵件。它對(duì)smtp協(xié)議進(jìn)行了簡(jiǎn)單的封裝。
smtp協(xié)議的基本命令包括:
HELO 向服務(wù)器標(biāo)識(shí)用戶身份
MAIL 初始化郵件傳輸 mail from:
RCPT 標(biāo)識(shí)單個(gè)的郵件接收人;常在MAIL命令后面,可有多個(gè)rcpt to:
DATA 在單個(gè)或多個(gè)RCPT命令后,表示所有的郵件接收人已標(biāo)識(shí),并初始化數(shù)據(jù)傳輸,以.結(jié)束
VRFY 用于驗(yàn)證指定的用戶/郵箱是否存在;由于安全方面的原因,服務(wù)器常禁止此命令
EXPN 驗(yàn)證給定的郵箱列表是否存在,擴(kuò)充郵箱列表,也常被禁用
HELP 查詢服務(wù)器支持什么命令
NOOP 無(wú)操作,服務(wù)器應(yīng)響應(yīng)OK
QUIT 結(jié)束會(huì)話
RSET 重置會(huì)話,當(dāng)前傳輸被取消
MAIL FROM 指定發(fā)送者地址
RCPT TO 指明的接收者地址
一般smtp會(huì)話有兩種方式,一種是郵件直接投遞,就是說,比如你要發(fā)郵件�zzz@163,那就直接連接163的郵件服務(wù)器,把信投�zzz@163; 另一種是驗(yàn)證過后的發(fā)信,它的過程是,比如你要發(fā)郵件�zzz@163,你不是直接投到163,而是通過自己在sina的另一個(gè)郵箱來(lái)發(fā)。這樣就要先連接sina的smtp服務(wù)器,然后認(rèn)證,之后在把要發(fā)到163的信件投到sina上,sina會(huì)幫你把信投遞到163。
第一種方式的命令流程基本是這樣:1. helo
2. mail from
3. rcpt to
4. data
5. quit
但是第一種發(fā)送方式一般有限制的,就是rcpt to指定的這個(gè)郵件接收者必須在這個(gè)服務(wù)器上存在,否則是不會(huì)接收的。 先看看代碼: 代碼如下:
#-*- encoding: gb2312 -*-
import os, sys, string
import smtplib
# 郵件服務(wù)器地址
mailserver = "smtp.163"
# smtp會(huì)話過程中的mail from地址
from_addr = "asfgysg@zxsdf"
# smtp會(huì)話過程中的rcpt to地址
to_addr = "zhaoweikid@163"
# 信件內(nèi)容
msg = "test mail"
svr = smtplib.SMTP(mailserver)
# 設(shè)置為調(diào)試模式,就是在會(huì)話過程中會(huì)有輸出信息
svr.set_debuglevel(1)
# helo命令,docmd方法包括了獲取對(duì)方服務(wù)器返回信息
svr.docmd("HELO server")
# mail from, 發(fā)送郵件發(fā)送者
svr.docmd("MAIL FROM: " % from_addr)
# rcpt to, 郵件接收者
svr.docmd("RCPT TO: " % to_addr)
# data命令,開始發(fā)送數(shù)據(jù)
svr.docmd("DATA")
# 發(fā)送正文數(shù)據(jù)
svr.send(msg)
# 比如以 . 作為正文發(fā)送結(jié)束的標(biāo)記,用send發(fā)送的,所以要用getreply獲取返回信息
svr.send(" . ")
svr.getreply()
# 發(fā)送結(jié)束,退出
svr.quit()
注意的是,163是有反垃圾郵件功能的,想上面的這種投遞郵件的方法不一定能通過反垃圾郵件系統(tǒng)的檢測(cè)的。所以一般不推薦個(gè)人這樣發(fā)送。
第二種有點(diǎn)不一樣:
W WW.002PC .COM從python smtplib模塊發(fā)送SSL/TLS安全郵件實(shí)例分析來(lái)看,對(duì)python smtplib模塊發(fā)送SSL/TLS安全郵件實(shí)例的結(jié)果。
1.ehlo
2.auth login
3.mail from
4.rcpt to
5.data
6.quit
相對(duì)于第一種來(lái)說,多了一個(gè)認(rèn)證過程,就是auth login這個(gè)過程。 代碼如下:
#-*- encoding: gb2312 -*-
import os, sys, string
import smtplib
import base64
# 郵件服務(wù)器地址
mailserver = "smtp.163"
# 郵件用戶名
username = "xxxxxx@163"
# 密碼
password = "xxxxxxx"
# smtp會(huì)話過程中的mail from地址
from_addr = "xxxxxx@163"
# smtp會(huì)話過程中的rcpt to地址
to_addr = "yyyyyy@163"
# 信件內(nèi)容
msg = "my test mail"
svr = smtplib.SMTP(mailserver)
# 設(shè)置為調(diào)試模式,就是在會(huì)話過程中會(huì)有輸出信息
svr.set_debuglevel(1)
# ehlo命令,docmd方法包括了獲取對(duì)方服務(wù)器返回信息
svr.docmd("EHLO server")
# auth login 命令
svr.docmd("AUTH LOGIN")
# 發(fā)送用戶名,是base64編碼過的,用send發(fā)送的,所以要用getreply獲取返回信息
svr.send(base64.encodestring(username))
svr.getreply()
# 發(fā)送密碼
svr.send(base64.encodestring(password))
svr.getreply()
# mail from, 發(fā)送郵件發(fā)送者
svr.docmd("MAIL FROM: " % from_addr)
# rcpt to, 郵件接收者
svr.docmd("RCPT TO: " % to_addr)
# data命令,開始發(fā)送數(shù)據(jù)
svr.docmd("DATA")
# 發(fā)送正文數(shù)據(jù)
svr.send(msg)
# 比如以 . 作為正文發(fā)送結(jié)束的標(biāo)記
svr.send(" . ")
svr.getreply()
# 發(fā)送結(jié)束,退出
svr.quit()
上面說的是最普通的情況,但是不能忽略的是現(xiàn)在好多企業(yè)郵件是支持安全郵件的,就是通過SSL發(fā)送的郵件,這個(gè)怎么發(fā)呢?SMTP對(duì)SSL安全郵件的支持有兩種方案,一種老的是專門開啟一個(gè)465端口來(lái)接收ssl郵件,另一種更新的做法是在標(biāo)準(zhǔn)的25端口的smtp上增加一個(gè)starttls的命令來(lái)支持。
更多:python 文字 坐標(biāo)python smtplib模塊發(fā)送SSL/TLS安全郵件實(shí)例
https://www.002pc.comhttps://www.002pc.com/python/107.html
你可能感興趣的TLS,python,SSL,smtplib,實(shí)例,模塊
No alive nodes found in your cluster
0踩
賞
0 贊
總結(jié)
以上是生活随笔為你收集整理的python 发送邮件正文字体设置_python 文字 坐标python smtplib模块发送SSL/TLS安全邮件实例...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse 注释星号没对齐_36 个
- 下一篇: android线程间通信的几种方法_An