Python中基本邮件发送

# smtp = simple mail transfer protocol 简单邮件传输协议
# lib =library

import smtplib
import email    # 因为要使用此模块,so当前文件名不能写成email.py
from email.mime.text import MIMEText   # MIME 多用于邮件扩充协议
from email.mime.multipart import MIMEMultipart

HOST = 'smtp.qq.com'          # 由qq发出
SUBJECT = '今天是2018年8月10日'
FROM = 'qq邮箱'
# 设置收件人的邮箱 可以一次性发送给多个人
TO = '接收人邮箱'
# related 表示使用内嵌资源的形式, 将邮件发送给对方
message = MIMEMulipart('related')

#-↓-------↓-----↓--------↓--------↓-------发送文本-----------↓-------↓-------↓-----

#发送邮件主题到对方的邮箱中

# 三个参数:
# 1.发送的内容 内容必须是字符串
# 2.内容的类型  存文本类型默认为plain
# 3.内容的编码方式 使用utf-8 进行编码
# message_html = MIMEText('今天是星期五,好开心','plain','utf-8')

message_html = MIMEText('<h2 style="color:red;font-size:100px">工作使我快乐</h2><img src="cid:small">,'html','utf-8')
message.attach(message_html)
#------------------------------------发送图片------------------------------------
 # rb 读取二进制文件
image_data = open('tupian.jpg','rb')
 #设置读取获取的二进制数据
message_image = MIMEImage(image_data.read())
 # 关闭刚才打开的文件夹
image_data.close()
message_image.add_header('Content-ID','small')  #此处small与 上面cid:small 对应
 # 添加图片文件 到邮件信息当中去
message.attch(message_image)

在发送图片之前 先将图片放入此文件同级文件夹内

并在此文件夹内新建一个xlsx表

#------------------------ 发送图片的第二种方式----------------------------------
message_image = MIMEText(open('hahaha.jpg','rb').read(),'base64','utf-8')
message_image['Content-disposition'] = 'attachment;filename="happy.jpg"'
message.attch(message_image)

#------------------------------添加文件--------------------------------------

 # 读取excel文件时,时以rb形式进行读取的,是一个二进制内容,对二进制文件需要设置默认的编码方式
 # 对于MIMEText()来说 默认的编码方式就是base64
 # 如果对于二进制文件来说 没有放置base64进行编码 则附件就会出现乱码
message_xlsx = MIMEText(open('table.xlsx','rb').read(),'base64','utf-8')
 # 设置文件在附件当中的名字
message_xlsx = ['Content-Disposition'] = 'attchment;filename=text11.xlsx'
message.attach(message_xlsx)

 # 设置文件发件人
message['From'] = FROM

 # 设置文件收件人
message['To'] = TO
 # 设置邮件标题
message['Subject'] = SUBJECT

# 获取简单邮件传输协议的证书
email_client = smtplib.SMTP_SSL
 # 设置发件人邮箱的域名和端口 端口是465
email_client.connect(HOST,'465')
 # 注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 # 密码千万不要写邮箱的密码 要写邮箱的授权码
result = email_client.login(FROM,'xxx授权码xxx')
print('登录结果',result)
 # address 地址
#----------------------------------发送邮件--------------------------------------

 # message = MIMEMultipart('related') message 为MIMEMultipart的一个对象
 # msg 后面的结果必须是一个字符串 as_string 将整个对象转成字符串

email_client.sendmail(from_addr=FROM,to_addrs=TO.split(','),msg=message.as_string())
 # 关闭邮件发送客户端
email_clint.close()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章