之前一直使用linux的sendEmail來(lái)自動(dòng)發(fā)送郵件,但是阿里云上,禁止使用25端口發(fā)送郵件,必須使用加密協(xié)議,如587端口,sendEmail的軟件最后一版是2009年,試了下,很難兼容CentOS7,所以就想到用python來(lái)實(shí)現(xiàn)。自己網(wǎng)上搜羅了下稍加修改,再加上自己加了批量發(fā)送多個(gè)目標(biāo)郵件地址的功能,代碼如下:
成都創(chuàng)新互聯(lián)公司專注骨干網(wǎng)絡(luò)服務(wù)器租用10余年,服務(wù)更有保障!服務(wù)器租用,綿陽(yáng)服務(wù)器托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問(wèn)。靈活、實(shí)現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。#C:\Python27# -*- coding: utf-8 -*-
import os,re
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import smtplib
from_user = 'opm@xxx.cn'
password = 'dfffE9xVDtPkdz'
smtp_server = 'smtp.exmail.qq.com'
smtp_port = 587
maindir = '/home/appadm/open***-2.4.4/user'
confdir = '/home/appadm/open***-2.4.4/'
file1 = os.path.join(maindir,'open***-install-2.4.4-I601.exe') #附件1,一個(gè)安裝程序,路徑/home/appadm/open***-2.4.4/user/open***-install-2.4.4-I601.exe
file2 = os.path.join(maindir,'open***-readme.docx') #附件2,安裝操作手冊(cè),路徑'/home/appadm/open***-2.4.4/open***-readme.docx
mail_list = [] 目標(biāo)郵件組初始為空,該mail_list為變量,與下面的‘mail_list’不同
flist = open('mail_list','r') 本地目錄下有一個(gè)mail_list的文件,收件人全部寫進(jìn)去,每行一個(gè)收件人
for line in flist.readlines():
mail_list.append(line.strip())
def sendmail():
###以下到郵件正文前的代碼可以忽略,由于我的附件3要取郵箱的前綴作為用戶名,舉例,xwz@qq.com,我的附件3是xwz.tar.gz,另外要到psw-file這個(gè)文件中賬號(hào)xwz以及對(duì)應(yīng)的密碼
for to_user in mail_list:
suser = to_user.strip().split("@")[0]
fpath = os.path.join(maindir,suser)
ftar = suser + '.tar.gz'
file3 = os.path.join(fpath,ftar)
userm = suser + '.+'
os.chdir(confdir)
os.chdir('config')
sd = os.getcwd()
f = open('psw-file','r')
for line in f.readlines():
m = re.search(userm,line)
if m is not None:
userinfo = m.group()
f.close()
useracc = userinfo.split()[0]
userpass = userinfo.split()[1]
#############以下為郵件正文######
mail_content = '''Hello,your open*** account is: %s,
and your password is: %s''' % (useracc,userpass)
###############
msg = MIMEMultipart() 帶附件的郵件
msg['From'] = from_user 發(fā)件人
msg['To'] = to_user 收件人
msg['Subject'] = Header(u"測(cè)試環(huán)境: %s\'s open*** imformation" % suser).encode() 標(biāo)題
mail_text = MIMEText(mail_content,'plain','utf-8') 內(nèi)容格式
msg.attach(mail_text) 正文內(nèi)容
exepart = MIMEApplication(open(file1, 'rb').read()) 附件1
exepart.add_header('Content-Disposition', 'attachment', filename='open***-install-2.4.4-I601.exe')
msg.attach(exepart)
docpart = MIMEApplication(open(file2, 'rb').read()) 附件2
docpart.add_header('Content-Disposition', 'attachment', filename='open***-readme.docx')
msg.attach(docpart)
tarpart = MIMEApplication(open(file3, 'rb').read()) 附件3
tarpart.add_header('Content-Disposition', 'attachment', filename=ftar)
msg.attach(tarpart)
server = smtplib.SMTP(smtp_server,smtp_port) smtp服務(wù)器以及端口
server.starttls()
#server.set_debuglevel(1)
server.login(from_user,password) 發(fā)件人賬號(hào)密碼
server.sendmail(from_user,to_user,msg.as_string()) 發(fā)送格式
server.quit()
if __name__ == '__main__':
print "Mail sending......."
sendmail()
print "Mail processed Over"
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。