python模範發送郵件的時候的簡單介紹

本文目錄一覽:

如何用Python發郵件

Python發送郵件簡單的實例:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import smtplib

from email.mime.text import MIMEText

from email.header import Header

sender = ‘from@runoob.com’

receivers = [‘429240967@qq.com’] # 接收郵件,可設置為你的QQ郵箱或者其他郵箱

# 三個參數:第一個為文本內容,第二個 plain 設置文本格式,第三個 utf-8 設置編碼

message = MIMEText(‘Python 郵件發送測試…’, ‘plain’, ‘utf-8’)

message[‘From’] = Header(“菜鳥教程”, ‘utf-8’)

message[‘To’] = Header(“測試”, ‘utf-8’)

subject = ‘Python SMTP 郵件測試’

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

try:

smtpObj = smtplib.SMTP(‘localhost’)

smtpObj.sendmail(sender, receivers, message.as_string())

print “郵件發送成功”

except smtplib.SMTPException:

print “Error: 無法發送郵件”

如何用python發送email

使用stmp模塊,下面是一個簡單的例子

# -*- coding: UTF-8 -*-

import smtplib

from email.mime.text import MIMEText

from email.header import Header

sender = ‘from@runoob.com’

receivers = [‘tototo@163.com’]  # 接收郵件,可設置為你的QQ郵箱或者其他郵箱

# 三個參數:第一個為文本內容,第二個 plain 設置文本格式,第三個 utf-8 設置編碼

message = MIMEText(‘Python 郵件發送測試…’, ‘plain’, ‘utf-8’)

message[‘From’] = Header(“from”, ‘utf-8’)

message[‘To’] = Header(“測試”, ‘utf-8’)

subject = ‘Python SMTP 郵件測試’

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

 

try:

    smtpObj = smtplib.SMTP(‘localhost’)

    smtpObj.sendmail(sender, receivers, message.as_string())

    print “郵件發送成功”

except smtplib.SMTPException:

    print “Error: 無法發送郵件”

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的博客主頁 》

我用python發郵件。出現以下問題怎麼處理?

1、準備兩個郵箱帳號,一個是常用的(接收端),另一個可以註冊網易163郵箱或者foxmail郵箱也可(發送端),本次我使用兩個QQ郵箱進行演示。

2、在郵箱的設置

3、賬戶中開啟SMTP功能,如下圖:

4、點擊生成授權碼,按照彈出窗口的提示發送短信,發送後單擊我已發送按鈕。

5、將生成的授權碼複製下來以備接下來使用。如下圖:

6、我們來編輯代碼:

from email.header import Header

from email.mime.text import MIMEText

from email.utils import parseaddr,formataddr

import smtplib

def _format_addr(s):  

name,addr = parseaddr(s)  

return formataddr((Header(name,’utf-8′).encode(),addr))

#發件人地址

from_addr = ’10******10@qq.com’

#密碼剛才複製的郵箱的授權碼

password = ‘u*******************g’

#收件人地址

to_addr =  ’10********28@qq.com’

#郵箱服務器地址

smtp_server = ‘smtp.qq.com’

#設置郵件信息

msg = MIMEText(‘Python爬蟲運行異常,異常信息為遇到HTTP 403′,’plain’,’utf-8′)

msg[‘From’] = _format_addr(‘Python爬蟲一號%s’%from_addr)

msg[‘To’] = _format_addr(‘管理員%s’%to_addr)

msg[‘Subject’] = Header(‘一號爬蟲運行異常.’,’utf-8′).encode()

#發送郵件

server = smtplib.SMTP_SSL(smtp_server,465)

#打印出和SMTP服務器交互的所有信息

server.set_debuglevel(1)

#登錄SMTP服務器

server.login(from_addr,password)

#sendmail():發送郵件,由於可以一次發給多個人,所以傳入一個list郵件正文是一個str,as_string()把MIMEText對象變成str。

server.sendmail(from_addr,to_addr,msg.as_string())server.quit()print(‘郵件發送成功!’)

7、登錄接收端郵箱,查看是否發送成功,如下圖:

8、如果能成功收到郵件的話就說明完成了。

如何在python程序中發郵件

通過命令行發送郵件,功能強大

python ./mail -s $server -f $from -t $to -u $user -p $pass -S “$subject” -m “${mail_msg}” -F $file

Python 發送郵件可以添加附件:

#!/usr/bin/python

from email.MIMEText import MIMEText

from email.MIMEMultipart import MIMEMultipart

from email.MIMEBase import MIMEBase

from email import Utils, Encoders

import mimetypes, sys,smtplib,socket,getopt

class SendMail:

def __init__(self,smtp_server,from_addr,to_addr,user,passwd):

self.mailserver=smtp_server

self.from_addr=from_addr

self.to_addr=to_addr

self.username=user

self.password=passwd

def attachment(self,filename):

fd=open(filename,’rb’)

filename=filename.split(‘/’)

mimetype,mimeencoding=mimetypes.guess_type(filename[-1])

