成功的脚本:html
#coding:utf-8python
# 带附件的邮件服务器
import smtplibapp
from email.mime.multipart import MIMEMultipart # python2.4及以前版本该模块不是这样调用的,而是email.MIMEMultipart.MIMEMultipart(),下同ui
from email.mime.text import MIMETextthis
from email.utils import parseaddr,formataddr.net
from email.header import Headerdebug
sender = '*****@qq.com'#发件人地址code
receiver = ['*****@qq.com']#收件人地址orm
smtpserver = 'smtp.qq.com'#邮件服务器
username = '*****@qq.com'#用户名
password = '*******'#密码 # qq邮箱打开,点击帐户,中间偏下位置打开smtp服务器时会自动生成
smtp = smtplib.SMTP()
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr.encode('utf-8') if isinstance(addr, unicode) else addr))
def send_email(msg):
msgRoot = MIMEMultipart('related')
# msgRoot['To'] = _format_addr(u'%s' % receiver)
msgRoot['to'] = '%s' % receiver
msgRoot['Subject'] = '反欺诈数据报' #邮件标题,这里我把标题设成了你所发的附件名
msgText = MIMEText('%s'%msg,'html','utf-8')#你所发的文字信息将以html形式呈现
msgRoot.attach(msgText)
while 1:#持续尝试发送,直到发送成功
try:
smtp.sendmail(sender, receiver, msgRoot.as_string())#发送邮件
print '***********'
break
except:
try:
smtp.connect(smtpserver)#链接至邮件服务器
smtp.login(username, password)#登陆邮件服务器
except:
print "failed to login to smtp server"#登陆失败
if __name__ == "__main__":
MSG="hello python "#要发送的文字
# FILE="cust_id.csv,test.csv"#要发送的文件
send_email(MSG)
文件形式的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('你好','text','utf-8')#中文需参数‘utf-8’,单字节字符不须要
- msg['Subject'] = Header(subject, 'utf-8')
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
HTML形式的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('<html><h1>你好</h1></html>','html','utf-8')
-
- msg['Subject'] = subject
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
带图片的HTML邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msgRoot = MIMEMultipart('related')
- msgRoot['Subject'] = 'test message'
-
- msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>good!','html','utf-8')
- msgRoot.attach(msgText)
-
- fp = open('h:\\python\\1.jpg', 'rb')
- msgImage = MIMEImage(fp.read())
- fp.close()
-
- msgImage.add_header('Content-ID', '<image1>')
- msgRoot.attach(msgImage)
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msgRoot.as_string())
- smtp.quit()
带附件的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msgRoot = MIMEMultipart('related')
- msgRoot['Subject'] = 'test message'
-
- #构造附件
- att = MIMEText(open('h:\\python\\1.jpg', 'rb').read(), 'base64', 'utf-8')
- att["Content-Type"] = 'application/octet-stream'
- att["Content-Disposition"] = 'attachment; filename="1.jpg"'
- msgRoot.attach(att)
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msgRoot.as_string())
- smtp.quit()
群邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
-
- sender = '***'
- receiver = ['***','****',……]
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('你好','text','utf-8')
-
- msg['Subject'] = subject
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
各类元素都包含的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- # Create message container - the correct MIME type is multipart/alternative.
- msg = MIMEMultipart('alternative')
- msg['Subject'] = "Link"
-
- # Create the body of the message (a plain-text and an HTML version).
- text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"
- html = """\
- <html>
- <head></head>
- <body>
- <p>Hi!<br>
- How are you?<br>
- Here is the <a href="http://www.python.org">link</a> you wanted.
- </p>
- </body>
- </html>
- """
-
- # 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)
- #构造附件
- att = MIMEText(open('h:\\python\\1.jpg', 'rb').read(), 'base64', 'utf-8')
- att["Content-Type"] = 'application/octet-stream'
- att["Content-Disposition"] = 'attachment; filename="1.jpg"'
- msg.attach(att)
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
基于SSL的邮件
[python] view plaincopy
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('你好','text','utf-8')#中文需参数‘utf-8’,单字节字符不须要
- msg['Subject'] = Header(subject, 'utf-8')
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.ehlo()
- smtp.starttls()
- smtp.ehlo()
- smtp.set_debuglevel(1)
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
文件形式的邮件
[python] view plaincopy
-
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('你好','text','utf-8')#中文需参数‘utf-8’,单字节字符不须要
- msg['Subject'] = Header(subject, 'utf-8')
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
HTML形式的邮件
[python] view plaincopy
-
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('<html><h1>你好</h1></html>','html','utf-8')
-
- msg['Subject'] = subject
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
带图片的HTML邮件
[python] view plaincopy
-
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msgRoot = MIMEMultipart('related')
- msgRoot['Subject'] = 'test message'
-
- msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>good!','html','utf-8')
- msgRoot.attach(msgText)
-
- fp = open('h:\\python\\1.jpg', 'rb')
- msgImage = MIMEImage(fp.read())
- fp.close()
-
- msgImage.add_header('Content-ID', '<image1>')
- msgRoot.attach(msgImage)
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msgRoot.as_string())
- smtp.quit()
带附件的邮件
[python] view plaincopy
-
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msgRoot = MIMEMultipart('related')
- msgRoot['Subject'] = 'test message'
-
- #构造附件
- att = MIMEText(open('h:\\python\\1.jpg', 'rb').read(), 'base64', 'utf-8')
- att["Content-Type"] = 'application/octet-stream'
- att["Content-Disposition"] = 'attachment; filename="1.jpg"'
- msgRoot.attach(att)
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msgRoot.as_string())
- smtp.quit()
群邮件
[python] view plaincopy
-
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
-
- sender = '***'
- receiver = ['***','****',……]
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('你好','text','utf-8')
-
- msg['Subject'] = subject
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
各类元素都包含的邮件
[python] view plaincopy
-
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.multipart import MIMEMultipart
- from email.mime.text import MIMEText
- from email.mime.image import MIMEImage
-
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- # Create message container - the correct MIME type is multipart/alternative.
- msg = MIMEMultipart('alternative')
- msg['Subject'] = "Link"
-
- # Create the body of the message (a plain-text and an HTML version).
- text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.python.org"
- html = """\
- <html>
- <head></head>
- <body>
- <p>Hi!<br>
- How are you?<br>
- Here is the <a href="http://www.python.org">link</a> you wanted.
- </p>
- </body>
- </html>
- """
-
- # 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)
- #构造附件
- att = MIMEText(open('h:\\python\\1.jpg', 'rb').read(), 'base64', 'utf-8')
- att["Content-Type"] = 'application/octet-stream'
- att["Content-Disposition"] = 'attachment; filename="1.jpg"'
- msg.attach(att)
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()
基于SSL的邮件
[python] view plaincopy
-
- #!/usr/bin/env python3
- #coding: utf-8
- import smtplib
- from email.mime.text import MIMEText
- from email.header import Header
- sender = '***'
- receiver = '***'
- subject = 'python email test'
- smtpserver = 'smtp.163.com'
- username = '***'
- password = '***'
-
- msg = MIMEText('你好','text','utf-8')#中文需参数‘utf-8’,单字节字符不须要
- msg['Subject'] = Header(subject, 'utf-8')
-
- smtp = smtplib.SMTP()
- smtp.connect('smtp.163.com')
- smtp.ehlo()
- smtp.starttls()
- smtp.ehlo()
- smtp.set_debuglevel(1)
- smtp.login(username, password)
- smtp.sendmail(sender, receiver, msg.as_string())
- smtp.quit()