python郵件加附件傳送模組

2021-06-28 00:33:56 字數 3436 閱讀 7672

smtp.sendmail(from_addr,to_addrs,msg.as_string())

smtp.sendmail(from_addr,to_addrs,msg.as_string())

用jenkins每天跑完一些效能指標,就想著跑完了,可以發個郵件通知下大家,也讓大家看到一些效能資料

這裡發郵件主要是乙個模組:

這個模組是用來新增內容的模組:import mimetext

from email.mime.multipart import mimemultipart

from email.mime.image import mimeimage

這四個模組是python中自帶的,也基本可以滿足大部分使用者的需求了,下面說說這些模組的用法吧

smtp = smtplib.smtp()

建立乙個物件

smtp.set_debuglevel(1)#設定輸出debug除錯資訊,預設不輸出除錯資訊

smtp.login(mail_username,mail_password)

#這樣就完成連線

下面這個說下新增收件人、標題、內容、附件:
#新增附件的方法

msg = mimemultipart()

attpath = os.getcwd() + '/' + attnane

#這個是我的新增自動獲取路徑的方法

att1 = mimetext(open(attpath, 'rb').read(), 'base64', 'gb2312')

att1["content-disposition"] = 'attachment; filename="%s"' % attnane

msg.attach(att1)

#新增內容的方法:

msg = mimetext(emailcontent)

msg.attach(msg)

#這下面三個陣列的名字是模組規定的,其中

msg['from'] = '***[email protected]'

msg['to'] = '***[email protected]'

#msg['to'] = ['***[email protected]','***[email protected]']#**的格式

msg['subject']= emailsubject

#新增方法

這幾個也算是說完了,下面說下要注意的有些東西地方

乙個學會用try:

try:

print smtp.connect(host,port)

except:

print 'connect error ****'

這個方便自己以後看**出錯再哪

下面是轉別人的smtp的主要方法,寫的比較全了。

smtp.set_debuglevel(level)

設定輸出debug除錯資訊,預設不輸出除錯資訊。

smtp.docmd(cmd[, argstring])

傳送乙個command到smtp伺服器,

smtp.connect([host[, port]])

連線到指定的smtp伺服器,預設是本機的25埠。也可以寫成hostname:port的形式。

smtp.helo([hostname])

使用helo指令向smtp伺服器確認你的身份。

smtp.ehlo([hostname])

使用ehlo指令向esmtp伺服器確認你的身份。

smtp.ehlo_or_helo_if_needed()

如果在以前的會話連線中沒有提供ehlo或者helo指令,這個方法呼叫ehlo()或者helo()。

smtp.has_extn(name)

判斷指定的名稱是否在smtp伺服器上。

smtp.verify(address)

判斷郵件位址是否在smtp伺服器上存在。

smtp.login(user, password)

登陸需要驗證的smtp伺服器,如果之前沒有提供ehlo或者helo指令,則會先嘗試esmtp的ehlo指令。

smtp.starttls([keyfile[, certfile]])

使smtp連線執行在tls模式,所有的smtp指令都會被加密。

smtp.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

傳送郵件,該方法需要一些郵件位址和訊息。

smtp.quit()

終止smtp會話並且關閉連線

最後乙個是別人寫的各種例子,也算是比較全的:

後來兩天,發現乙個錯誤,這裡說明下這個錯誤的原因:

to_addrs=['[email protected]','[email protected]']
再寫這個收件人的時候寫成這樣:

msg['to'] = to_addrs

smtp.sendmail(from_addr,to_addrs,msg.as_string())

這個時候會報乙個錯:

attributeerror: 'list' object has no attribute 'lstrip'

這個錯誤就是寫陣列中乙個值的時候直接用乙個另乙個陣列直接賦值,就會導致原陣列這個值的一些屬性不存在了,所以才報上面的錯誤,解決的方式有兩種:

1、寫msg['to]』的時候用以下方式寫入:

msg['to'] = ", ".join(to_addrs)

這樣就一會導致msg陣列屬性不存在的問題了。

2、就是直接不使用msg[''to」],直接傳送,這樣就不會存在屬性的問題了。

msg['subject'] = subject  

smtp.sendmail(from_addr,to_addrs,msg.as_string())

python 傳送郵件,附件郵件

1,傳送郵件 import smtplib from email.mime.text import mimetext msg from sunruirui1028 163.com 傳送方郵箱 passwd srui1028 填入傳送方郵箱的授權碼 msg to 1048786140 qq.com 收...

python傳送帶附件郵件

1.不包括附件的郵件 coding utf 8 import smtplib import string 傳送普通的文字郵件 郵件smtp的位址 host smtp.163.com 定義郵件的標題 subject 這是郵件標題 發件人 from 163.com 收件人 to qq.com 傳送的郵件...

python傳送郵件及附件

import smtplib import datetime from email.header import header from email.mime.text import mimetext from email.mime.image import mimeimage from email....