1. 程式人生 > >利用python 傳送郵件

利用python 傳送郵件

#coding=utf-8
import traceback

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.header import Header

username = ""                                #qq賬戶
authorization_code = ""     #qq郵箱授權碼
#from_email = ""            #傳送的郵箱


def send_qq_plain_email(from_email, to_emails, title, content):
    """01傳送文字郵箱"""
    send_fail = []   #傳送出錯郵箱列表
    for to_email in to_emails:
        #構建郵箱
        message = MIMEText(content, "plain", "utf-8")        #建立普通郵箱內容使用plain
        message["Subject"] = u"{}--郵箱測試".format(title).encode('utf-8')  # 標題,整體進行utf-8編碼
        message["From"] = from_email                                 #添加發件人
        message["To"] = to_email                                    #新增收件人
        try:
            #傳送郵件
            s = smtplib.SMTP_SSL("smtp.qq.com", 465)                #建立傳送郵箱物件,建立連結
            s.login(username, authorization_code)                   #登入伺服器
            s.sendmail(from_email, to_email, message.as_string())   #傳送郵箱
            print message.as_string()
            s.quit()                                                #斷開連結
            print "傳送成功"
        except smtplib.SMTPException, e:
            send_fail.append(to_email)                              #錯誤郵件新增到列表中
            print "傳送失敗,%s"%e
    return send_fail


def send_qq_html_email(from_email, to_emails, title, content):
    """02傳送html郵箱"""
    send_fail = []
    for to_email in to_emails:
        #構建郵箱
        message = MIMEText(content, "html", "utf-8" )               #建立html郵箱內容使用html
        #message["Subject"] = "{}--郵箱測試".format(title)             #標題
        message["Subject"] = u"{}--郵箱測試".format(title).encode('utf-8')  #標題整體進行utf-8編碼
        message["From"] = from_email                                #發件人
        message["To"] = to_email                                    #收件人
        try:
            #建立傳送郵箱物件
            s = smtplib.SMTP_SSL("smtp.qq.com", 465)
            s.login(username, authorization_code)                   #登入伺服器
            s.sendmail(from_email, to_email, message.as_string())   #傳送郵箱,支援傳送列表
            print message.as_string()
            s.quit()                                                #斷開連結
            print "傳送成功"
        except smtplib.SMTPException, e:
            send_fail.append(to_email)
            print "傳送失敗,%s"%e
    return send_fail



def send_qq_attach_email(from_email, to_emails, title, content, attachs):
    """03傳送帶有附件的郵箱"""
    send_fail = []
    for to_email in to_emails:
        # 建立一個帶附件的郵箱物件
        message = MIMEMultipart()  #生成包括多個部分的郵件體
        message.attach(MIMEText(content, "html", "utf-8"))           # 建立html郵箱內容
        message["Subject"] = u"{}--郵箱測試".format(title).encode('utf-8')  # 標題整體進行utf-8編碼
        message["From"] = from_email                                 #發件人
        message["To"] = to_email                                     #收件人
        # 構造附件
        for f in attachs:
            attach = MIMEText(open(f, 'rb').read(), 'base64', 'utf-8')  #建立附件
            attach["Content-Type"] = 'application/octet-stream'         #建立附件請求頭
            # filename是郵件中顯示的名字
            attach["Content-Disposition"] = 'attachment; filename={}'.format(f)
            message.attach(attach)                                     #附件新增到物件上

        try:
            #建立傳送郵箱物件
            s = smtplib.SMTP_SSL("smtp.qq.com", 465)
            s.login(username, authorization_code)
            s.sendmail(from_email, to_email, message.as_string())
            print message.as_string()
            s.quit()
            print "傳送成功"
        except smtplib.SMTPException, e:
            send_fail.append(to_email)
            print "傳送失敗,%s"%e
    return send_fail


