Python 发送邮件可以添加附件
发布时间:2020-12-17 17:11:24 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/pythonfrom email.MIMEText import MIMETextfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEBase import MIMEBasefrom ema
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 #!/usr/bin/python from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email import Utils,Encoders import mimetypes,sys,smtplib,socket,getopt class SendMail: def __init__(self,smtp_server,from_addr,to_addr,user,passwd): self.mailserver=smtp_server self.from_addr=from_addr self.to_addr=to_addr self.username=user self.password=passwd def attachment(self,filename): fd=open(filename,'rb') filename=filename.split('/') mimetype,mimeencoding=mimetypes.guess_type(filename[-1]) if (mimeencoding is None) or (mimetype is None): mimetype='application/octet-stream' maintype,subtype=mimetype.split('/') if maintype=='text': retval=MIMEText(fd.read(),_subtype=subtype,_charset='utf-8') else: retval=MIMEBase(maintype,subtype) retval.set_payload(fd.read()) Encoders.encode_base64(retval) retval.add_header('Content-Disposition','attachment',filename=filename[-1]) fd.close() return retval def msginfo(self,msg,subject,filename): # message = """Hello,ALL #This is test message. #--Anonymous""" message=msg msg=MIMEMultipart() msg['To'] = self.to_addr msg['From'] = 'sa <'+self.from_addr+'>' msg['Date'] = Utils.formatdate(localtime=1) msg['Message-ID'] = Utils.make_msgid() if subject: msg['Subject'] = subject if message: body=MIMEText(message,_subtype='plain') msg.attach(body) #for filename in sys.argv[1:]: if filename: msg.attach(self.attachment(filename)) return msg.as_string() def send(self,msg=None,subject=None,filename=None): try: s=smtplib.SMTP(self.mailserver) try: s.login(self.username,self.password) except smtplib.SMTPException,e: print "Authentication failed:",e sys.exit(1) s.sendmail(self.from_addr,self.to_addr.split(','),self.msginfo(msg,filename)) except (socket.gaierror,socket.error,socket.herror,smtplib.SMTPException),e: print "*** Your message may not have been sent!" print e sys.exit(2) else: print "Message successfully sent to %d recipient(s)" %len(self.to_addr) if __name__=='__main__': def usage(): print """Useage:%s [-h] -s <SMTP Server> -f <FROM_ADDRESS> -t <TO_ADDRESS> -u <USER_NAME> -p <PASSWORD> [-S <MAIL_SUBJECT> -m <MAIL_MESSAGE> -F <ATTACHMENT>] Mandatory arguments to long options are mandatory for short options too. -f,--from= Sets the name of the "from" person (i.e.,the envelope sender of the mail). -t,--to= Addressee's address. -t "[email?protected],[email?protected]". -u,--user= Login SMTP server username. -p,--pass= Login SMTP server password. -S,--subject= Mail subject. -m,--msg= Mail message.-m "msg,......." -F,--file= Attachment file name. -h,--help Help documen. """ %sys.argv[0] sys.exit(3) try: options,args=getopt.getopt(sys.argv[1:],"hs:f:t:u:p:S:m:F:","--help --server= --from= --to= --user= --pass= --subject= --msg= --file=",) except getopt.GetoptError: usage() sys.exit(3) server=None from_addr=None to_addr=None username=None password=None subject=None filename=None msg=None for name,value in options: if name in ("-h","--help"): usage() if name in ("-s","--server"): server=value if name in ("-f","--from"): from_addr=value if name in ("-t","--to"): to_addr=value if name in ("-u","--user"): username=value if name in ("-p","--pass"): password=value if name in ("-S","--subject"): subject=value if name in ("-m","--msg"): msg=value if name in ("-F","--file"): filename=value if server and from_addr and to_addr and username and password: test=SendMail(server,username,password) test.send(msg,filename) else: usage() 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |