zoukankan      html  css  js  c++  java
  • Python 发邮件

    # -*- coding: UTF-8 -*-
    import poplib
    import smtplib
    import sys
    import email
    
    class popBasic:
        
        def __init__(self):
            """
            popBasic初始化
            """
            self.isLogin = False
            #self.destDir = destDir
        
        def login(self, popHost, popUser, popPassword, smtpHost, smtpUser, smtpPassword):
            """
            登录pop3和smpt服务器
            @param popHost: pop3服务器地址
            @param popUser: pop3用户名
            @param popPassword: pop3用户密码
            @param smtpHost: smtp服务器地址
            @param smtpUser: smtp用户名
            @param smtpPassword: smtp用户密码
            @return: True - 成功登录pop3与smtp; False - pop3与smtp登录失败
            """
            self.pop = poplib.POP3(popHost)
            try:
                self.pop.user(popUser)
                self.pop.pass_(popPassword)
                self.isLogin = True
                print "POP3 login OK"
                self.smtp = smtplib.SMTP(smtpHost)
                code = self.smtp.login(smtpUser, smtpPassword)
                if not (200 <= code <= 299):
                    self.isLogin = True
                    print "SMTP Login OK."
                else:
                    self.isLogin = False
                    print "SMTP Login Error."            
                return True
            except poplib.error_proto, ex:
                self.isLogin = False
                print "POP3 login Error"
                return False
            
        def getPOPInfo(self):
            """
            获取pop3服务器中登录用户的邮箱信息
            @return: 邮件总数与总字节数 例:(105, 37349795)
            number, size = getPOPInfo()
            """
            if self.isLogin:
                return self.pop.stat()
                    
        def pop2smtp(self, toAdd, fromAdd):
            """
            收pop3邮件,然后转发
            @param toAdd: 新的到达地址
            @param fromAdd: 新的发送地址
            @return: void
            """
            if self.isLogin:
                for item in self.pop.list()[1]:
                    number, octets = item.split(' ')
                    print "POP3 downloading... number: %s" % (number)
                    lines = self.pop.retr(number)[1]
                    msg = email.message_from_string("\n".join(lines))
                    print "download OK. begin SMTP send ..."
                    msg1 = email.Message.Message()
                    msg1['to'] = toAdd     
                    msg1['from'] = fromAdd 
                    msg1['date'] = msg['date']
                    msg1['subject'] = msg['subject']
                    body = ""
                    if msg.is_multipart():
                        for part in msg.get_payload():
                            body = body + part.as_string()
                    else:
                        body = msg.get_payload()
                    mail = msg1.as_string()[:-1] + body
                    self.smtp.sendmail(msg1['from'],msg1['to'], mail)
                    print "send ok."
                    # ---------------------------------------
                    #print "begin delete pop3 mail Number: %s" % (number)
                    #self.pop.dele(number)
                    #print "delete ok."
                    # ---------------------------------------
                    exit(1)       
            
        def loguot(self):
            if self.isLogin:
                self.pop.quit()
                print "POP3 quit."
                self.smtp.close()
                print "SMTP close"
    

      

    处理中文乱码问题

    #-*- encoding: utf-8 -*-
    #
    !/usr/bin/env python
    #
     Author: luohuijun
     
    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header

    def send_email(title = '软件监控通知邮件',meial_server = '',from_name = '', from_pwd = '' ,to_name_list=[],message=''):
        msg = MIMEText(message,'html',_charset='UTF-8'#设置UTF-8编码
        msg['Subject'] =Header(title,"UTF-8")           #设置UTF-8编码
        msg['From'] = meial_server
        msg['To'] = ";".join(to_name_list)
        try:
            s = smtplib.SMTP()
            s.connect(meial_server)
            s.login(from_name,from_pwd)
            s.sendmail(from_name, to_name_list, msg.as_string()) 
            return True
        except Exception, e:
            print str(e)
            return False
        finally:
            s.close()

        
    if __name__=="__main__":
        print send_email(title='软件监控通知邮件',meial_server='smtp.live.com',from_name='lhj588@live.cn',from_pwd='XXXX',to_name_list=['327677031@qq.com','lhj588@live.cn'],message='恭喜您,邮件发送成功!')

        

  • 相关阅读:
    Python-数据结构
    优化算法-BFGS
    Sparse AutoEncoder简介
    Sparse Filtering简介
    基于受限玻尔兹曼机(RBM)的协同过滤
    Grep学习笔记
    【深度学习篇】--Windows 64下tensorflow-gpu安装到应用
    【自然语言处理篇】--聊天机器人从初始到应用
    【深度学习】--DCGAN从入门到实例应用
    【深度学习】--GAN从入门到初始
  • 原文地址:https://www.cnblogs.com/lhj588/p/2499893.html
Copyright © 2011-2022 走看看