`
a3mao
  • 浏览: 562887 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python3发送邮件

 
阅读更多
#!/usr/bin/python3
#!-*- coding: utf-8-*-

import smtplib
import time
import sys
import os
import logging
import logging.handlers

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
 

#time_out
CONN_TIME_OUT=10
MAIL_LOG_LEVEL=0
ENCODING="UTF-8"

KB=1024
MB=1024*KB

LEVELS = {'debug': logging.DEBUG,
          'info': logging.INFO,
          'warning': logging.WARNING,
          'error': logging.ERROR,
          'critical': logging.CRITICAL}
          
LOG_FILENAME = 'mail_helper_log.out'
#logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG,)
#logger=logging.getLogger('MyLogger')
#handler = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=5*MB, backupCount=15, encoding=ENCODING)
#logger.addHandler(handler)

class MailHelper:
    """
        create an mailUtil instance and pass some vars.
        Usage:
            mailUtil=mail.MailHelper("mexcn01.nhncorp.cn",  "CN90056", "CN90056", smtp_port=25)
            mailUtil.setFrom("noreply@nhn.com")
            mailUtil.setLogLevel("info")
            mailUtil.send("A3mao.zzg@nhn.com", "subject", "body message")
    """
    def __init__(self, smtp_host, smtp_user, smtp_password, smtp_port=25, 
                        time_out=CONN_TIME_OUT):
        self.smtp_host=smtp_host
        self.smtp_port=smtp_port
        self.smtp_user=smtp_user
        self.smtp_password=smtp_password
        self.time_out=time_out
        self.mail=MIMEMultipart('related')
        self.alter=MIMEMultipart('alternative')
        self.mail.attach(self.alter) 
        self.debug_level=MAIL_LOG_LEVEL
        self.logger=logging.getLogger('MyLogger')
        logFile=os.path.join(os.getenv("HOME"), LOG_FILENAME) 
        self.handler = logging.handlers.RotatingFileHandler(logFile, 
                                maxBytes=5*MB, backupCount=15, encoding=ENCODING)
        self.logger.addHandler(self.handler)

    
    def setLogLevel(self, level_name):
        """
          set debug level, when 1 on else off
        """
        level = LEVELS.get(level_name, logging.NOTSET) 
        self.logger.setLevel(level)
        #logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG,)
        
        # only debug can display the log message
        if(int(level)== 10):
          self.debug_level=1
        else:
          self.debug_level=MAIL_LOG_LEVEL  
          
    def setFrom(self, mail_from):
        """
            set mail from 
        """
        self._from=mail_from
        self.mail["From"]=mail_from

    def send(self, toAddr, subject, msg_body, msg_body_type='html', encoding=ENCODING):
        """
            send email
        """
        currentTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
        self.logger.info("send messgae \n[\n\t  Subject : {0:>5} \n\t  From : {1} \n\t  To : {2} \n\t  Time : {3}\n\t  Message : {4:>5} \n] ".format(subject, self.mail["From"], toAddr, currentTime, msg_body))
        
        if (type(toAddr) == list):
            self.mail['To'] = ','.join(toAddr)
        elif (type(toAddr) == str):
            self.mail['To'] = toAddr
        else:
            raise Exception('invalid mail to')  

        if(msg_body_type == 'html'):
          self.alter.attach(MIMEText(msg_body, 'html', encoding))
        else:
          self.alter.attach(MIMEText(msg_body, 'plain', encoding))  

        self.mail['Subject'] = subject
        self.mail['Date'] = currentTime
        server = False
        try:
          server = smtplib.SMTP(self.smtp_host, self.smtp_port, self.time_out)
          server.set_debuglevel(self.debug_level)
          server.login(self.smtp_user, self.smtp_password)
          server.sendmail(self.mail["From"], self.mail['To'], self.mail.as_string())
          return  True
        except Exception as e: 
          logging.error(sys.exc_info())
          return False
        finally:
         server and server.quit() 
         self.logger.info("********************* send mail finished and quit ********************* ")

 

调用

 

   上面为文件 mail_helper.py

 

 mailhelper=mail.MailHelper(smtp_host,  smtp_user, smtp_password, smtp_port=25)
                mailhelper.setFrom(smtp_from)
                mailhelper.setLogLevel("info") 
                currentTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
                mailhelper.send(smtp_to, "Warning!! monitor mail : " + currentTime, content)
 
分享到:
评论

相关推荐

    基于Python实现多进程的发送邮件.zip

    本课程设计的目标是利用Python实现多进程发送邮件的功能。 首先,我们需要了解Python中的`multiprocessing`模块,它是Python提供的一个标准库,用于实现多进程。通过创建子进程,每个进程可以独立地执行任务,互不...

    python3 发送邮件包括主题和附件

    使用python3自带的库实现邮件发送,包括主题、附件等,可直接使用

    Python发邮件代码

    Python发邮件代码

    python3 多账户发邮件代码

    在Python3中,多账户发邮件的实现主要依赖于`smtplib`库和`email.mime`模块。`smtplib`库提供了与SMTP(简单邮件传输协议)服务器交互的功能,而`email.mime`则用于创建符合邮件标准的邮件对象。下面我们将详细探讨...

    python 简易发送邮件程序

    python GUI实现简易发送邮件程序。

    python实现下载pop3邮件保存到本地

    Python实现下载pop3邮件保存到本地的知识点涉及到使用Python进行网络编程,利用poplib模块与邮件服务器交互,以及使用正则表达式处理邮件内容。以下是详细介绍: 1. poplib模块介绍: poplib是Python标准库的一部分...

    Python实现自动发送邮件和发送钉钉消息源码

    本篇将深入讲解如何利用Python的requests库发送钉钉消息以及如何使用email和smtplib库发送邮件,特别是与163邮箱服务的集成。 首先,我们来探讨如何使用requests库发送钉钉消息。钉钉提供了Webhook接口,通过...

    基于Python的电子邮件自动发送程序设计.pdf

    基于Python的电子邮件自动发送程序设计涉及多个知识点,包括Python编程、邮件发送协议、电子邮件格式构造、文件操作以及程序的时间控制等。以下是详细的知识点说明。 首先,Python编程是整个项目的核心。Python由于...

    2024最新Python发送Google邮件原创,以及Shell文件方法

    这里是目前最有效的实现Python发送Google邮件,不仅仅提供了发送纯文本的Google邮件,以及发送HTML、图片附件、Word附件的邮件。另外提供了在服务器端不使用Python而是使用Shell脚本的方式实现。我保证你看了之后...

    python爬虫发邮件示例demo

    在这个“python爬虫发邮件示例demo”中,我们将探讨如何结合Python的爬虫技术和邮件发送功能,实现自动抓取数据并将其通过电子邮件发送出去。 首先,我们需要了解Python中的两个关键库:`requests` 和 `...

    python代码发送邮件的示例

    使用python代码自动发送邮件,运行前请先将邮箱地址及密码改成自己的

    Python自动发送邮件并添加附件的源代码V2.1

    Python作为一种强大且易学的编程语言,广泛应用于各种自动化场景,包括电子邮件的自动发送。本教程将基于提供的"Python自动发送邮件并添加附件的源代码V2.1"进行深入解析,帮助你理解和实现类似的功能。 首先,我们...

    python_发送邮件.docx

    Python发送邮件是编程中常见的需求,特别是在自动化任务和通知系统中。本文档主要介绍了两种使用Python发送邮件的方法,涉及到了smtplib和email模块。 首先,smtplib是Python的标准库,它提供了一种与SMTP(简单...

    python发送邮件脚本

    python发送邮件代码,服务器配置请自行修改,脚本中的地址是内网搭建的邮件服务器。可以结合系统定时任务配置邮件定时发送。希望帮到你

    Python发邮件源码

    这里我们关注的主题是“Python发邮件源码”,这通常涉及到使用SMTP(Simple Mail Transfer Protocol)来实现邮件的发送。下面我们将深入探讨这个话题,并提供一个实际的Python代码示例。 首先,你需要了解Python中...

    python邮件发附件方法

    Python 邮件发附件方法是指使用 Python 语言发送带附件的电子邮件。该方法使用了 Python 的 email 模块,通过该模块可以创建一个带附件的邮件实例,并将其发送到指定的收件人邮箱中。 email 模块是 Python 的一个...

    python3自动发邮件脚本

    python3自动发邮件脚本,以QQ邮箱为例,自己配置发送邮箱和授权码

    python3发送邮件,更新匿名发送

    可发送图片,附件,包括多个收件人和抄送人以及匿名发送

Global site tag (gtag.js) - Google Analytics