利用Python发送邮件

Python对SMTP支持有smtplibemail两个模块,email负责构造邮件,smtplib负责发送邮件。

首先要对邮箱进行设置,这里以QQ邮箱为例:

打开QQ邮箱后,选择“设置-账户”,找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”

开启pop3/smtp服务,并保存该授权码作为密码使用--生成授权码

最后代码如下:

 1 # -*- coding:utf-8 -*-
 2 import smtplib
 3 from email.mime.text import MIMEText
 4 from email.mime.image import MIMEImage
 5 from email.mime.multipart import MIMEMultipart
 6
 7 class send_email():
 8     def __init__(self):
 9         self.Host = "smtp.qq.com"                # QQ邮箱服务地址
10         self.Subject = input("请输入邮件标题:") # 设置邮件标题
11         self.From = input("请输入发件人地址:")  # 设置发件人邮箱
12         self.To = input("请输入收件人地址:")    # 设置收件人邮箱(多个用逗号隔开)
13
14     # ==========================发送文本====================
15     # 发送邮件主体到对方的邮箱中
16     def email_text(self,message):
17         message_text = MIMEText(_text=‘<h2 style="color:red;font-size:100px"><a href="http://www.baidu.com">这是一个链接</a></h2>‘,_subtype=‘html‘, _charset=‘utf-8‘)
18         message.attach(message_text)
19
20
21     # ==========================发送图片====================
22     def email_image(self,message):
23         image_data = open(file="123456789.jpg", mode="rb")
24         message_image = MIMEImage(_imagedata=image_data.read(), _subtype="base64", _charset="utf-8")
25
26         # 设置文件在附件当中的名字
27         message_image[‘Content-disposition‘] = ‘attachment;filename = "text.jpg"‘
28         image_data.close()
29         message.attach(message_image)
30
31     # ==========================发送附件====================
32     def email_file(self,message):
33         file_data = open(file=r"C:\Users\lenovo\Desktop\income.xlsx", mode="rb")
34         message_file = MIMEText(_text=file_data.read(), _subtype="base64", _charset="utf-8")
35
36         # 设置文件在附件当中的名字
37         message_file[‘Content-Disposition‘] = ‘attachment;filename="textfile.xlsx"‘
38         file_data.close()
39         message.attach(message_file)
40
41
42     # ========================发送邮件======================
43     def init_email(self):
44         message["From"] = self.From              # 设置邮件发件人
45         message["To"] = self.To                   # 设置邮件接收人
46         message["Subject"] = self.Subject         # 设置邮件标题
47
48         # 获取简单邮件传输协议证书
49         email_client = smtplib.SMTP_SSL(host="smtp.qq.com")
50
51         # 设置发件人邮箱的域名和端口
52         email_client.connect(host="smtp.qq.com", port="465")
53
54         # 登陆邮件,权限验证,password为邮箱授权码
55         result = email_client.login(user=self.From, password="eejjgbvxpzyadhhg")
56         print("登录结果:", result)
57
58         # 发送邮件,from_addr:发送人,to_addrs:收件人,msg:发送的文本
59         email_client.sendmail(from_addr=self.From, to_addrs=self.To, msg=message.as_string())
60
61         # 关闭邮件客户端
62         email_client.close()
63
64
65
66 if __name__ == ‘__main__‘:
67     # 创建一个邮件对象
68     message = MIMEMultipart()
69     email = send_email()            # 调用对象
70
71     # email.email_text(message)       # 调用对象的方法
72     email.email_image(message)
73     # email.email_file(message)
74
75     email.init_email()

原文地址:https://www.cnblogs.com/zhaco/p/12002901.html

时间: 2024-08-06 21:10:59

利用Python发送邮件的相关文章

利用Python+163邮箱授权码发送邮件

背景 前段时间写了个自动打卡的脚本,但是脚本不够完善,我需要知道,打卡到底成没成功,因此,我想到了用Python执行完代码之后,再执行一段发送邮件的代码.需求开始明确了,就开始分析和写代码实现吧. 分析 SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. 代码实现 import smt

利用python收发邮件功能实现远程电脑的控制

