首页云计算 正文

Python 发送邮件支持附件

2024-11-19 8 0条评论
  1. 首页
  2. 证书相关
  3. Python 发送邮件支持附件

Python 发送邮件支持附件

发布日期:2017-04-23 通过命令行发送邮件,功能强大 命令:
1 # python ./mail -s $server -f $from -t $to -u $user -p $pass -S “$subject” -m “${mail_msg}” -F $file

源代码如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 # vim mail #!/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 , subject , 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 “test@trustauth.cn,test1@trustauth.cn”.      -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 , from_addr , to_addr , username , password )      test . send ( msg , subject , filename ) else :      usage ( )

 

 

 

 

文章转载来自:trustauth.cn

上一篇:Python日常巡检程序(daily-check)

下一篇:GCC PGO让你的PHP7更快

相关新闻

  • SSL证书对网站访问速度有影响吗
  • 个人隐私数据泄露有哪些危害?如何预防?
  • 部署SSL证书有哪些常见的错误
  • 国际证书、国产证书和国密证书
  • 游戏开发为什么离不开代码签名?
  • 僵尸网络攻击手法与防范方式
  • SSL证书助力保障网络数据安全
  • 网站加密与不加密区别
  • SSL证书有哪些类型和价格差异
  • ca机构颁发的证书包括那些内容呢?
文章版权及转载声明

本文作者:admin 网址:http://news.edns.com/post/113151.html 发布于 2024-11-19
文章转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码