最近要用到,定时发送邮件功能:

如何定时,当然要用到linux中crontab了

如下的代码能够定时发送邮件

  1. #!/usr/bin/env python
  2. # -*- coding=utf-8 -*-
  3. import smtplib
  4. from email.mime.text import MIMEText
  5. import threading
  6. import time, datetime
  7.  
  8. mailto_list=["lovychen@126.com"] #里面是对方的邮箱
  9. #-----------QQ邮箱发送设置----------------------
  10. mail_server="smtp.qq.com"#以qq邮箱为例子,里面是QQ邮箱的服务,换成其他邮箱需要更改服务
  11. mail_user=""#这是QQ邮箱的账号
  12. mail_pass=""#如果是其他的可以直接填上密码,如果用qq之类的,或者邮箱未开服务,会提醒你打开下面的链接
  13. #QQ邮箱需要去官方打开服务:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
  14. def send_mail(to_list, sub, content):
  15. msg = MIMEText(content,'plain','utf-8')
  16. msg["Accept-Language"]="zh-CN"
  17. msg["Accept-Charset"]="ISO-8859-1,utf-8"
  18. msg['Subject'] = sub
  19. msg['From'] = mail_user
  20. msg['To'] = ";".join(to_list)
  21. try:
  22. server = smtplib.SMTP()
  23. server.connect(mail_server)
  24. server.starttls()
  25. server.login(mail_user, mail_pass)
  26. server.sendmail(mail_user, to_list, msg.as_string())
  27. server.close()
  28. return True
  29. except Exception, e:
  30. print str(e)
  31. return False
  32.  
  33. def getDate():
  34. return str(datetime.datetime.utcfromtimestamp(time.time())+datetime.timedelta(hours=8))
  35.  
  36. def send_warning_mail(title, info):
  37. nowTime = getDate()
  38. try:
  39. t = threading.Thread(target=send_mail, args=(mailto_list, title, str(nowTime) + " | " + str(info)))
  40. t.start()
  41. except:pass
  42. # send_mail(mailto_list, "mysql异常", info)
  43.  
  44. if __name__ == '__main__':
  45. send_warning_mail("this is title", "\nthis is content")
  46. # print 111

这是能够加上附件的邮件发送:

  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import smtplib
  4. from email.MIMEText import MIMEText
  5. from email.MIMEMultipart import MIMEMultipart
  6. from email.MIMEBase import MIMEBase
  7. from email import Encoders
  8. import time
  9. mail_body='hello, this is the mail content'
  10. mail_from=''#发件人的邮箱
  11. mail_to=['']#收件人邮箱
  12. # 构造MIMEMultipart对象做为根容器
  13. msg=MIMEMultipart()
  14.  
  15. # 构造MIMEText对象做为邮件显示内容并附加到根容器
  16. body=MIMEText(mail_body)
  17. msg.attach(body)
  18.  
  19. # 构造MIMEBase对象做为文件附件内容并附加到根容器
  20. # 等同于如下3行
  21. #contype = 'application/octet-stream'
  22. #maintype, subtype = contype.split('/', 1)
  23. #part = MIMEBase(maintype, subtype)
  24. part = MIMEBase('application', 'octet-stream')
  25.  
  26. # 读入文件内容并格式化,此处文件为当前目录下,也可指定目录 例如:open(r'/tmp/123.txt','rb')
  27. part.set_payload(open('123.txt','rb').read())
  28. Encoders.encode_base64(part)
  29. ## 设置附件头
  30. part.add_header('Content-Disposition', 'attachment; filename="herb.zip"')
  31. msg.attach(part)
  32.  
  33. # 设置根容器属性
  34. msg['Subject']='this is the title'
  35. msg['From']=mail_from
  36. msg['To']=';'.join(mail_to)
  37. msg['date']=time.strftime('%a, %d %b %Y %H:%M:%S %z')
  38. #如上得到了格式化后的完整文本msg.as_string()
  39. #用smtp发送邮件
  40. smtp=smtplib.SMTP()
  41. smtp.connect('')#服务,如果是163的邮箱,就填上smtp.163.com
  42. smtp.login('发件的邮箱','发件的密码')
  43. smtp.sendmail(mail_from,mail_to,msg.as_string())
  44. smtp.quit()
  45. print 'ok'

