zoukankan      html  css  js  c++  java
  • HPUX下使用python发送邮件

    1 用脚本语言发送邮件是系统管理员必备技能

      对系统定期检查并生成文档和报表是管理员最不喜欢的。

      发布这些文档最快速有效的方法就是发送邮件。

      收集系统信息、格式化信息不在本文讨论。 

      目标:通过gmail将信息发送给目标邮箱。

      环境: HP-UX 11i v2,Python 2.5.2

    2 实现

    2.1 简单发送邮件

       通过Gmail发送,Gmail的SMTP地址为:smtp.gmail.com

    import smtplib#导入需要的module
    def prompt(prompt):#定义一个目标邮箱输入的函数
        return raw_input(prompt).strip()

    mail_server 
    = 'smtp.gmail.com'
    mail_server_port 
    = 25
    from_addr 
    = 'someone@gmail.com'
    to_addr 
    = prompt("To: ").split()#提示输入目标邮箱

    from_header 
    = 'From: %s\r\n' % from_addr
    to_header 
    = 'To: %s\r\n\r\n' % to_addr
    subject_header 
    = 'Subject: nothing interesting'

    body 
    = 'This is a new SMTP test mail by SSL.'

    email_message 
    = '\n\n\n%s%s%s\n\n%s' % (from_header, to_header, subject_header, body)
    #print email_message

    = smtplib.SMTP(mail_server, mail_server_port)#创建SMTP对象
    #
    s.set_debuglevel(1)
    s.ehlo()#向Gamil发送SMTP 'ehlo' 命令
    s.starttls()#启动TLS模式,Gmail要求
    s.login("someone@gmail.com""123456789")#用户验证
    s.sendmail(from_addr, to_addr, email_message)#发送邮件
    s.quit()#退出 

      信息发出。

    2.2 MIME邮件发送

      MIME--多功能Internet 邮件扩充服务。有了它就可以发送带主题、发送人、接收人和附件等等信息的邮件。在python中也有具体的实现方法:

    import smtplib,email,os,sys

    from email.MIMEBase import MIMEBase
    from email.MIMEText import MIMEText
    from email.MIMEMultipart import MIMEMultipart
    from email import Encoders
    from email.header import Header

    def prompt(prompt):
        
    return raw_input(prompt).strip()

    mail_server 
    = 'smtp.gmail.com'
    mail_server_port 
    = 587
    from_addr 
    = 'yourmail@gmail.com'
    to_addr 
    = prompt("To: ").split()
    attachment 
    = 'demo1.py'

    msg 
    = MIMEMultipart()

    msg[
    'From'= from_addr
    msg[
    'To'= str(to_addr)
    msg[
    'Subject'= Header('===MIME Email Demo===''utf8')
    msg[
    'Reply-To'= from_addr
    print msg.as_string()

    email_message 
    = 'this is sent by MIME Demo'

    msg.attach(MIMEText(email_message))
    #, _subtype='html', _charset='utf8',))

    fp 
    = open(attachment, 'rb')
    part 
    = MIMEBase('application'"octet-stream")
    part.set_payload(fp.read())
    fp.close()
    Encoders.encode_base64(part)
    part.add_header(
    'Content-Disposition''attachment; filename="%s"' % attachment)
    msg.attach(part)

    = smtplib.SMTP(mail_server, mail_server_port)
    #s.set_debuglevel(1)
    s.ehlo()
    s.starttls()
    s.login(
    "yourmail@gmail.com""yourpassword")
    s.sendmail(from_addr, to_addr, msg.as_string())
    s.quit()

       这里创建了MIMEMultipart对象并用它生成需要发送的字符串进行发送,在接受到邮件后会显示对应的发件人、主题等内容。

       (2.2节于2010-4-5更新) 

    3 结束

      本篇使用Python版本2.5.2,和2.6.*在 starttls()函数中有一些不同,2.6.*中starttls()会自动判断并发送ehlo命令,但是2.5.2中不会,因此需要在执行starttls()之前执行

    ehlo()函数,否则会报错:

    smtplib.SMTPException: SMTP AUTH extension not supported by server
  • 相关阅读:
    tornado源码分析-多进程
    create a cocos2d-x-3.0 project in Xcode
    记录自己的傻逼的错误:找不到或无法载入主类
    MVC5 Entity Framework学习之实现主要的CRUD功能
    Linux中实现多网卡绑定总结
    it码农之心灵鸡汤(一)
    【高级算法】遗传算法解决3SAT问题(C++实现)
    MySQL-分区表-1
    OpenSift源代码编译过程记录
    Android Studio 视图解析
  • 原文地址:https://www.cnblogs.com/ddr888/p/1696094.html
Copyright © 2011-2022 走看看