Python 使用 SMTP 发送邮件

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

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.utils import	parseaddr,formataddr
from email.mime.multipart import MIMEMultipart
import smtplib
import getpass

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
		))


from_addr = '[email protected]'
password = getpass.getpass('Password:')
smtp_server = 'smtp.163.com'
smtp_port = 994                      #mail.163.com的ssl端口是 994 或者 465
to_addr = '[email protected]'

msg = MIMEMultipart()
msg['From'] = _format_addr(u'user <%s>'% from_addr)
msg['To'] = _format_addr(u'root <%s>'% to_addr)
msg['Subject'] = Header(u'python SMTP send mail test...','utf-8').encode()

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

#将图片嵌套到邮件正文,如果有多张图片,需要嵌套哪张只需要改变 'cid: ' 的值即可。
msg.attach(MIMEText('<html><body><h1>Hello</h1>' +
    '<p><img src="cid:0"></p>' +
    '</body></html>', 'html', 'utf-8'))

with open('/Users/yangqi5/Desktop/test.png','rb') as f:
	mime = 	MIMEBase('image','png',filename='test.png')
	mime.add_header('Content-Disposition', 'attachment', filename='test.png')
	mime.add_header('Content-ID','<0>')
	mime.add_header('X-Attachment-Id','0')
	mime.set_payload(f.read())
	encoders.encode_base64(mime)
	msg.attach(mime)

server = smtplib.SMTP(smtp_server,smtp_port)
server.starttls()      #加密发送
server.set_debuglevel(1)
server.login(from_addr,password)
server.sendmail(from_addr,[to_addr],msg.as_string())
server.quit()


你可能感兴趣的:(Python 使用 SMTP 发送邮件)