1. 发送纯文本邮件
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = "发件人邮箱"
Password = "邮箱密码"
to_addr = '收件人邮箱'
Cc_mail = ['抄送人邮箱1', '抄送人邮箱2']
smtp_server = 'IMAP.partner.outlook.cn'
message = MIMEText('你学会了吗?\n', 'plain', 'utf-8')
message['From'] = _format_addr('发件人名称 <%s>' % from_addr)
message['To'] = _format_addr('收件人名称 <%s>' % to_addr)
message['Cc'] = ','.join(Cc_mail)
message['Subject'] = Header('快点使用起来吧!', 'utf-8').encode()
try:
server = smtplib.SMTP(smtp_server, 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(from_addr, Password)
server.sendmail(from_addr, [to_addr]+Cc_mail, message.as_string())
server.quit()
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
2.发送HTML图片邮件(图片显示在正文)
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
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = "发件人邮箱"
Password = "邮箱密码"
to_addr = '收件人邮箱'
Cc_mail = ['抄送人邮箱1', '抄送人邮箱2']
smtp_server = 'IMAP.partner.outlook.cn'
message = MIMEMultipart('alternative')
html = """
<html>
<head></head>
<body>
<p>
<br>这里是正文,正文下方就是照片啦!</br>
<br><img src="cid:image1"></br>
</p>
</body>
</html>
"""
message.attach(MIMEText(html, 'html', 'utf-8'))
with open('C:\\Users\\lenovo\\Desktop\\1.png', 'rb') as f:
mime = MIMEBase('image', 'png', filename='1.png')
mime.add_header('Content-Disposition', 'attachment', filename='1.png')
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
mime.set_payload(f.read())
encoders.encode_base64(mime)
mime.add_header('Content-ID', '<image1>')
message.attach(mime)
message['From'] = _format_addr(from_addr)
message['To'] = _format_addr(to_addr)
message['Cc'] = ','.join(Cc_mail)
message['Subject'] = Header('图文皆在正文中', 'utf-8').encode()
try:
server = smtplib.SMTP(smtp_server, 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr]+Cc_mail, message.as_string())
server.quit()
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
3. 发送附件邮件(图片附件+文档附件)
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
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = "发件人邮箱"
Password = "邮箱密码"
to_addr = '收件人邮箱'
Cc_mail = ['抄送人邮箱1', '抄送人邮箱2']
smtp_server = 'IMAP.partner.outlook.cn'
message.attach(MIMEText('这里写正文内容\n', 'plain', 'utf-8'))
message = MIMEMultipart('alternative')
with open('C:\\Users\\lenovo\\Desktop\\1.png', 'rb') as f:
mime = MIMEBase('image', 'png', filename='1.png')
mime.add_header('Content-Disposition', 'attachment', filename='DataImage.png')
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
mime.set_payload(f.read())
encoders.encode_base64(mime)
mime.add_header('Content-ID', '<image1>')
message.attach(mime)
with open('C:\\Users\\lenovo\\Desktop\\1.docx', 'rb') as f:
mime = MIMEBase('file', 'docx', filename='1.docx')
mime.add_header('Content-Disposition', 'attachment', filename='1.docx')
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
mime.set_payload(f.read())
encoders.encode_base64(mime)
message.attach(mime)
message['From'] = _format_addr('发件人名称 <%s>' % from_addr)
message['To'] = _format_addr('收件人名称<%s>' % to_addr)
message['Cc'] = ','.join(Cc_mail)
message['Subject'] = Header('正文+图片附件+文档附件', 'utf-8').encode()
try:
server = smtplib.SMTP(smtp_server, 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr]+Cc_mail, message.as_string())
server.quit()
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")