日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python自动批量发邮件脚本_Python实现自动发送邮件功能

發(fā)布時間:2023/12/2 python 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python自动批量发邮件脚本_Python实现自动发送邮件功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡單郵件傳輸協(xié)議(SMTP)是一種協(xié)議,用于在郵件服務器之間發(fā)送電子郵件和路由電子郵件。Python提供smtplib模塊,該模塊定義了一個SMTP客戶端會話對象,可用于使用SMTP或ESMTP偵聽器守護程序向任何互聯(lián)網(wǎng)機器發(fā)送郵件。

SMTP通訊的基本流程可以概括為以下幾點:

1.連接SMTP服務器

2.登陸用戶名和密碼

3.發(fā)送指定郵件內(nèi)容

4.退出SMTP連接

一、發(fā)送純文本格式郵件

#coding:utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

import smtplib

from smtplib import SMTP

from email.mime.text import MIMEText

from email.header import Header

#構(gòu)造純文本郵件內(nèi)容

msg = MIMEText('hello,send by Python.....','plain','utf-8')

#發(fā)送者郵箱

sender = 'xxxxx@XXXXX.com.cn'

#發(fā)送者的登陸用戶名和密碼

user = 'xxxxx@XXXX.com.cn'

password = 'xxxxxx'

#發(fā)送者郵箱的SMTP服務器地址

smtpserver = 'xxxx'

#接收者的郵箱地址

receiver = ['xxxxxx@qq.com','xxxxxx@outlook.com'] #receiver 可以是一個list

smtp = smtplib.SMTP() #實例化SMTP對象

smtp.connect(smtpserver,25) #(缺省)默認端口是25 也可以根據(jù)服務器進行設定

smtp.login(user,password) #登陸smtp服務器

smtp.sendmail(sender,receiver,msg.as_string()) #發(fā)送郵件 ,這里有三個參數(shù)

'''

login()方法用來登錄SMTP服務器,sendmail()方法就是發(fā)郵件,由于可以一次發(fā)給多個人,所以傳入一個list,郵件正文

是一個str,as_string()把MIMEText對象變成str。

'''

smtp.quit()

運行之后就會收到郵件:

但是仔細觀察會發(fā)現(xiàn):

1.郵件沒有主題

2.看不到收件人的信息

這是因為郵件主題、如何顯示發(fā)件人、收件人等信息并不是通過SMTP協(xié)議發(fā)給MTA,而是包含在發(fā)給MTA的文本中的,所以,我們必須把From、To和Subject添加到MIMEText中,才是一封完整的郵件:

msg = MIMEText('hello,'utf-8')

msg['From'] = Header('Python測試','utf-8')

msg['To'] = Header('管理員','utf-8')

subject = 'python SMTP 測試郵件'

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

二、發(fā)送HTML格式的郵件

如果我們要發(fā)送HTML郵件,而不是普通的純文本文件怎么辦?方法很簡單,在構(gòu)造MIMEText對象時,把HTML字符串傳進去,再把第二個參數(shù)由plain變?yōu)閔tml就可以了:

msg = MIMEText('

你好!

','html','utf-8')

#發(fā)送HTML格式郵件就只需要把對應的第二個參數(shù)改為html即可

三、發(fā)送帶附件的郵件

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

#coding:utf-8

import sys

reload(sys)

sys.setdefaultencoding('utf8')

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

from email.header import Header

#發(fā)送郵件服務器

smtpserver = 'xxxxx'

#發(fā)送郵箱用戶名和密碼

user = 'xxxxxx'

password = 'xxxxxx'

#發(fā)送郵箱

sender = 'xxxxx'

#接受郵箱

receiver = 'xxxxxxx'

#創(chuàng)建一個帶附件的實例

message = MIMEMultipart()

message['From'] = Header('Python 測試','utf-8')

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

subject = 'Python SMTP郵件測試'

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

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

message.attach(MIMEText('這是測試Python發(fā)送附件功能....','utf-8'))

#構(gòu)造附件1,傳送當前目錄下的test.txt文件

att1 = MIMEText(open('123.txt','rb').read(),'base64','utf-8')

att1['Content-Type'] = 'application/octet-stream'

#這里的filename可以任意寫,寫什么名字 郵件中就顯示什么名字

att1['Content-Disposition'] = 'attachment;filename:"123.txt"'

message.attach(att1)

smtp = smtplib.SMTP()

smtp.connect(smtpserver,25)

smtp.login(user,password)

smtp.sendmail(sender,message.as_string())

smtp.quit()

小結(jié)

使用Python的smtplib發(fā)送郵件十分簡單,只要掌握了各種郵件類型的構(gòu)造方法,正確設置好郵件頭,就可以順利發(fā)出。

構(gòu)造一個郵件對象就是一個Messag對象,如果構(gòu)造一個MIMEText對象,就表示一個文本郵件對象,如果構(gòu)造一個MIMEImage對象,就表示一個作為附件的圖片,要把多個對象組合起來,就用MIMEMultipart對象,而MIMEBase可以表示任何對象。它們的繼承關(guān)系如下:

Message

+- MIMEBase

+- MIMEMultipart

+- MIMENonMultipart

+- MIMEMessage

+- MIMEText

+- MIMEImage

這種嵌套關(guān)系就可以構(gòu)造出任意復雜的郵件。你可以通過email.mime文檔查看它們所在的包以及詳細的用法。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持編程小技巧。

總結(jié)

以上是生活随笔為你收集整理的python自动批量发邮件脚本_Python实现自动发送邮件功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。