代码实现发送邮箱的功能

一、准备工作

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)

猜你喜欢

转载自blog.csdn.net/UserAgent123/article/details/81570425