zoukankan      html  css  js  c++  java
  • 使用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

  • 相关阅读:
    yum配置163源
    sed
    Python3.6 提示 ModuleNotFoundError: No module named '_ssl' 模块问题
    django上传excel文件
    OpenStack Train版-7.neutron网络服务概述
    OpenStack Train版-6.安装nova计算服务(计算节点)
    OpenStack Train版-5.安装nova计算服务(控制节点)
    OpenStack Train版-4.安装placement放置服务
    OpenStack Train版-3.安装glance镜像服务
    OpenStack Train版-2.安装keystone身份认证服务
  • 原文地址:https://www.cnblogs.com/fanglijiao/p/15035017.html
Copyright © 2011-2022 走看看