在Linux服务器上定时执行shell脚本,当发生错误时,需要发送邮件知会开发组,但是我想把错误日志当做附件发送,结果原来的不支持附件。强迫症犯了,虽然不懂Python语言,只好硬着头皮去写,去测试。写完了,本地测试木有任何问题,心中一阵窃喜。不料放在QA环境测试时,意向不到的事情发生了。发送邮件时报错:
Traceback (most recent call last):
File "/data/news/tools/bin/smtp.py", line 12, in ?
from email.mime.multipart import MIMEMultipart
ImportError: No module named mime.multipart
心理很是郁闷,发现在引包时发生错误,查看了服务器的Python版本,才发现版本是2.4.3,只好基于2.4.3又写了一版本。详见下文。
Python version 2.4.3
下载地址:http://download.csdn.net/download/haber001/8106081
Python version 2.7.8及以上
下载地址:http://download.csdn.net/download/haber001/8106087
Python version 2.4.3
#!/usr/bin/env python
#python version 2.4.3
#Send Email
#@author Haber
#@Date 2014/10/31
import os,sys
import smtplib
import socket
import traceback
import mimetypes
import email
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.MIMEAudio import MIMEAudio
from email.MIMEImage import MIMEImage
from email.Encoders import encode_base64
def sendMail(smtp_server, smtp_server_port, from_addr, mail_passwd, to_addr, subject, mail_type, content , *files_path):
if to_addr.count(';') >=1:
to_real_addr=to_addr.split(';')
elif to_addr.count(',') >=1:
to_real_addr=to_addr.split(',')
else:
to_real_addr=to_addr
mailMsg = MIMEMultipart()
mailMsg['From'] = from_addr
mailMsg['To'] = to_addr
mailMsg['Subject'] = subject
mailMsg.attach(MIMEText(content,mail_type))
for path in files_path:
if os.path.isfile(path):
attach = getAttachment(path)
if attach :
mailMsg.attach(attach)
mailServer = smtplib.SMTP(smtp_server, smtp_server_port)
# mailServer.set_debuglevel(1)
# mailServer.login(from_addr, mail_passwd)
mailServer.sendmail(from_addr, to_real_addr, mailMsg.as_string())
mailServer.quit()
print('Sent email to %s' % to_ad