if (mimeencoding is None) or (mimetype is None):

mimetype=’application/octet-stream’

maintype,subtype=mimetype.split(‘/’)

if maintype==’text’:

retval=MIMEText(fd.read(), _subtype=subtype, _charset=’utf-8′)

else:

retval=MIMEBase(maintype,subtype)

retval.set_payload(fd.read())

Encoders.encode_base64(retval)

retval.add_header(‘Content-Disposition’,’attachment’,filename=filename[-1])

fd.close()

return retval

def msginfo(self,msg,subject,filename):

# message = “””Hello, ALL

#This is test message.

#–Anonymous”””

message=msg

msg=MIMEMultipart()

msg[‘To’] = self.to_addr

msg[‘From’] = ‘sa ‘+self.from_addr+”

msg[‘Date’] = Utils.formatdate(localtime=1)

msg[‘Message-ID’] = Utils.make_msgid()

if subject:

msg[‘Subject’] = subject

if message:

body=MIMEText(message,_subtype=’plain’)

msg.attach(body)

#for filename in sys.argv[1:]:

if filename:

msg.attach(self.attachment(filename))

return msg.as_string()

def send(self,msg=None,subject=None,filename=None):

try:

s=smtplib.SMTP(self.mailserver)

try:

s.login(self.username,self.password)

except smtplib.SMTPException,e:

print “Authentication failed:”,e

sys.exit(1)

s.sendmail(self.from_addr,self.to_addr.split(‘,’),self.msginfo(msg,subject,filename))

except (socket.gaierror,socket.error,socket.herror,smtplib.SMTPException),e:

print “*** Your message may not have been sent!”

print e

sys.exit(2)

else:

print “Message successfully sent to %d recipient(s)” %len(self.to_addr)

if __name__==’__main__’:

def usage():

print “””Useage:%s [-h] -s SMTP Server -f FROM_ADDRESS -t TO_ADDRESS -u USER_NAME -p PASSWORD [-S MAIL_SUBJECT -m MAIL_MESSAGE -F ATTACHMENT]

Mandatory arguments to long options are mandatory for short options too.

-f, –from= Sets the name of the “from” person (i.e., the envelope sender of the mail).

-t, –to= Addressee’s address. -t “test@test.com,test1@test.com”.

-u, –user= Login SMTP server username.

-p, –pass= Login SMTP server password.

-S, –subject= Mail subject.

-m, –msg= Mail message.-m “msg, …….”

-F, –file= Attachment file name.

-h, –help Help documen.

“”” %sys.argv[0]

sys.exit(3)

try:

options,args=getopt.getopt(sys.argv[1:],”hs:f:t:u:p:S:m:F:”,”–help –server= –from= –to= –user= –pass= –subject= –msg= –file=”,)

except getopt.GetoptError:

usage()

sys.exit(3)

server=None

from_addr=None

to_addr=None

username=None

password=None

subject=None

filename=None

msg=None

for name,value in options:

if name in (“-h”,”–help”):

usage()

if name in (“-s”,”–server”):

server=value

if name in (“-f”,”–from”):

from_addr=value

if name in (“-t”,”–to”):

to_addr=value

if name in (“-u”,”–user”):

username=value

if name in (“-p”,”–pass”):

password=value

if name in (“-S”,”–subject”):

subject=value

if name in (“-m”,”–msg”):

msg=value

if name in (“-F”,”–file”):

filename=value

if server and from_addr and to_addr and username and password:

test=SendMail(server,from_addr,to_addr,username,password)

test.send(msg,subject,filename)

else:

usage()

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:05
下一篇 2024-12-22 08:05

相關推薦

  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的“畫筆”在窗口中繪製…

    編程 2025-04-29
  • IDEA Java發送郵件出現錯誤解決方案

    IDEA Java是一款常用的Java開發工具,很多開發者都使用它來開發Java應用程序。然而,在使用IDEA Java發送郵件時,有可能會出現一些錯誤。本文將從多個方面對該錯誤進…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智能,Python都扮演着重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28
  • 如何製作一個簡單的換裝遊戲

    本文將從以下幾個方面,為大家介紹如何製作一個簡單的換裝遊戲: 1. 遊戲需求和界面設計 2. 使用HTML、CSS和JavaScript開發遊戲 3. 實現遊戲的基本功能:拖拽交互…

    編程 2025-04-27
  • Guava Limiter——限流器的簡單易用

    本文將從多個維度對Guava Limiter進行詳細闡述,介紹其定義、使用方法、工作原理和案例應用等方面,並給出完整的代碼示例,希望能夠幫助讀者更好地了解和使用該庫。 一、定義 G…

    編程 2025-04-27
  • 製作一個簡單的管理系統的成本及實現

    想要製作一個簡單的管理系統,需要進行技術選型、開發、測試等過程,那麼這個過程會花費多少錢呢?我們將從多個方面來闡述製作一個簡單的管理系統的成本及實現。 一、技術選型 當我們開始思考…

    編程 2025-04-27

發表回復

登錄後才能評論