功能并非原创, 只是重复实现了 http://codecloud.net/python-control-128.html 中描述的功能. 实现功能: 通过给固定邮件地址发送命令(包含在主题中)的方式控制远程电脑实现相应功能(譬如关机等, 可以根据实际需要实现更复杂的功能) 实现原理: 远程电脑不断(每隔10s)利用 python 脚本检查邮件服务器是否有新邮件, 如有则对邮件进行分析, 如果包含可执行命令, 则执行相应命令 你需要的: 装有 PYTHON 的 PC; 最好两个邮箱(一个用于接收命

python - 发送邮件(smtplib、email)

发送邮件(smtplib.email) 通常在API和UI自动化测试后,都需要将运行的测试报告发送给指定邮件组接收,这个邮件发送功能可以利用python自带的两个模块完成: smtplib模块主要负责发送邮件如:连接邮箱服务器,登录邮箱,发送邮件 email模块主要负责构造邮件如:发件人,收件人,主题,正文,附件.图片.HTML等 一.smtplib 1.smtplib示例: import smtplib # 实例化SMTP连接(IP,端口) smtp = smtplib.SMTP_SSL(se

利用python进行数据分析--(阅读笔记一)

以此记录阅读和学习<利用Python进行数据分析>这本书中的觉得重要的点! 第一章:准备工作 1.一组新闻文章可以被处理为一张词频表,这张词频表可以用于情感分析. 2.大多数软件是由两部分代码组成:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”. cython已经成为python领域中创建编译型扩展以及对接c/c++代码的一大途径. 3.在那些要求延迟性非常小的应用程序中(例如高频交易系统),为了尽最大可能地优化性能,耗费时间使用诸如C++这样更低级.更低生产率的语言进行

利用 Python yield 创建协程将异步编程同步化

在 Lua 和 Python 等脚本语言中,经常提到一个概念: 协程.也经常会有同学对协程的概念及其作用比较疑惑,本文今天就来探讨下协程的前世今生. 首先回答一个大家最关心的问题:协程的好处是什么? 通俗易懂的回答: 让原来要使用 异步 + 回调 方式写的非人类代码,可以用看似同步的方式写出来. 1.回顾同步与异步编程 同步编程即线性化编程,代码按照既定顺序执行,上一条语句执行完才会执行下一条,否则就一直等在那里. 但是许多实际操作都是CPU 密集型任务和 IO 密集型任务,比如网络请求,此时不

利用Python实现归并排序

利用python进行归并排序,摘抄自http://blog.csdn.net/minxihou/article/details/51821052 "代码真的不是一气呵成的,而且也不是想当然写出来的.可能需要反复断点中断来查看是否有逻辑错误.在理解了问题的基础下我们需要先把大体的代码框架最好先写出来,特别是主要的逻辑判断语句.但是不需要太care我循环体或者判断里面语句怎么实现,当你把这一步做到的时候能避免很多不必要的错误发生." 1 import random 2 3 def Conf

利用Python脚本管理Windows服务

Windows服务常用的功能就是启动服务,关闭服务,重启服务和查询服务运行状态,其中查询服务运行状态是其他三种操作的基础. 本文中提到的使用Python脚本管理Windows服务实际上是调用win32serviceutil模块,此模块来自pywin32包,此模块本身有管理服务的功能,有兴趣的可以去阅读它的部分源码. 本脚本存在的目的是为了熟练Python的语法和基本操作,Windows下有更好的命令行工具来管理服务,如sc.Powershell等.通常命令行工具的执行速度要比services.m

《利用python进行数据分析》

今天开始码这本书--<利用python进行数据分析>.R和python都得会用才行,这是码这本书的原因.首先按照书上说的进行安装,google下载了epd_free-7.3-1-win-x86.msi,译者建议按照作者的版本安装.

利用Python编写网络爬虫下载文章

#coding: utf-8 #title..href... str0='blabla<a title="<论电影的七个元素>——关于我对电影的一些看法以及<后会无期>的一些消息" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102eo83.html"><论电影的七个元素>——关于我对电…</a>' impo