SMTP发送邮件-python

这里会主要讲述发送附件的过程和我遇到的一些问题.

 

使用qq邮箱发送需要获取授权码, 具体步骤如下:

  1.qq邮箱主页首页旁边设置 账户,在页面中部会有如下页面:

    

  2.手机发送短信生成授权码即可,记住不要关闭当前页面窗口.
  

 

常见文件类型的打开模式以及写入模式:

文件类型 打开模式 写入模式
文本 'r' 'w'
二进制 'rb' 'wb'

 

常见邮箱POP3和SMTP服务器汇总: 

  http://www.cnblogs.com/xyzhuzhou/archive/2011/12/22/2297215.html

 

下面是完整代码: 

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
# 导入这个模块是为了后面可以发送附件
from email.mime.multipart import MIMEMultipart
from email.utils import parseaddr, formataddr


import smtplib


def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))


from_addr = 'xxx@qq.com'
password = 'xxxxx'
to_addr = 'xxx@foxmail.com'
# 这里我用的qq邮箱的SMIP服务器
smtp_server = 'smtp.qq.com'


msg = MIMEMultipart()
msg['From'] = _format_addr('' % from_addr)
msg['To'] = _format_addr('' % to_addr)
msg['Subject'] = Header('SMIP....', 'utf-8').encode()


msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))


with open('E:*', 'rb') as f:
mime = MIMEBase('image', 'jpg', filename='1.jpg')
mime.add_header('Content-Disposition', 'attachment', filename='1.jpg')
mime.add_header('Content-ID', '')
mime.add_header('X-Attachment-ID', '0')
mime.set_payload(f.read())
encoders.encode_base64(mime)
msg.attach(mime)


try:
server = smtplib.SMTP_SSL(smtp_server, 465)
# 打印出与服务器交互的信息
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
except smtplib.SMTPException as e:
print("failed %s" % e)

 

posted @ 2016-11-12 16:17  Helevents  阅读(202)  评论(0)    收藏  举报