• [Python] 发送email的几种方式


    python发送email还是比較简单的,能够通过登录邮件服务来发送,linux下也能够使用调用sendmail命令来发送,还能够使用本地或者是远程的smtp服务来发送邮件,无论是单个,群发,还是抄送都比較easy实现。

    先把几个最简单的发送邮件方式记录下,像html邮件,附件等也是支持的,须要时查文档就可以

    1 登录邮件服务

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #python2.7x
    #send_simple_email_by_account.py  @2014-07-30
    #author: orangleliu
    
    '''
    使用python写邮件 simple
    使用126 的邮箱服务
    '''
    
    import smtplib
    from email.mime.text import MIMEText
    
    SMTPserver = 'smtp.126.com'
    sender = 'liuzhizhi123@126.com'
    password = "xxxx"
    
    message = 'I send a message by Python. 你好'
    msg = MIMEText(message)
    
    msg['Subject'] = 'Test Email by Python'
    msg['From'] = sender
    msg['To'] = destination
    
    mailserver = smtplib.SMTP(SMTPserver, 25)
    mailserver.login(sender, password)
    mailserver.sendmail(sender, [sender], msg.as_string())
    mailserver.quit()
    print 'send email success'

    2调用sendmail命令 (linux)

    # -*- coding: utf-8 -*-
    #python2.7x
    #send_email_by_.py
    #author: orangleliu
    #date: 2014-08-15
    '''
    用的是sendmail命令的方式
    
    这个时候邮件还不定能够发出来,hostname配置可能须要更改
    '''
    
    from email.mime.text import MIMEText
    from subprocess import Popen, PIPE
    
    def get_sh_res():
        p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)
        return str(p.communicate()[0])
    
    def mail_send(sender, recevier):
        print "get email info..."
        msg = MIMEText(get_sh_res())
        msg["From"] = sender
        msg["To"] = recevier
        msg["Subject"] = "Yestoday interface log results"
        p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE)
        res = p.communicate(msg.as_string())
        print 'mail sended ...'
    
    if __name__ == "__main__":
        s = "957748332@qq.com"
        r = "zhizhi.liu@chinacache.com"
        mail_send(s, r)
    
    

    3 使用smtp服务来发送(本地或者是远程server)

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #python2.7x
    #send_email_by_smtp.py
    #author: orangleliu
    #date: 2014-08-15
    '''
    linux 下使用本地的smtp服务来发送邮件
    前提要开启smtp服务,检查的方法
    #ps -ef|grep sendmail
    #telnet localhost 25
    
    这个时候邮件还不定能够发出来,hostname配置可能须要更改
    '''
    import smtplib
    from email.mime.text import MIMEText
    from subprocess import Popen, PIPE
    
    
    def get_sh_res():
        p = Popen(['/Application/2.0/nirvana/logs/log.sh'], stdout=PIPE)
        return str(p.communicate()[0])
    
    def mail_send(sender, recevier):
        msg = MIMEText(get_sh_res())
        msg["From"] = sender
        msg["To"] = recevier
        msg["Subject"] = "Yestoday interface log results"
        s = smtplib.SMTP('localhost')
        s.sendmail(sender, [recevier], msg.as_string())
        s.quit()
        print 'send mail finished...'
    
    if __name__ == "__main__":
        s = "zhizhi.liu@chinacache.com"
        r =  s
        mail_send(s, r)
    
    




  • 相关阅读:
    unigui在阿里云服务器上部署
    nativeexcel将excel导入数据集
    nativeexcel数据集导出excel
    超市收银系统
    cxgrid回车移到下一个单元格
    cxGrid单元格获得输入焦点
    TDiocpCoderTcpServer返回数据记录有条数限制的问题
    Ubuntu -- 配置Nginx和https及frp
    REMOTE HOST IDENTIFICATION HAS CHANGED 问题解决
    iOS -- iOS11新特性,如何适配iOS11
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4057665.html
Copyright © 2020-2023  润新知