python发送邮件脚本


本文摘自php中文网,作者不言,侵删。

这篇文章主要为大家详细介绍了发送邮件python脚本,支持多个附件,中文,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了python发送邮件的具体代码,供大家参考,具体内容如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import smtplib

import sys

from email.mime.text import MIMEText

import linecache

import email

import os

  

  

#####################

# set email service host,user,pass word,postfix

mail_host="smtp.exmail.qq.com"

mail_user="username"

mail_pass="password"

mail_postfix="qq.com"

######################

  

def transfer_utf8_to_gb2312(file_name):

 f=open(file_name)

 s=f.read()

 f.close()

 u=s.decode("utf-8")

 s=u.encode("gb2312")

 f=open(file_name,"w");

 f.write(s)

  

  

def send_mail(to_list,sub,content_file_name):

 me=mail_user+"<"+mail_user+"@"+mail_postfix+">"

 msg = email.MIMEMultipart.MIMEMultipart()

 content = open(content_file_name.encode("utf-8"), 'rb')

 content_msg = MIMEText(content.read(),"plain","utf-8")

 msg.attach(content_msg)

 msg['Subject'] = sub

 msg['From'] = me

 msg['To'] = ";".join(to_list)

 try:

  s = smtplib.SMTP()

  s.connect(mail_host)

  s.login(mail_user+"@"+mail_postfix,mail_pass)

  s.sendmail(me, to_list, msg.as_string())

  s.close()

  return True

 except Exception, e:

  print "error:",str(e)

  return False

  

def send_mail_with_attachment(to_list,sub,content_file_name,attachment_file_name):

 me=mail_user+"<"+mail_user+"@"+mail_postfix+">"

 msg = email.MIMEMultipart.MIMEMultipart()

 content = open(content_file_name.encode("utf-8"), 'rb')

 content_msg = MIMEText(content.read(),"plain","utf-8")

 msg.attach(content_msg)

 for tmp_attachment_file_name in attachment_file_name.split(","):

  contype = 'application/octet-stream'

  maintype, subtype = contype.split('/', 1)

  file_data = open(tmp_attachment_file_name.encode("utf-8"), 'rb')

  file_msg = email.MIMEBase.MIMEBase(maintype, subtype)

  file_msg.set_payload(file_data.read())

  file_data.close( )

  email.Encoders.encode_base64(file_msg)

  basename = os.path.basename(tmp_attachment_file_name)

  file_msg.add_header('Content-Disposition', 'attachment', filename = basename.encode("utf-8"))

  msg.attach(file_msg)

 msg['Subject'] = sub

 msg['From'] = me

 msg['To'] = ";".join(to_list)

 try:

  s = smtplib.SMTP()

  s.connect(mail_host)

  s.login(mail_user+"@"+mail_postfix,mail_pass)

  s.sendmail(me, to_list, msg.as_string())

  s.close()

  return True

 except Exception, e:

  print "error:",str(e)

  return False

  

def print_usage():

  print "Usage: "

  print "  %s email_send_list(xxx@163.com,xxx@qq.com,...) subject content_file_name" % (sys.argv[0])

  print "  %s email_send_list(xxx@163.com,xxx@qq.com,...) subject content_file_name attachment_file_name(file_name1,file_name2,...) if_transform_attachment_to_gb2312(yes or not)" % (sys.argv[0])

  

######Start from here#########

if __name__ == '__main__':

 reload(sys)

 sys.setdefaultencoding('utf8')

 if len(sys.argv) == 6:

  send_list = sys.argv[1].split(",")

  subject = unicode(sys.argv[2],"utf-8")

  content_file_name = unicode(sys.argv[3],"utf-8")

  attachment_file_name = unicode(sys.argv[4],"utf-8")

  if(sys.argv[5] == "yes"):

   transfer_utf8_to_gb2312(attachment_file_name.decode("utf-8"))

  elif(sys.argv[5] == "not"):

   pass

  else:

   print_usage()

  

  if send_mail_with_attachment(send_list,subject,content_file_name,attachment_file_name):

   print "Send email success!"

  else:

   print "Send email fail!"

   sys.exit(1)

 elif len(sys.argv) == 4:

  send_list = sys.argv[1].split(",")

  subject = unicode(sys.argv[2],"utf-8")

  content_file_name = unicode(sys.argv[3],"utf-8")

  

  if send_mail(send_list,subject,content_file_name):

   print "Send email success!"

  else:

   print "Send email fail!"

   sys.exit(1)

 else:

  print_usage()

相关推荐:

使用python发送和接收邮件实例代码

详解python发送各类邮件的主要方法

以上就是python发送邮件脚本的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

手机有什么Python编译器

Python通过属性手段实现只允许调用一次的示例讲解_Python

怎么用Python画图

Python怎么看数据类型

Python如何查找子字符串

Python怎么读写excel文件

自学Python能干什么

Python中rjust是什么意思

Python的queue模块详解

Python怎么发音

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...