## ##****************************************************************************** ## NAME: SendMail ## PURPOSE: ## ## REVISIONS: ## Ver Date Author Description ## --------- ---------- --------------- ------------------------------------ ## 1.0 2010/06/28 Litrin J. 1. Created this Script. ## ## NOTES: ## ## Object Name: SendMail.py ## Sysdate: 2010/06/28 ## ## Username: Litrin Jiang ## Website: litrin.net ## ##****************************************************************************** ## import sys import smtplib import email import re class SendMail: MailServer = {} MailServer['UserName'] = '' MailServer['Password'] = '' #SMTP密码 MailServer['Host'] = '' MailServer['SSL'] = False MailServer['Port'] = 0 Subtype = 'html' Charset = 'gb2312' SenderName = '' ReciverName = '' Notification = False __aRealAddressList = [] def __init__ (self, From = '', Address='', Subject='', Body='', CCAddress = '', BCCAddress = ''): if ((From + Address + Subject + Body) != ''): self.Send(self, From, Address, Subject, Body, CCAddress = '') def Send(self, From, Address, Subject, Body, CCAddress = '', BCCAddress = ''): self.Email = email.MIMEText.MIMEText (Body,_subtype=self.Subtype, _charset=self.Charset) self.Email['From'] = self.AddressList(From, self.SenderName, False) self.Email['To'] = self.AddressList(Address) if CCAddress != '': self.Email['Cc'] = self.AddressList(CCAddress) if BCCAddress != '': self.AddressList(BCCAddress) self.Email['Subject'] = self.StrEncode(Subject) self.Email['X-Maile'] = '<a title="Python" href="http://www.litrin.net/tag/python/">Python</a> Script by Litrin.net' self.Email['X-Python-Version'] = str(sys.platform) + str(sys.version_info) if (self.Notification) : self.Email['Disposition-Notification-To'] = From self.__ServerSending() def StrEncode(self, String, Charset = ''): if Charset == '': Charset = self.Charset return str(email.Header.Header (String, Charset)) def AddressList(self, oAddress, ReciverName = '', SendingList = True): if isinstance(oAddress, dict): To = '' for dAddress in oAddress : To += self.AddressList(oAddress[dAddress],dAddress ) + ',' return To elif isinstance(oAddress, list): To = '' for sAddress in oAddress : To += self.AddressList (sAddress, '') + ',' return To else: try : self.CheckEmail(oAddress) except: print oAddress + 'is not a Email address!' exit() if ReciverName == '': ReciverName = self.ReciverName if ReciverName != '': To = self.StrEncode(ReciverName) + '<' + oAddress + '>' else: To = oAddress if SendingList : self.__aRealAddressList.append(oAddress) return To def CheckEmail(self, sEmailAddress): sRegex = r'^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$' return re.match(sRegex, sEmailAddress) def __ServerSending(self): if (self.MailServer['SSL'] == False): server = smtplib.SMTP(self.MailServer['Host'],port = self.MailServer['Port']) else: server = smtplib.SMTP_SSL(self.MailServer['Host'], port = self.MailServer['Port']) server.login(self.MailServer['UserName'], self.MailServer['Password']) for sAddress in self.__aRealAddressList: server.sendmail(self.Email['From'], sAddress, self.Email.as_string()) server.quit() if __name__ == '__main__': mail = SendMail() mail.MailServer['UserName'] = '' mail.MailServer['Password'] = '' #SMTP密码 mail.MailServer['Host'] = '' #mail.MailServer['SSL'] = True mail.SenderName = 'Litrin J.' mail.Send(From = <a rel="nofollow" target="_blank" href="mailto:'abc@123.com'">'abc@123.com'</a>, Address = <a rel="nofollow" target="_blank" href="mailto:'abc@71inc.com'">'abc@71inc.com'</a>, Subject = 'Subject:test', Body = '<b>This is a test mail!</b>')
转载请注明:爱开源 » 重新封包的python smtplib