def send_qq_img_email(from_email, to_emails, title, content, attachs, imgname):
    """04傳送帶有圖片的html郵箱"""
    send_fail = []
    for to_email in to_emails:
        # 建立一個帶附件的例項
        message = MIMEMultipart("related")   #生成包括多個部分的郵件體,採用related定義內嵌資源的郵件體
        message["Subject"] = u"{}--郵箱測試".format(title).encode('utf-8')  # 標題整體進行utf-8編碼
        message["From"] = from_email      #發件人
        message["To"] = to_email      #收件人

        message_alternative = MIMEMultipart('alternative')
        message.attach(message_alternative)
        message_alternative.attach(MIMEText(content, "html", "utf-8"))  # 建立html郵箱內容

        # 開啟圖片
        image = open(imgname, 'rb')
        msgImage = MIMEImage(image.read())  #建立包含圖片資料的郵件體
        image.close()

        # 定義圖片id,在html文字中引用
        msgImage.add_header('Content-ID', '<image_test>')
        message.attach(msgImage)


        # 構造附件
        for f in attachs:
            attach = MIMEText(open(f, 'rb').read(), 'base64', 'utf-8')
            attach["Content-Type"] = 'application/octet-stream'
            # filename是郵件中顯示的名字
            attach["Content-Disposition"] = 'attachment; filename={}'.format(f)
            message.attach(attach)

        try:
            #建立傳送郵箱物件
            print '------sendmail-----'
            s = smtplib.SMTP_SSL("smtp.qq.com", 465)
            s.login(username, authorization_code)
            s.sendmail(from_email, to_email, message.as_string())
            s.quit()
            print "傳送成功"
        except smtplib.SMTPException, e:
            send_fail.append(to_email)
            print "傳送失敗,%s"%e
        except Exception , e:
            print e
    return send_fail




