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)

浙公网安备 33010602011771号