python邮件模块_Python通用发送邮件模块

博客已迁移,文章新地址

===========================

需求:

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:  http://wklken.me

Email: wklken@yeah.net

2012-09-02

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值