使用python发送密文电子邮件03(自学笔记)
# 编写人:janany
# 开发时间:2021/7/20 11:26
# 发送邮件
# 导入第三方模块smtplib,它对smtp协议进行了简单的封装。
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
# 再写一个端口,用于RSA加密算法
import rsa
# 生成密钥
(pubkey, privkey) = rsa.newkeys(1024)
# 保存密钥,这里的pem格式文件是rsa的公私钥文件
with open('public.pem', 'w+') as f:
f.write(pubkey.save_pkcs1().decode())
with open('private.pem', 'w+') as f:
f.write(privkey.save_pkcs1().decode())
# 导入密钥
with open('public.pem', 'r') as f:
pubkey = rsa.PublicKey.load_pkcs1(f.read().encode())
with open('private.pem', 'r') as f:
privkey = rsa.PrivateKey.load_pkcs1(f.read().encode())
# 第1步:==自定义发送电子邮件的函数,三引号为换行注释==
# from rsa加密 import pubkey
'''
配置发邮件所需的基础信息
my_sender # 配置发件人邮箱地址qq@qq.com
my_pass # 配置发件人邮箱密码
to_user # 配置收件人邮箱地址163@163.com
my_nick # 配置发件人昵称
to_nick # 配置收件人昵称
mail_msg # 配置邮件内容你好,这是我用python发送的电子邮件
'''
def mail(my_sender, my_pass, to_user, my_nick, to_nick, mail_msg):
# 必须将邮件内容做一次MIME转换--发送含链接的邮件
msg = MIMEText(mail_msg, 'plain', 'utf-8')
# 配置发件人名称和邮箱地址
msg['from'] = formataddr([my_nick, my_sender])
# 配置收件人名称和邮箱地址
msg['to'] = formataddr([to_nick, to_user])
# 配置邮件主题
msg['Subject'] = "python发邮件测试"
# 配置python与邮件的SMPT服务器的连接通道( qq邮箱)
server = smtplib.SMTP_SSL("smtp.qq.com", 465)
# 模拟登录
server.login(my_sender, my_pass)
# 邮件内容发送
server.sendmail(my_sender, [to_user, ], msg.as_string())
# 关闭连接通道
server.quit()
# 第2步:==发送密文电子邮件==
try:
message = '尊敬的***'
crypto_msg = rsa.encrypt(message.encode(), pubkey)
# 调用函数(登录密码需要换成你自己的)
mail('3qq@qq.com', '###f', 'j163@163.com', '***', '***, crypto_msg)
print('邮件发送成功!')
print(crypto_msg)
# 接收方用自己的私钥对收到的密文进行解密,就可得到明文
mail_plain = rsa.decrypt(crypto_msg, privkey).decode()
# 打印邮件信息
print(mail_plain)
except:
print('邮件发送失败!')
本文来自博客园,作者:Jaoany,转载请注明原文链接:https://www.cnblogs.com/fanglijiao/p/15035017.html