国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

二種python發送郵件實例講解(python發郵件附件可以使用email模塊實現)

2019-11-25 18:36:33
字體:
來源:轉載
供稿:網友

可以使用Python的email模塊來實現帶有附件的郵件的發送。

SMTP (Simple Mail Transfer Protocol)
郵件傳送代理 (Mail Transfer Agent,MTA) 程序使用SMTP協議來發送電郵到接收者的郵件服務器。SMTP協議只能用來發送郵件,不能用來接收郵件。大多數的郵件發送服務器 (Outgoing Mail Server) 都是使用SMTP協議。SMTP協議的默認TCP端口號是25。

SMTP協議的一個重要特點是它能夠接力傳送郵件。它工作在兩種情況下:一是電子郵件從客戶機傳輸到服務器;二是從某一個服務器傳輸到另一個服務器。

POP3 (Post Office Protocol) & IMAP (Internet Message Access Protocol)
POP協議和IMAP協議是用于郵件接收的最常見的兩種協議。幾乎所有的郵件客戶端和服務器都支持這兩種協議。

POP3協議為用戶提供了一種簡單、標準的方式來訪問郵箱和獲取電郵。使用POP3協議的電郵客戶端通常的工作過程是:連接服務器、獲取所有信息并保存在用戶主機、從服務器刪除這些消息然后斷開連接。POP3協議的默認TCP端口號是110。

IMAP協議也提供了方便的郵件下載服務,讓用戶能進行離線閱讀。使用IMAP協議的電郵客戶端通常把信息保留在服務器上直到用戶顯式刪除。這種特性使得多個客戶端可以同時管理一個郵箱。IMAP協議提供了摘要瀏覽功能,可以讓用戶在閱讀完所有的郵件到達時間、主題、發件人、大小等信息后再決定是否下載。IMAP協議的默認TCP端口號是143。

郵件格式 (RFC 2822)
每封郵件都有兩個部分:郵件頭和郵件體,兩者使用一個空行分隔。

郵件頭每個字段 (Field) 包括兩部分:字段名和字段值,兩者使用冒號分隔。有兩個字段需要注意:From和Sender字段。From字段指明的是郵件的作者,Sender字段指明的是郵件的發送者。如果From字段包含多于一個的作者,必須指定Sender字段;如果From字段只有一個作者并且作者和發送者相同,那么不應該再使用Sender字段,否則From字段和Sender字段應該同時使用。

郵件體包含郵件的內容,它的類型由郵件頭的Content-Type字段指明。RFC 2822定義的郵件格式中,郵件體只是單純的ASCII編碼的字符序列。

MIME (Multipurpose Internet Mail Extensions) (RFC 1341)
MIME擴展郵件的格式,用以支持非ASCII編碼的文本、非文本附件以及包含多個部分 (multi-part) 的郵件體等。

Python email模塊

1. class email.message.Message

__getitem__,__setitem__實現obj[key]形式的訪問。
Msg.attach(playload): 向當前Msg添加playload。
Msg.set_playload(playload): 把整個Msg對象的郵件體設成playload。
Msg.add_header(_name, _value, **_params): 添加郵件頭字段。
2. class email.mime.base.MIMEBase(_maintype, _subtype, **_params)
所有MIME類的基類,是email.message.Message類的子類。

3. class email.mime.multipart.MIMEMultipart()

在3.0版本的email模塊 (Python 2.3-Python 2.5) 中,這個類位于email.MIMEMultipart.MIMEMultipart。
這個類是MIMEBase的直接子類,用來生成包含多個部分的郵件體的MIME對象。

4. class email.mime.text.MIMEText(_text)

使用字符串_text來生成MIME對象的主體文本。

代碼實現

復制代碼 代碼如下:

!/usr/bin/env python
# -*- coding: UTF-8 -*-

from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText

# python 2.3.*: email.Utils email.Encoders
from email.utils import COMMASPACE,formatdate
from email import encoders

import os

#server['name'], server['user'], server['passwd']
def send_mail(server, fro, to, subject, text, files=[]):
    assert type(server) == dict
    assert type(to) == list
    assert type(files) == list

    msg = MIMEMultipart()
    msg['From'] = fro
    msg['Subject'] = subject
    msg['To'] = COMMASPACE.join(to) #COMMASPACE==', '
    msg['Date'] = formatdate(localtime=True)
    msg.attach(MIMEText(text))

    for file in files:
        part = MIMEBase('application', 'octet-stream') #'octet-stream': binary data
        part.set_payload(open(file, 'rb'.read()))
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))
        msg.attach(part)

    import smtplib
    smtp = smtplib.SMTP(server['name'])
    smtp.login(server['user'], server['passwd'])
    smtp.sendmail(fro, to, msg.as_string())
    smtp.close()

利用python的smtplib庫實現郵件發送

復制代碼 代碼如下:

import smtplib
def sendmail():
    try:
        smtp=smtplib.SMTP(HOST)
        smtp.login(USER,PASSWORD)     #登錄郵箱
        smtp.sendmail(USER+"@"+PROFIX,TO,MSG)  #發送郵件
        smtp.quit()
        print 'email send success'
    except Exception,e:
        print e
        print 'email send failed.'

郵件可以發送了

然后學習了一點定義msg
python中有幾個類庫生成豐富的msg格式
總結一個簡單的MIMEText,可以編輯許多郵件頭信息,也可以編輯郵件格式
from email.MIMEText import MIMEText
msg=MIMEText("要發送的內容","格式,例如:html,plain","編碼,例如:gb2312,utf-8")
msg['From']='郵件中顯示的發送方的名字'
msg['To']='郵件中顯示收件方的名字'
msg['Subject']='郵件標題'
這些都可以不設置

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保德县| 香河县| 迭部县| 和平县| 临江市| 广河县| 安义县| 尼勒克县| 张家界市| 永和县| 郴州市| 修武县| 禹州市| 应用必备| 广灵县| 金塔县| 雅江县| 平顶山市| 治县。| 新沂市| 靖宇县| 三台县| 永城市| 略阳县| 石狮市| 竹北市| 翼城县| 惠东县| 油尖旺区| 泰和县| 宁明县| 红桥区| 庄河市| 东平县| 北流市| 田林县| 乌审旗| 庆城县| 鹤山市| 吉水县| 拜城县|