if __name__ == "__main__":
    #傳送郵箱的內容
    content = """
        <p>html郵件格式練習</p>
        <p><a href="http://www.baidu.com">百度連結</a></p>
    """
    #收件人郵箱地址
    to_email = ["
[email protected]
"] #郵箱附件檔名,開啟的是本目錄檔案 attachs = ["send_email_libs.txt", "send_email_libs.py"] #傳送帶圖片的檔案內容 img_content = """ <p>html郵件格式練習</p> <p><a href="http://www.baidu.com">百度連結</a></p> <p><img style="width: 100px;height: 100px" src="cid:image_test"></p> """ #圖片名稱 imgname = 'favicon.png' # 測試傳送文字郵件 #send_fail = send_qq_plain_email("
[email protected]
", to_email, u"第一課", content) #測試傳送html郵件 send_fail = send_qq_html_email("[email protected]", to_email, u"第一課", content) #測試傳送帶附件郵件 #send_fail = send_qq_attach_email("[email protected]", to_email, u"第一課", content, attachs) #測試傳送同時帶圖片和附件的郵件 #send_fail = send_qq_img_email("
[email protected]
", to_email, u"第一課", img_content, attachs, imgname) print send_fail

相關推薦

利用python傳送郵件

1. 點選設定,選擇POP3/SMTP/IMAP。 2. 第一次進入,這兩項應該是未勾選的。  3. 點選左側客戶端授權密碼,再點選重置授權碼。輸入簡訊驗證碼後,會提示設定授權密碼(不要和郵箱登陸密碼重複)。 4. 記住自己設定的授權密碼之後,開始用pyth

利用python 傳送郵件

#coding=utf-8 import traceback import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from e

python 利用 smtplib 傳送郵件方法

說明 python 自帶了 smtplib 庫 可以直接呼叫並進行郵件傳送 預設狀態下, python 利用 base64 進行使用者名稱密碼傳遞 測試期間, 可以開啟 debug 功能, 方便進行排錯 測試程式碼 impor

Python利用SMTP傳送郵件進階篇,傳送混合格式郵件

html很簡單,只要MIMEText中的引數改成html即可 附件也不難,難的是加圖片 雖然圖片可以當做附件傳送,但是顯然還需要一個加入正文的功能,方法是用html的img標籤把圖片加入。但是這樣會有個問題,一般的郵箱都會將這種連結遮蔽掉。這個問題有2種解決方法,第一種是

Python利用SMTP傳送郵件終極篇,主送、抄送、暗送

在利用SMTP傳送郵件進階篇,傳送混合格式郵件一文中我解釋瞭如何傳送各種內容的郵件,但是收件人都是主送,沒有抄送和暗送。 文中相關程式碼如下: msg['from'] = user msg['to'] = ','.join(to_list) #注意,不是分號 msg[

python傳送郵件給多人

親測,163郵箱不能傳送,我用的qq的 import smtplib from email.mime.text import MIMEText sender = '[email protected]' passwd = '****' receiver = ["[email&#

python傳送郵件方法

python傳送郵件方法 1、普通文字郵件 #!/usr/bin/env python# -*- coding:utf-8 -*-import smtplibfrom email.mime.text import MIMETextmail_user="[email protected]" #傳送

python傳送郵件smtp

1.傳送QQ郵件 qq發件伺服器:smtp.qq.com 發件伺服器埠:465 發件郵箱:[email protected] 授權碼:*** qq郵箱是需要SSL認證的,連線伺服器需要認證 1.1 MIMEText只能傳送正文,不能帶附件傳送 1.2

利用python郵件管理

Email 郵件歷史。。。 起源 就是通訊的一個發展,懶得打字了省略了,以後再查吧 管理程式 一些讓郵件普及的郵件公司 郵件的工作流程 MUA(MailUserAgent)郵件使用者代理

python 傳送郵件(文字、表格、附件)

import pandas as pd import smtplib   from email.mime.text import MIMEText   from email.mime.multipart import MIMEMultipart filena

python傳送郵件模板

python傳送郵件(不帶附件)模板 import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersender = '[email protected]'receiver = '[email

Python傳送郵件不需要發件人密碼認證

#!/usr/bin/python # coding: UTF-8 import smtplib from email.mime.text import MIMEText receivers_list=["[email protected]",] #mail_h

Python傳送郵件並抄送

轉載: http://blog.51cto.com/lizhenliang/1875330 程式碼 #!/usr/bin/python # -*- coding: utf-8 -*- import smtplib def sendMail(body): smtp_serve

python傳送郵件(帶附件)

python通過stmp傳送qq郵件,帶附件 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Head

python傳送郵件

轉載自後知者的部落格 使用email模組和smtplib模組,內容比較固定,配好了即可實現,程式碼如下: 一、普通郵件傳送 import smtplib from email.mime.text import MIMEText email_host = ‘smt

利用JavaMail傳送郵件:smtp.163.com

一、利用JavaMail傳送郵件案例: 1、maven專案結構: 2、先在pom.xml裡邊加入Javamail依賴,系統會根據座標自動下載mail包(前提是配置好了maven): 3、配置email.properties屬性檔案,主要是為了不更改程式碼的前提下,該改變傳送郵件的一些基本資訊:

python 傳送郵件 附帶附件

from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib #建立一個帶附件的例項 msg = MIMEMultipart() #構造

python傳送郵件模組

import smtplib import time from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.appl

利用JavaMail傳送郵件示例

    最近閒來無事,為了鞏固一下知識點,寫了一個利用JavaMail傳送郵件的例子。只寫了一個傳送的例子,以後有時間再寫下接收的例子。 1、簡單介紹一下JavaMail的傳送步驟 根據郵件會話屬性和密碼驗證器構造一個傳送郵件的session會話 通過session會話

Python傳送郵件模組(SMTP)

首先,使用SMTP實現傳送郵件的話,需要先獲取一個代發郵件的授權碼。 以163郵箱為例: 登入郵箱後--點選設定--客戶端授權碼--開啟。如圖 其實網上已經有很多類似的模組介紹和試用了,這邊主要是想記錄下自己寫的一個類。呼叫方式簡單,可以直接將py檔案貼到專案中,import後