python發送郵件示例的簡單介紹

本文目錄一覽:

如何在python程序中發郵件

提供以下兩種方式:

利用smtplib,email庫

coding:utf-8

import smtplib

from email.mime.text import MIMEText

from email.mime.multipart import MIMEMultipart

import sys

reload(sys)

sys.setdefaultencoding(“utf8”)

# 配置收發件人

recvaddress = [‘receiveemail@sina.com’,’receiveemail@qq.com’]

# 163的用戶名和密碼

sendaddr_name = ‘your_email@163.com’

sendaddr_pswd = ‘your_password’

class SendMail:

def __init__(self,recver=None):

“””接收郵件的人:list or tuple”””

if recver is None:

self.sendTo = recvaddress

else:

self.sendTo = recver

def send(self,sub,content,attachcontent):

“””發送郵件”””

self.msg = MIMEMultipart()

#設置發送郵件

self.msg[‘from’] = sendaddr_name

try:

#設置郵箱服務器

smtp = smtplib.SMTP(‘smtp.163.com’,25)

#登錄

smtp.login(sendaddr_name,sendaddr_pswd)

#設置發送主題

self.msg[‘Subject’] = sub

#設置郵件內容

self.msg.attach(MIMEText(content))

#設置郵件附件,將附件的內容attachcontent,寫到filename的文件中,作為附件發送

att1 = MIMEText(attachcontent, ‘base64’, ‘gb2312’)

att1[“Content-Type”] = ‘application/octet-stream’

att1[“Content-Disposition”] = ‘attachment; filename=”testattach.txt”‘#這裡的filename可以任意寫,寫什麼名字,郵件中顯示什麼名字

self.msg.attach(att1)

#發送郵件

smtp.sendmail(self.msg[‘from’], self.sendTo, self.msg.as_string())

smtp.close()

print(u”發送郵件成功”)

except Exception,e:

print(u’發送郵件失敗:’+str(e))

raise

#調用

s = SendMail()

subject = “主題”

content = “這裡是郵件內容”

attachcontent = “這裡是附件哦”

s.send(subject,content,attachcontent)

2.利用webpy自帶的email模塊

首先要安裝web.py的依賴庫

pip install web.py

#coding:utf-8

import web

##### email服務器配置 #####

web.config.smtp_server = ‘smtp.sina.com’

web.config.smtp_port = 25

web.config.smtp_username = ‘你的email前綴,@前的字符串’

web.config.smtp_password = ‘你的密碼’

web.config.smtp_starttls = True

send_from=”youremail@sina.com”

receiveemailaddr = [“receiveemail@qq.com”,”receiveemail@163.com”]

subject=u’這裡是主題’

message=u’這裡是郵件的內容’ 

def sendemail(sendfrom,sendto,subject,message,cc=None, bcc=None,headers=({‘User-Agent’: ‘webpy.sendmail’, ‘X-Mailer’: ‘webpy.sendmail’,})):

try:

 web.sendmail(send_from,sendto,subject,message,cc=cc,bcc=bcc)

 print “郵件發送成功”

except Exception,e:

print(str(e))

#調用

sendemail(send_from,receiveemailaddr,subject,message)

Python向多人發送、抄送帶附件的郵件(含詳細代碼)

python要發送帶附件的郵件,首先要創建MIMEMultipart()實例,然後構造附件,如果有多個附件,可依次構造,最後使用smtplib.smtp發送。

步驟:

(1)設置服務器所需信息(ps:部門郵箱密碼為授權碼,需自行登錄相應郵箱設置授權碼)

(2)設置email信息

(3)附件部分

(4)登錄郵箱並發送郵件

附上源碼:

python批量發送郵件–包括批量不同附件

小豬在公司做出納,乾的活卻包括了出納、會計、結算專員等工作,周末都要被無奈在家加班,主要還沒有加班費,簡直是被公司嚴重壓榨。每個月初都要給每個工長發預付款賬單郵件,月中髮結算款賬單。重複性機械工作。

一個及格線上的程序員,最起碼的覺悟就是將重複性的機械工作自動化,於是,在我花了一個多小時,幫她給一部分工長發了一次郵箱後,默默的回來寫了這個腳本。

所以,設計要點就是一個字—— 懶 。

恩,就醬。

經過我觀察,郵件內容分為兩種,這裡先說第一種,“結算款”:

(1) 郵件內容(content)不變,為固定的txt文本

(2) 附件(attch)為每個工長的結算賬單(excel文件.xlsx),此文件命名為總賬單中自動分割出來的名字(暫時不懂怎麼分割出來的=.=),格式為:

(3) 郵件主題(Subject)為附件名(不帶後綴名)

(4) 郵件接收對象(工長)的名單及其郵箱地址基本不變,偶爾變動

(5)

(1) 將工長及其郵箱地址存為CSV文件的兩列,python中將其讀取為字典形式,存儲以供後續查詢郵箱地址。

(2) 遍歷文件夾中的附件(.xlsx類型文件),對其進行兩種操作,一方面將其名字(不帶路徑和後綴)提取出來,作為郵件主題(Subject),並對Subject進一步劃分,得到其中的人名(工長);另一方面,將其傳入MIMEbase模塊中轉為郵件附件對象。

(3) 由上述得到的人名(name),在字典形式的通訊錄中,查找相應的地址(value),即為收件人名稱和地址

(4) 利用python中的email模塊和smtp模塊,登錄自己的郵箱賬號,再對每個附件,得到的收件人名和地址,添加附件,發送郵件。done

在設計過程中有幾點需要注意

(1) 有時一個郵件地址對應兩個人名,此時應該在CSV文件中分為兩行存儲,而不是將兩個人名存為同一個鍵;

(2)有賬單.xlsx文件,通訊錄里卻沒存儲此人記錄,程序應該打印提示沒有通訊記錄的人名,且不能直接退出,要保證員工看到此提示,此第一版程序還有解決此問題;

(3)此程序發送的郵件內容為純文本,若要求郵件內容有不同格式(如部分加粗,部分紅色),還有小部分需要每次更改的地方(如郵件內容包含當前月份),如何解決?(這就是第二種郵件內容,“預算款”);

(4)重名的,暫時還沒碰到,程序中也沒給出解決方案。

第一版到此,20180830,待更新

第二版更新,20180904

第三版更新,20180909

轉戰CSDN博客,更多博客見傳送門《 xiaozhou的博客主頁 》

原創文章,作者:JJAE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/148996.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
JJAE的頭像JJAE
上一篇 2024-11-04 17:49
下一篇 2024-11-04 17:49

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論