欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

二種python發(fā)送郵件實(shí)例講解(python發(fā)郵件附件可以使用email模塊實(shí)現(xiàn))

 更新時(shí)間:2013年12月03日 15:46:38   投稿:zxhpj  
這篇文章主要介紹了使用Python email模塊、smtplib庫發(fā)送郵件的實(shí)例,大家參考使用

可以使用Python的email模塊來實(shí)現(xiàn)帶有附件的郵件的發(fā)送。

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

SMTP協(xié)議的一個(gè)重要特點(diǎn)是它能夠接力傳送郵件。它工作在兩種情況下:一是電子郵件從客戶機(jī)傳輸?shù)椒?wù)器;二是從某一個(gè)服務(wù)器傳輸?shù)搅硪粋€(gè)服務(wù)器。

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

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

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

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

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

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

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

Python email模塊

1. class email.message.Message

__getitem__,__setitem__實(shí)現(xiàn)obj[key]形式的訪問。
Msg.attach(playload): 向當(dāng)前Msg添加playload。
Msg.set_playload(playload): 把整個(gè)Msg對象的郵件體設(shè)成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) 中,這個(gè)類位于email.MIMEMultipart.MIMEMultipart。
這個(gè)類是MIMEBase的直接子類,用來生成包含多個(gè)部分的郵件體的MIME對象。

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

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

代碼實(shí)現(xiàn)

復(fù)制代碼 代碼如下:

!/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庫實(shí)現(xiàn)郵件發(fā)送

復(fù)制代碼 代碼如下:

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

郵件可以發(fā)送了

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

相關(guān)文章

  • Python 函數(shù)那不為人知的一面

    Python 函數(shù)那不為人知的一面

    通常我們定義一個(gè)函數(shù),然后調(diào)用該函數(shù)時(shí),函數(shù)相關(guān)的代碼才開始執(zhí)行??墒呛芏嗳瞬⒉恢?,當(dāng)我們定義函數(shù)時(shí),一些代碼就開始執(zhí)行了。今天就來說說函數(shù)這個(gè)不為人知的一面
    2021-11-11
  • Python提升循環(huán)速度的高效方法小姐

    Python提升循環(huán)速度的高效方法小姐

    Python編程中,循環(huán)是一種常見的操作,但是如果處理大規(guī)模數(shù)據(jù)或者需要頻繁執(zhí)行的循環(huán),往往會(huì)導(dǎo)致程序運(yùn)行速度變慢,下面我們就來看看有什么辦法可以提升循環(huán)速度吧
    2024-03-03
  • 基于Python 的語音重采樣函數(shù)解析

    基于Python 的語音重采樣函數(shù)解析

    這篇文章主要介紹了基于Python 的語音重采樣函數(shù)解析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • python?解決?pip?時(shí)報(bào)錯(cuò)?no?suchoption:?--bulid-dir?的解決辦法(最新推薦)

    python?解決?pip?時(shí)報(bào)錯(cuò)?no?suchoption:?--bulid-dir?的解決辦法(最新

    在使用PyCharm虛擬環(huán)境pip時(shí),有時(shí)會(huì)遇到錯(cuò)誤提示“no?such?option:?--build-dir”,這可能是由于pip版本不兼容或其他原因?qū)е碌模疚膶⒃敿?xì)講解如何解決這個(gè)問題,感興趣的朋友跟隨小編一起看看吧
    2023-05-05
  • Python入門學(xué)習(xí)指南分享

    Python入門學(xué)習(xí)指南分享

    這篇文章主要為大家詳細(xì)介紹了Python入門的學(xué)習(xí)指南,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python繪制多個(gè)子圖的實(shí)例

    python繪制多個(gè)子圖的實(shí)例

    今天小編就為大家分享一篇python繪制多個(gè)子圖的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python連接打印機(jī)實(shí)現(xiàn)自動(dòng)化打印的實(shí)用技巧和示例代碼

    Python連接打印機(jī)實(shí)現(xiàn)自動(dòng)化打印的實(shí)用技巧和示例代碼

    在計(jì)算機(jī)科學(xué)領(lǐng)域,打印機(jī)是一種重要的外部設(shè)備,用于將電子文檔轉(zhuǎn)換成實(shí)際的紙質(zhì)文件,下面這篇文章主要給大家介紹了關(guān)于Python連接打印機(jī)實(shí)現(xiàn)自動(dòng)化打印的實(shí)用技巧和示例代碼,需要的朋友可以參考下
    2024-05-05
  • 利用Python搶回在螞蟻森林逝去的能量(實(shí)現(xiàn)代碼)

    利用Python搶回在螞蟻森林逝去的能量(實(shí)現(xiàn)代碼)

    螞蟻森林是一項(xiàng)旨在帶動(dòng)公眾低碳減排的公益項(xiàng)目,每個(gè)人的低碳行為在螞蟻森林里可計(jì)為"綠色能量",很多小伙伴都玩過,今天小編給大家分享一篇教程關(guān)于Python搶回在螞蟻森林逝去的能量,感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • Python爬蟲基礎(chǔ)之selenium庫的用法總結(jié)

    Python爬蟲基礎(chǔ)之selenium庫的用法總結(jié)

    今天帶大家來學(xué)習(xí)selenium庫的使用方法及相關(guān)知識總結(jié),文中非常詳細(xì)的介紹了selenium庫,對正在學(xué)習(xí)python的小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • Python實(shí)現(xiàn)將照片變成卡通圖片的方法【基于opencv】

    Python實(shí)現(xiàn)將照片變成卡通圖片的方法【基于opencv】

    這篇文章主要介紹了Python實(shí)現(xiàn)將照片變成卡通圖片的方法,涉及Python基于opencv庫進(jìn)行圖片處理的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01

最新評論