python邮件发送脚本

转自:http://phinecos.cnblogs.com/

  1 #!/usr/bin/python
  2 #coding=utf-8
  3
  4 #@author:dengyike
  5 #@date:2010-09-28
  6 #@version:1.0
  7 #@description: auto sending email with attachment file
  8
  9 import email
 10 import mimetypes
 11 from email.MIMEMultipart import MIMEMultipart
 12 from email.MIMEText import MIMEText
 13 from email.MIMEImage import MIMEImage
 14 import smtplib
 15 import logging
 16 import sys
 17
 18 reload(sys)
 19 sys.setdefaultencoding('utf8')
 20
 21 mailDict = {} #邮件配置信息
 22
 23 ###################
 24 #日志辅助类
 25 #################
 26 class Logger:
 27     LOG_RELEASE= "releae"
 28     LOG_RELEASE_FILE = "/tmp/pyMail.log"
 29
 30     def __init__(self, log_type):
 31         self._logger = logging.getLogger(log_type)
 32         if log_type == Logger.LOG_RELEASE:
 33             self._logFile = Logger.LOG_RELEASE_FILE
 34         handler = logging.FileHandler(self._logFile)
 35         if log_type == Logger.LOG_RELEASE:
 36             formatter = logging.Formatter('%(asctime)s ********* %(message)s')
 37         else:
 38             formatter = logging.Formatter('%(message)s')
 39         handler.setFormatter(formatter)
 40         self._logger.addHandler(handler)
 41         self._logger.setLevel(logging.INFO)
 42
 43     def log(self, msg):
 44         if self._logger is not None:
 45             self._logger.info(msg)
 46
 47 MyLogger = Logger(Logger.LOG_RELEASE) #Logger
 48
 49 def initMailConf():#初始化邮件配置信息
 50     global mailDict
 51     mailDict['server'] = "smtp.google.com"
 52     mailDict['user'] = "dengyike"
 53     mailDict['password'] = "dengyike"
 54     mailDict["from"] = "dengyike@google.com"
 55     mailDict["cc"] = "dengyike@google.com,phinecos@google.com"
 56     mailDict["to"] = "dengyike@google.com"
 57     mailDict["subject"]  = "python邮件脚本测试"
 58     mailDict["text"] = "这里是普通文本信息"
 59     mailDict["html"] = '<font color = red ><b>这里是HTML文本信息</b></font>'
 60
 61 def sendMail(paramMap):#发送邮件
 62     smtp = smtplib.SMTP()
 63     msgRoot = MIMEMultipart('related')
 64     msgAlternative = MIMEMultipart('alternative')
 65     if paramMap.has_key("server") and paramMap.has_key("user") and paramMap.has_key("password"):
 66         try:
 67             smtp.set_debuglevel(1)
 68             smtp.connect(paramMap["server"])
 69             smtp.login(paramMap["user"], paramMap["password"])
 70         except Exception, e:
 71             MyLogger.log("smtp login exception!")
 72             return False
 73     else:
 74         MyLogger.log("Parameters incomplete!")
 75         return False
 76
 77     if paramMap.has_key("subject") == False or  paramMap.has_key("from")== False or paramMap.has_key("to") == False:
 78         MyLogger.log("Parameters incomplete!")
 79         return False
 80     msgRoot['subject'] = paramMap["subject"]
 81     msgRoot['from'] = paramMap["from"]
 82     if paramMap.has_key("cc"):
 83         msgRoot['cc'] = paramMap["cc"]
 84     msgRoot['to'] = paramMap["to"]
 85     msgRoot.preamble = 'This is a multi-part message in MIME format.'
 86     msgRoot.attach(msgAlternative)
 87     TempAddTo = paramMap["to"]
 88     if paramMap.has_key("text"):
 89         msgText = MIMEText(paramMap["text"], 'plain', 'utf-8')
 90         msgAlternative.attach(msgText)
 91     if paramMap.has_key("html"):
 92         msgText = MIMEText(paramMap["html"], 'html', 'utf-8')
 93         msgAlternative.attach(msgText)
 94     if paramMap.has_key("image"):
 95         fp = open(paramMap["image"], 'rb')
 96         msgImage = MIMEImage(fp.read())
 97         fp.close()
 98         msgImage.add_header('Content-ID', '<image1>' )
 99         msgRoot.attach(msgImage)
