使用python傳送密文電子郵件03(自學筆記)
阿新 • • 發佈:2021-07-20
# 編寫人: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 # 配置發件人郵箱地址[email protected]
my_pass # 配置發件人郵箱密碼
to_user # 配置收件人郵箱地址[email protected]
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('[email protected]', '###f', '[email protected]', '***', '***, crypto_msg)
print('郵件傳送成功!')
print(crypto_msg)
# 接收方用自己的私鑰對收到的密文進行解密,就可得到明文
mail_plain = rsa.decrypt(crypto_msg, privkey).decode()
# 列印郵件資訊
print(mail_plain)
except:
print('郵件傳送失敗!')