Python 发送邮件可以添加附件

Python 发送邮件可以添加附件,第1张

概述Python 发送邮件可以添加附件

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

#!/usr/bin/pythonfrom email.MIMEText import MIMETextfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEBase import MIMEBasefrom email import Utils,Encodersimport mimetypes,sys,smtplib,socket,getoptclass 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=valueif server and from_addr and to_addr and username and password:    test=SendMail(server,username,password)    test.send(msg,filename)else:    usage()

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

总结

以上是内存溢出为你收集整理的Python 发送邮件可以添加附件全部内容,希望文章能够帮你解决Python 发送邮件可以添加附件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1198701.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存