100     if paramMap.has_key("cc"):
101         TempAddTo = paramMap["to"] + "," + paramMap["cc"]
102     if TempAddTo.find(",") != -1:
103         FinallyAdd = TempAddTo.split(",")
104     else:
105         FinallyAdd = TempAddTo
106
107     #构造附件
108     fileName = "/tmp/test.zip"
109     basename = os.path.basename(fileName)
110     if os.path.exists(fileName): #数据文件存在
111         data = open(fileName, 'rb')
112         att = MIMEText(data.read(), 'base64', 'gb2312')
113         att["Content-Type"] = 'application/octet-stream'
114         att["Content-Disposition"] = 'attachment; filename="%s"' % basename
115         msgRoot.attach(att)
116         smtp.sendmail(paramMap["from"], FinallyAdd, msgRoot.as_string())
117         smtp.quit()
118     return True
119
120 def process():
121     global mailDict
122     initMailConf()
123     sendMail(mailDict)
124
125 if __name__ == "__main__":
126     process()

 最后把运行命令加入crontab中,就可以每天定时自动发送邮件了。

时间: 2024-10-26 06:07:10

python邮件发送脚本的相关文章

可以被授权用户引用的自动邮件发送脚本程序

程序|脚本 呵呵,以前经常有朋友要我帮他们写一个用服务器在后台发送邮件的程序,嫌麻烦,就在我自己的服务器上写了一段代码,以后别人要用服务器来发送邮件时,只需要在自己的程序中简单的写一行引用代码就OK了! 有个前提:必须先在你自己的服务器上安装一个邮件发送组件,我这儿用的是JMail,其它组件,可查看相应的函数说明修改一下我的程序即可. 程序语言: ASP(VBScript)我的服务器地址:http://211.23.12.12 (为保密起见,此地址为杜撰) 服务器端程序SendMail.asp代

python 邮件发送实现方法(基础篇)

下面把主要的代码贴一下: 初始化,定义邮件服务器 self.IMAP_SERVER='imap.gmail.com'         self.IMAP_PORT=993         self.M = None         self.response         self.mailboxes = [] 登录,选择mailbox: self.M = imaplib.IMAP4_SSL(self.IMAP_SERVER, self.IMAP_POR rc, self.response =

python使用smtplib模块通过gmail实现邮件发送的方法

  这篇文章主要介绍了python使用smtplib模块通过gmail实现邮件发送的方法,涉及Python使用smtplib模块发送邮件的相关技巧,非常简单实用,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import smtplib from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText fromaddr

C#实现邮件发送

C#实现邮件发送 原文链接 通过.Net FrameWork 2.0下提供的"System.Net.Mail"可以轻松的实现,本文列举了3种途径来发送:    1.通过Localhost:    2.通过普通SMTP;    3.通过SSL的SMTP;        下面一个一个来说:        1.通过LocalHost            1public void SendMailLocalhost()    2 ...{    3 System.Net.Mail.MailM

php带抄送和密件抄送的邮件发送方法_php技巧

本文实例讲述了php带抄送和密件抄送的邮件发送方法.分享给大家供大家参考.具体分析如下: 程序中用到了php的mail函数,该函数定义如下: bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) 如果邮件发送成功返回True,否则返回False <html> <head> <ti

linux中sendmail邮件发送导致服务器延迟

在折腾自动备份到邮箱的脚本,执行中突然vps变得非常卡,ping了下发现vps的延迟飙升到了2000+,从阿里云后台的监控看上行带宽最大已经达到了1MB/s, 停止sendmail服务后延迟正常,重启后问题依旧,很容易就可以判断应该是邮件发送的附件体积较大占用大量网络资源导致的问题,尝试重启sendmail问题依旧,可以判断重启后邮件仍在发送的列队,会重新发送,平常很少使用mail命令,所以一番搜索后找到答案:    代码如下 复制代码 [root@abccccc ~]# sendmail -b

php实现在站点里面添加邮件发送的功能_php实例

下面夏日博客来讲下如何在站点里面添加一个邮件发送的功能. 首先需要下载一个smtp 的 php 邮件发送类,代码如下: <?php class smtp { /* Public Variables */ public $smtp_port; public $time_out; public $host_name; public $log_file; public $relay_host; public $debug; public $auth; public $user; public $pas

PHP实现发送邮件的方法(基于简单邮件发送类)_php技巧

本文实例讲述了PHP实现发送邮件的方法.分享给大家供大家参考,具体如下: 邮件发送类 <?php /*邮件发送类 *功能:使用smtp服务器发送邮件 */ class smtp { /* 全局变量 */ var $smtp_port; var $time_out; var $host_name; var $log_file; var $relay_host; var $debug; var $auth; var $user; var $pass; var $sock; /* 构造函数 */ fu

使用PHPMailer实现邮件发送代码分享_php实例

发送邮件是常用的功能,LZ今天在项目中也碰到了,特此分享一下. 首先,去下载PHPMailer 1.https://github.com/dwqs/PHPMailer 2.http://download.csdn.net/detail/u011043843/8063583 下载之后,将文件解压到项目目录的对应位置,将class.phpmailer.php和class.smtp.php引入项目中,看代码:(解压的文件不要删除,否则不行) <?php // 必要导入 require("clas