python3发送QQ邮件

本次学习用python发送QQ邮箱

1、导入所需要的包


2、设置账号


3、把发送邮件封装成函数


4、发送纯文本格式的邮件


5、发送html格式的邮件


6、发送带附件的邮件


发送带附件的,如果附件名是中文,注意用上图的格式,否则收到的邮件就会变成这样


7、发送html带图片的邮件


我用的是QQ邮箱,设置,然后获取所需授权码

第一步,打开设置——账户


第二步,往下拉,找到账户安全


第三步,将第一项开启


第四步,获取授权码


附送源代码:

import smtplib

from email.mime.text import MIMEText

from email.header import Header

from email.mime.multipart import MIMEMultipart

from email.mime.image import MIMEImage

host='smtp.qq.com'

user='1366441541@qq.com'

#授权码

pwd='xxx'

receive=['1280147527@qq.com']

'''

单独发送模块

'''

def send(msg):

    try:

        smtp = smtplib.SMTP()

        smtp.connect(host, 25)

        smtp.login(user, pwd)

        smtp.sendmail(user, receive, msg.as_string())

        smtp.quit()

        print("邮件发送成功!")

    except smtplib.SMTPException as e:

        print("失败", e)

'''

发送文本格式邮件

'''

def sendtext():

    # 第一个是文本内容;第二个是文本参数,plain表示纯文本格式;第三个编码格式

    content = "这是一首简单的小情歌" \

              "愿你聆听、幸福"

    msg = MIMEText(content, 'plain', 'utf-8')

    #from表示发件人显示内容

    msg['from'] = Header("from妞妞", 'utf-8')

    #to表示收件人显示内容

    msg['to'] = Header('to大宝', 'utf-8')

    # subject,邮件标头

    subject = 'python 邮件测试'

    msg['subject'] = Header(subject, 'utf-8')

    send(msg)

'''

发送HTML格式邮件

'''

def sendhtml():

    content="""

    <p>学习python,菜鸟教程,你值得拥有!</p>

    <p><a href="http://www.runoob.com">这是一个链接</a></p>

    """

    msg=MIMEText(content,'html','utf-8')

    msg['from']=Header("倩倩",'utf-8')

    msg['to']=Header('测试老师','utf-8')

    subject="这是html格式邮件测试"

    msg['subject']=Header(subject,'utf-8')

    send(msg)

'''

发送带附件的邮件

'''

def sendattach():

    msg = MIMEMultipart()

    msg['from']=Header('倩倩附件','utf-8')

    msg['to']=Header('大宝附件','utf-8')

    subject="python附件测试"

    msg['subject']=Header(subject,'utf-8')

    #正文内容

    content="附件测试的正文内容"

    msg.attach(MIMEText(content,'plain','utf-8'))

    #构造附件1

    att1=MIMEText(open('send.txt','rb').read(),'base64','utf-8')

    att1['Content-Type']='application/octet-stream'

    #filename写什么显示什么,为防止中午附件乱码,采用这种格式

    att1.add_header('Content-Disposition', 'attachment', filename=('gbk', '', "倩倩.txt") )

    #这样写,邮件能发送成功,但接受的附件名就是乱码

    #att1['Content-Disposition']='attachment;filename=倩倩.txt.

    #添加附件

    msg.attach(att1)

    #构造附件2

    att2=MIMEText(open('send1.txt','rb').read(),'base64','utf-8')

    att2['Content-Type']='application/octet-stream'

    #att2['Content-Disposition']='attachment;filename=%s'%('大宝.txt').encode('utf-8')

    att2.add_header('Content-Disposition','attachment',filename=('utf-8','','大宝.txt'))

    msg.attach(att2)

    send(msg)

'''

在html文本中添加图片

'''

def sendimage():

    msgroot=MIMEMultipart('related')

    msgroot['from']=Header('倩倩图片','utf-8')

    msgroot['to']=Header('大宝图片','utf-8')

    subject="python测试图片发送"

    msgroot['subject']=Header(subject,'utf-8')

    msgAlternative=MIMEMultipart('alternative')

    msgroot.attach(msgAlternative)

    content="""

    <p>学习python,菜鸟教程,你值得拥有!</p>

    <p><a href="http://www.runoob.com">这是一个链接</a></p>


    <p>图片演示</p>

    <p><img src="cid:image1"></p>


    """

    msgAlternative.attach(MIMEText(content,'html','utf-8'))

    #指定图片目录

    fp=open("WechatIMG13181.png",'rb')

    msgimg=MIMEImage(fp.read())

    #定义图片id,在html中引用

    msgimg.add_header("Content-ID","image1")

    msgroot.attach(msgimg)

    send(msgroot)

sendimage()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • python使用SMTP发送电子邮件 SMTP是发送邮件的协议,Pytho...
    小娟_bb93阅读 823评论 0 1
  • 一、相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1...
    LizPL阅读 1,377评论 0 3
  • Linux多线程同步机制 - 信号量信号量函数定义如下:include int semctl(int sem_i...
    molscar阅读 772评论 0 0
  • 背景 公司内网有个论坛,各种公司的前沿消息都会有人在讨论。一忙起来,经常忘记逛论坛,所以写了个爬虫,爬取论坛前10...
    aialin阅读 947评论 0 11
  • 《Effective C++ 中文版 第三版》读书笔记 ** 条款 27:尽量少做转型动作 ** 转型(casts...
    赵者也阅读 511评论 0 0