需求:
1.发送邮件
2.不需要登录任何邮箱等等
3.支持多接收人
4.支持附件
5.支持命令行+方法调用
涉及模块:
smtplib, email
基于版本:
2.4
使用2.7和3.x的童鞋,需要修改下import信息
源代码:
#!/usr/bin/env python
#@author : wklken@yeah.ent
#@version : 0.1
#@desc: for mail sending.
import smtplib
import getopt
import sys
import os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
import email.Encoders as encoders
def send_mail(mail_from, mail_to, subject, msg_txt, files=[]):
# Create message container - the correct MIME type is multipart/alternative.
msg = MIMEMultipart('alternative')
msg['Subject'] = subject
msg['From'] = mail_from
msg['To'] = mail_to
# Create the body of the message (a plain-text and an HTML version).
#text = msg
html = msg_txt
# Record the MIME types of both parts - text/plain and text/html.
#part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
# Attach parts into message container.
# According to RFC 2046, the last part of a multipart message, in this case
# the HTML message, is best and preferred.
#msg.attach(part1)
msg.attach(part2)
#attachment
for f in files:
#octet-stream:binary data
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(f, 'rb').read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
msg.attach(part)
# Send the message via local SMTP server.
s = smtplib.SMTP('localhost')
# sendmail function takes 3 arguments: sender's address, recipient's address
# and message to send - here it is sent as one string.
mailto_list = mail_to.strip().split(",")
if len(mailto_list) > 1:
for mailtoi in mailto_list:
s.sendmail(mail_from, mailtoi.strip(), msg.as_string())
else:
s.sendmail(mail_from, mail_to, msg.as_string())
s.quit()
return True
def main():
files = []
try:
opts, args = getopt.getopt(sys.argv[1:], "f:t:s:m:a:")
#print sys.argv
for op, value in opts:
if op == "-f":
mail_from = value
elif op == "-t":
mail_to = value
elif op == "-s":
subject = value
elif op == "-m":
msg_txt = value
elif op == "-a":
files = value.split(",")
except getopt.GetoptError:
print(sys.argv[0] + " : params are not defined well!")
print mail_from, mail_to, subject, msg_txt
if files:
send_mail(mail_from, mail_to, subject, msg_txt, files)
else:
send_mail(mail_from, mail_to, subject, msg_txt)
if __name__ == "__main__":
main()
The end!
转载请注明出处,Thx!
wklken
Blog: wklken.sinaapp.com
Email: wklken@yeah.net
2012-09-02
分享到:
相关推荐
├─千锋Python教程:第09章 模块&包&常用模块&三方模块(14集) │ 千锋Python教程:51.系统模块&自定义模块&包1.mp4 │ 千锋Python教程:52.系统模块&自定义模块&包2.mp4 │ 千锋Python教程:53.系统模块&自定义...
9.2.2 通用换行符支持(UNS) 9.3 文件内建方法 9.3.1 输入 9.3.2 输出 9.3.3 文件内移动 9.3.4 文件迭代 9.3.5 其他 9.3.6 文件方法杂项 9.4 文件内建属性 9.5 ...
9.2.2 通用换行符支持(UNS) 9.3 文件内建方法 9.3.1 输入 9.3.2 输出 9.3.3 文件内移动 9.3.4 文件迭代 9.3.5 其他 9.3.6 文件方法杂项 9.4 文件内建属性 9.5 ...
请发邮件 内维尔·布朗利(Nevil Brownlee): 版权所有(c)2015,Nevil Brownlee,U奥克兰| 棍棒 该代码是根据GNU通用公共许可证(GPL)版本3许可的。有关此许可证的详细信息,请参阅随附的文件GPL 。 该代码...
一个通用的基准测试工具依赖于tornado基于epoll模块、异步httpclient、多进程和python绘图包matplotlib、numpy为matlab 2D图形的高性能网络框架的特性。 当前版本支持get和post的http协议,项目还在为通用协议的...
如果您有任何问题,发现代码中的错误或有功能要求注释或问题,请随时发送邮件至。 目的 PyRe(Python可靠性)是用于结构可靠性分析的python模块。 它的灵活性和可扩展性使其适用于大量问题。 除核心可靠性分析功能外...
虽然我不建议您未经允许不要在人们的服务器上发送垃圾邮件,但这只是一个机器人,它将在某些文本通道中发送垃圾邮件,以使用户玩得开心。 它也被开发成为一个通用的不和谐机器人。 它可能有一些错误,但是使用起来...
PO-执行百度页面登录的用例执行,产生日志并发送至邮箱PO模型的典型案例business 业务模块,要实现的功能case 测试案例,基本的单元测试common 通用的部分,定位页面元素config 配置模块,日志设置,邮箱设置,路径...
(如果你是程序员,你会惊讶的发现,这与模块化面向对象编程的思想极其相似!其实网页何尝不是一种程序呢?) 正是这种区别使得XML在网络应用和信息共享上方便,高效,可扩展。所以我们相信,XML做为一种先进的数据...
PHP虽然很容易学习,但是速度上比mod_perl(植入web服务器的perl模块)慢。现在有了可以与mod_perl速度想媲美的被称作Zend的新引擎,而PHP4就可以充分利用这个引擎。PHP4还处在BETA测试阶段。Andy Gutmans和Zeev ...