【Python】无需第三方库,实现秒发邮件

#python自带的库,无需第三方下载
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart


def send_email_by_qq(to):
    sender_mail = '88888888@qq.com'#①发件人的邮箱(乱打的)
    sender_pass = 'aaaaaaaaaaaaa'#②邮箱授权码,如何获取下方有链接(这里我是乱打的)

    # 设置总的邮件体对象,对象类型为mixed
    msg_root = MIMEMultipart('mixed')
    # 邮件添加的头尾信息等
    msg_root['From'] = '88888888@qq.com<88888888@qq.com>'#③发件人
    msg_root['To'] = to
    # 邮件的主题,显示在接收邮件的预览页面
    subject = '小牛马'#④邮件主题
    msg_root['subject'] = Header(subject, 'utf-8')

    # 构造文本内容
    text_info = '小牛马'#⑤邮件内容
    text_sub = MIMEText(text_info, 'plain', 'utf-8')
    msg_root.attach(text_sub)

    # 构造超文本
    url = "www.baidu.com"#⑥需要插入链接时,在此输入url
    html_info = """
    <p>点击以下链接,你会去向一个更大的世界</p>
    <p><a href="%s">click me</a></p>
    <p>i am very galsses for you</p>
    """% url
    html_sub = MIMEText(html_info, 'html', 'utf-8')
    # 如果不加下边这行代码的话,上边的文本是不会正常显示的,会把超文本的内容当做文本显示
    html_sub["Content-Disposition"] = 'attachment; filename="csdn.html"'
    # 把构造的内容写到邮件体中
    msg_root.attach(html_sub)

    # 构造图片
    image_file = open(r'C:\Users\ASUS\Desktop\stm32f103c8t6核心板.png', 'rb').read()#⑦需要插入图片时,在此插入图片路径
    image = MIMEImage(image_file)
    image.add_header('Content-ID', '<image1>')
    # 如果不加下边这行代码的话,会在收件方方面显示乱码的bin文件,下载之后也不能正常打开
    image["Content-Disposition"] = 'attachment; filename="red_people.png"'
    msg_root.attach(image)

    # 构造附件
    txt_file = open(r'C:\Users\ASUS\Desktop\申报书.doc', 'rb').read()#⑧需要插入附件时,加入文件路径
    txt = MIMEText(txt_file, 'base64', 'utf-8')
    txt["Content-Type"] = 'application/octet-stream'
    #以下代码可以重命名附件为hello_world.txt
    txt.add_header('Content-Disposition', 'attachment', filename='申报书2.doc')#此处filename可自定义命名发过去的附件名称
    msg_root.attach(txt)

    try:
    	'''
    	具体的python连接目标服务器的代码如下:
    	注:本文章用的是qq的smtp服务器。
			常用邮箱的smtp服务器地址:
			新浪邮箱:smtp.sina.com,搜狐邮箱:smtp.sohu.com,qq邮箱:smtp.qq.com
		'''
        sftp_obj =smtplib.SMTP('smtp.qq.com', 25)#⑨选择邮箱类型
        sftp_obj.login(sender_mail, sender_pass)
        sftp_obj.sendmail(sender_mail, to, msg_root.as_string())
        sftp_obj.quit()
        print('sendemail successful!')

    except Exception as e:
        print('sendemail failed next is the reason')
        print(e)


if __name__ == '__main__':
    # 可以是一个列表,支持多个邮件地址同时发送,测试改成自己的邮箱地址
    to = '123456789@qq.com'#⑩收件人的邮箱
    send_email_by_qq(to)
邮件
文本内容
超链接文本
图片内容
附件

一封邮件可由:文本内容、超链接文本、图片内容、附件构成
代码中这四部分已分段隔开,不需要哪一部分,就将其注释掉。
(多段注释快捷键ctrl+/,需要将其恢复再次ctrl+/

邮箱授权码的获取方式

使用步骤

使用步骤在代码中由①到⑩标出,其中⑤到⑧非必需填,根据需要选择是否注释掉。
①:发件人的邮箱
②:邮箱授权码
③:发件人信息完善
④:邮件主题
⑤:邮件文本内容
⑥:邮件超链接
⑦:邮件图片
⑧:邮件附件
⑨:选择邮箱类型
⑩:选择收件人

详情原理见下链接
python发邮件详解,smtplib和email模块详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值