python SMTP/POP3 收/发邮件,解析邮件内容,附带使用说明,GUI,以及一些遇到的坑

环境

python3.8.3

代码

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
import tkinter as tk
from tkinter import *
import tkinter.messagebox
import smtplib
import poplib
from email.mime.text import MIMEText
from email.header import Header
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr

#使用腾讯QQ邮箱发送邮件
def send_email_by_qq():
    def send_email():
        message = MIMEText(entry_message_context.get(), 'plain', 'utf-8')
        message["From"] = Header(entry_sender_email_address.get())
        message["To"] = Header(entry_receiver_email.get())
        message["Subject"] = Header(entry_message_subject.get(), 'utf-8')
        email_client = smtplib.SMTP_SSL(smtp_server_host, smtp_server_port)
        try:
            # 验证邮箱及密码是否正确
            email_client.login(entry_sender_email_address.get(), entry_sender_email_password.get())
            tk.messagebox.showinfo('恭喜','发送成功,请查收')
        except:
            tk.messagebox.showerror('错误','账户OR密码错误')
        else:
            email_client.sendmail(entry_sender_email_address.get(), entry_receiver_email.get(), message.as_string())
        finally:
            email_client.close()

    global qq_send_window
    qq_send_window = tk.Tk()
    qq_send_window.title('使用QQ邮箱发送邮件')
    qq_send_window.geometry('500x350')

    #获取邮件信息
    tk.Label(qq_send_window, text='发件人邮箱:', font=('微软雅黑', 14)).place(x=50, y=10)
    tk.Label(qq_send_window, text='授权密码:', font=('微软雅黑', 14)).place(x=50, y=40)
    tk.Label(qq_send_window, text='收件人邮箱:', font=('微软雅黑', 14)).place(x=50, y=70)
    tk.Label(qq_send_window, text='服务器:smtp.qq.com', font=('微软雅黑', 14)).place(x=50, y=100)
    tk.Label(qq_send_window, text='服务器端口:465', font=('微软雅黑', 14)).place(x=50, y=130)
    tk.Label(qq_send_window, text='邮件主题:', font=('微软雅黑', 14)).place(x=50, y=160)
    tk.Label(qq_send_window, text='邮件内容:', font=('微软雅黑', 14)).place(x=50, y=190)

    #使用QQ邮箱时
    global smtp_server_host
    smtp_server_host = "smtp.qq.com"
    global smtp_server_port
    smtp_server_port = 465


    # 获取发件人邮箱
    global sender_email_address
    global entry_sender_email_address
    sender_email_address = tk.StringVar()
    entry_sender_email_address = tk.Entry(qq_send_window, textvariable=sender_email_address, font=('微软雅黑', 14))
    entry_sender_email_address.place(x=175, y=10)

    # 获取授权密码
    global sender_email_password
    global entry_sender_email_password
    sender_email_password = tk.StringVar()
    entry_sender_email_password = tk.Entry(qq_send_window, textvariable=sender_email_password, font=('微软雅黑', 14))
    entry_sender_email_password.place(x=175, y=40)

    # 获取收件人邮箱
    global receiver_email
    global entry_receiver_email
    receiver_email = tk.StringVar()
    entry_receiver_email = tk.Entry(qq_send_window, textvariable=receiver_email, font=('微软雅黑', 14))
    entry_receiver_email.place(x=175, y=70)

    # 获取邮件主题
    global message_subject
    global entry_message_subject
    message_subject = tk.StringVar()
    entry_message_subject = tk.Entry(qq_send_window, textvariable=message_subject, font=('微软雅黑', 14))
    entry_message_subject.place(x=175, y=160)

    # 获取邮件内容
    global message_context
    global entry_message_context
    message_context = tk.StringVar()
    entry_message_context = tk.Entry(qq_send_window, textvariable=message_context, font=('微软雅黑', 14))
    entry_message_context.place(x=175, y=190)

    #设置发送按钮
    send_button = tk.Button
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值