一、准备工作
1.首先、先导入需要用到的包,例如,你想给对方发送图片,输入以下代码段
from email.mime.image import MIMEImage
2、在做邮箱的工作的时候,最先想到的是步骤是
设置邮箱域名 : HOST = 'smtp.163.com' (smtp.qq.com)
设置邮箱主题: SUBJECT = '未来'
#发件人的邮箱必须先设置开始协议(既发件人邮箱)
FROM = 'ghf144123****@163.com'
设置收件人邮箱
TO = ‘sdf12132*****@163.com’(发件人邮箱可以是其他的,也可是多个别人的邮箱)
# related 表示使用内嵌资源的形式,将邮箱发给对方,邮件信息,刚刚创建时
message = MIMEMultipart('related')(这里是空的邮件)
二、也是准备工作,既这是要发送的内容的一些方法及一些设置
1.发送纯文本的话
message_text = MIMEText('我是好人',‘plain’,encoding=‘utf-8’) (发送纯文本的话,三部分直接是文本内容,内容类型,编码方式)
若里边带标签的话,如下代码所示,结构还是一样的
message_text = MIMEText = ('<h1 style="color: green;font-size:100px">我是中国人</h1>,'html',encoding='utf-8'')
下面的代码是将以上设置东西存到上边的 空邮件message里面,发送图片,表格,都是这种格式,代码如下
message.attach(message_text)
2、发送图片
发送图片需要注意的是,要 rb 读取或取得二进制数据
image_data = open('***.jpg','rb')(解析)
message_image = MIMEImage(image_data.read())
读取完之后要关闭
image_data.close()
添加图片有两种方法,下面是第一种,感觉这个比较简单点,但是有局限
message_image.add_header('Content-ID')
message.attach(message_data)
第二种方法
message_image = MIMEText(open('222.jpg','rb').read(),'base64','utf-8')
message_image['Content-disposition'] = 'attachment;filename='***.jpg'
message.attach(message)image)
3、发送文件(添加一个表到发送文件中)
message_xlsx = MIMEText(open('table.xlsx','rb').read(),'base64','utf-8')
设置表哥放松到对方邮箱后复建中的名字
message_xlsx[Content-Disposition] = 'attachment;filename="test2323.xlsx"'
message.attach(message_xlsx)
message['FROM'] = FROM
message['TO'] = TO
message['Subject] = SUBJECT
三、最后的部分
这是最后的部分,也是最重要的环节,上边的所有准备都是为这一部浦路
email_client = smyplib.SMTP_SSL()
email_cilent.connect('HOST','465')
#这里的密码不是邮箱密码,而是授权码(发送短信,自己设置或者系统发过来的)
result = email_client.login(FROM,'*******')
email_cilent.secdmail(from_addr=FROM,to_addr=TO.split(','),msg=message.as_string())
#最后一步 关闭客户端
email_client.close()
下面是具体代码实现:
class SendEmail(object):
def __init__(self):
self.email_host = 'smtp.qq.com'
self.email_port = '465'
self.email_sender = '[email protected]'
self.email_receiver = '[email protected]'
# 注意:此处的密码是授权码,不是邮箱密码
self.email_password = ''
# 发送一个纯文本文件
def send_text_email(self, body,receiver,subject):
# 三个参数 1.内容主体2.内容类型3.编码方式
message_text = MIMEText(body,'plain','utf-8')
message_text['FROM'] = self.email_sender
message_text['TO'] = receiver
message_text['Subject'] = subject
try:
email_client = smtplib.SMTP_SSL(self.email_host,self.email_port)
login_result = email_client.login(self.email_sender,self.email_password)
print('开始登陆',login_result)
# 如果有登陆信息,而且登陆信息里面第一条状态码事 235说明登陆成功
if login_result and login_result[0] == 235:
print('登陆成功')
email_client.sendmail(self.email_sender,receiver,message_text.as_string())
print("发送成功")
else:
print("登录失败")
except Exception as e:
print('邮件未能登陆',e)