发送邮件的功能时常用到,在Python也是如此,当然可以使用Python调用jar发送邮件,但其实Python也有相应的模块:smtplib和email。
#!/usr/bin/python # -*- coding: utf-8 -*- import smtplib from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText from email.MIMEImage import MIMEImage class smtpClient: def __init__(self, logger): self.logger = logger self.smtp = None def connect(self, smtpServerIp, port, userName, password, isAuth=True): try: self.smtp = smtplib.SMTP() self.smtp.set_debuglevel(1) self.smtp.connect(smtpServerIp, port) if isAuth: self.smtp.set_debuglevel(0) self.smtp.login(userName, password) except Exception, exInfo: logInfo = "Connect SMTP server failed: [%s]" %exInfo self.logger.error(logInfo) def disconnect(self): try: if self.smtp: self.smtp.set_debuglevel(1) self.smtp.quit() except Exception, exInfo: logInfo = "Disconnect SMTP server failed: [%s]" %exInfo self.logger.error(logInfo) '''Send HTML format file''' def send(self, subject, sender, receiver, ccer, txt, pic=""): try: msgRoot = MIMEMultipart('related') msgRoot['Subject'] = subject msgRoot['From'] = sender msgRoot['To'] = receiver msgRoot['Cc'] = ccer msgRoot.preamble = 'This is a multi-part message in MIME format.' msgAlternative = MIMEMultipart('alternative') msgText = MIMEText(txt, 'html', 'utf-8') msgAlternative.attach(msgText) msgRoot.attach(msgAlternative) if pic: picReader = open(pic, 'rb') msgImage = MIMEImage(picReader.read()) picReader.close() msgImage.add_header('Content-ID', '<p_w_picpath1>') msgRoot.attach(msgImage) self.smtp.set_debuglevel(0) toer = receiver + ',' + ccer self.smtp.sendmail(sender, toer.split(','), msgRoot.as_string()) except Exception, exInfo: logInfo = "Send mail failed: [%s]" %exInfo self.logger.error(logInfo)
MIMEText和MIMEImage能够提供Mail不同的文本样式和图片。