python (18)在linux中如何实现定时发送邮件的更多相关文章

  1. python (18)在linux中如何实现定时发送邮件到指定邮箱,监测任务

    最近要用到,定时发送邮件功能: 如何定时,当然要用到linux中crontab了 如下的代码能够定时发送邮件 #!/usr/bin/env python # -*- coding=utf-8 -*- ...

  2. Linux中使用Crontab定时监测维护Tomcat应用程序的方法

    Linux中使用Crontab定时监测维护Tomcat应用程序的方法 功能需求: 定时监测发布的某项应用程序是否可用,如果不可用,立即执行处理措施,实现自动化运维工作. 监测的应用接口: 新闻接口.天 ...

  3. linux中php项目无法发送邮件:PEAR mail package is not installed

    发送邮件报错误:PEAR mail package is not installed的原因是linux中缺少PEAR mail组件, PEAR mail组件也就是PHP Pear Mail / SMT ...

  4. linux中使用Crontab定时执行java的jar包无法使用环境变量的问题

    1.crontab简单使用 cmd 其实就是5个星星的事情,随便百度一下吧 5个时间标签用来标注执行的设定.比如每5分钟执行一次/5 * * * cmd 要特别注意 2.有些命令在命令行里执行很好,到 ...

  5. python 安装成linux中的systemd守护运行

    参考文档1:https://blog.csdn.net/luckytanggu/article/details/53467687 参考文档2:https://www.jianshu.com/p/e14 ...

  6. linux中mail函数不能发送邮件怎么办

    原因分析: 1.检查下本机25端口是否有开放 2.mail是利用linux自带的sendmail服务来发送邮件的,service sendmail status 查看下该服务的状态 发送命令:mail ...

  7. linux中mail函数不能发送邮件

    没有安装或启动 sendmail 组件 解决办法 我是新手,命令不熟,所以写的很详细,老鸟勿喷哦 1.重新安装 sendmail 组件,我用的是 CentOS ,使用下面的命令安装 代码如下 复制代码 ...

  8. linux中使用Python IDE pycharm教程

    今天使用vim编辑Python 并在linux中终端调试的时候,发现每次不是自己想要输出结果的时候,就要用vim编辑代码,再重新回到终端,比较浪费时间.搜索发现pycharm这一个Python ide ...

  9. Linux中的定时自动执行功能(at,crontab)

    Linux中的定时自动执行功能(at,crontab) 概念 在Linux系统中,提供了两种提前对工作进行安排的方式 at 只执行一次 crontab 周期性重复执行 通过对这两个工具的应用可以让我们 ...

随机推荐

  1. poj1733 带权并查集

    题意:有一个 0/1 数列,现在有n组询问和回答,表示某个区间内有奇数或者偶数个1,问到前多少个都没有逻辑错误,而下一个就不满足 可以定奇数为 1 偶数为 0作为每个元素的权值,表示它与它的祖先元素的 ...

  2. Java设计模式之工厂设计模式

    工厂模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到了子类. 1.业务逻辑 1.1.父类Operation package c ...

  3. vi基本操作

    vi的基本操作 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ vi myfile 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command m ...

  4. memory dump and CLR Inside Out

    MSDN Magazine: CLR Inside Out https://msdn.microsoft.com/en-us/magazine/cc501040.aspx CLR Inside Out ...

  5. SQL Debugging

    C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn>“C:\Program Files\Debugging ...

  6. 自然语言处理——NLTK中文语料库语料库

    Python NLTK库中包含着大量的语料库,但是大部分都是英文,不过有一个Sinica(中央研究院)提供的繁体中文语料库,值得我们注意. 在使用这个语料库之前,我们首先要检查一下是否已经安装了这个语 ...

  7. 002. 在HTML页面嵌入循环代码

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...

  8. Oracle常用知识小结

    前言: 前一段时间项目开发数据库环境为Oracle,作为一个SQLer,表示各种不适应.所以刚开始的时候走了一些弯路,浪费了一席时间.因此就想把这些常用的东西给总结一下,算是对自己学习的总结,也希望能 ...

  9. PHP基础学习笔记(一)

    1.初步了解PHP+ php是一种运行在服务端的跨平台的脚本语言. + php语法: <?php echo "welcome!": ?> php像javascript语 ...

  10. The Android Gradle Plugin and Gradle version-compatibility

    http://tools.android.com/tech-docs/new-build-system/version-compatibility Version Compatibility Post ...