pyqt5实现SMTP邮件发送

 本例子使用了pyqt5制作界面,支持邮件使用/不使用SSL/TLS加密,支持设置抄送人地址。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'SMTP.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!


import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow,QFileDialog

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import formataddr


class Ui_MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(Ui_MainWindow,self).__init__()
        self.setupUi(self)
        self.retranslateUi(self)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1095, 842)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label_title = QtWidgets.QLabel(self.centralwidget)
        self.label_title.setGeometry(QtCore.QRect(310, 300, 81, 18))
        self.label_title.setObjectName("label_title")
        self.textEdit_title = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_title.setGeometry(QtCore.QRect(410, 290, 351, 41))
        self.textEdit_title.setObjectName("textEdit_title")
        self.label_passage = QtWidgets.QLabel(self.centralwidget)
        self.label_passage.setGeometry(QtCore.QRect(60, 350, 81, 18))
        self.label_passage.setObjectName("label_passage")
        self.textEdit_passage = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_passage.setGeometry(QtCore.QRect(60, 380, 971, 361))
        self.textEdit_passage.setObjectName("textEdit_passage")
        self.button_send = QtWidgets.QPushButton(self.centralwidget)
        self.button_send.setGeometry(QtCore.QRect(510, 750, 112, 34))
        self.button_send.setObjectName("button_send")
        self.button_send.clicked.connect(self.send_email)
        self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(60, 40, 271, 81))
        self.gridLayoutWidget.setObjectName("gridLayoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLay
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用PyQt5可以轻松地创建邮件发送界面。首先,需要使用smtplib和email包来发送邮件。使用smtplib来连接到SMTP服务器并发送邮件,使用email包来构建邮件内容。 在PyQt5中,可以使用QLineEdit、QTextEdit和QComboBox等小部件创建邮件内容输入框,使用QMessageBox和QStatusBar等小部件显示状态信息。然后,可以将这些小部件放在一个QWidget或QDialog中,使用布局管理器将它们定位在正确的位置上。 下面是一个简单的PyQt5邮件发送界面的代码示例,其中包含了所有必要的小部件和代码: ```python import sys from PyQt5 import QtGui, QtWidgets from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QGridLayout, QLabel, QLineEdit, QTextEdit, QComboBox, QMessageBox, QStatusBar import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication class EmailSender(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建所有的小部件 self.sender_label = QLabel('发件人:') self.sender_edit = QLineEdit() self.password_label = QLabel('密码:') self.password_edit = QLineEdit() self.password_edit.setEchoMode(QLineEdit.Password) # 隐藏密码 self.recipient_label = QLabel('收件人:') self.recipient_edit = QLineEdit() self.subject_label = QLabel('主题:') self.subject_edit = QLineEdit() self.body_label = QLabel('正文:') self.body_edit = QTextEdit() self.attachment_label = QLabel('附件:') self.attachment_edit = QLineEdit() self.attachment_button = QPushButton('浏览') self.attachment_button.clicked.connect(self.browseFile) self.attachment_button.setFixedWidth(80) self.attachment_button.setEnabled(False) self.send_button = QPushButton('发送') self.send_button.clicked.connect(self.sendEmail) self.statusbar = QStatusBar() self.statusbar.showMessage('准备就绪') # 创建布局管理器 grid = QGridLayout() grid.setSpacing(10) grid.addWidget(self.sender_label, 1, 0) grid.addWidget(self.sender_edit, 1, 1) grid.addWidget(self.password_label, 2, 0) grid.addWidget(self.password_edit, 2, 1) grid.addWidget(self.recipient_label, 3, 0) grid.addWidget(self.recipient_edit, 3, 1) grid.addWidget(self.subject_label, 4, 0) grid.addWidget(self.subject_edit, 4, 1) grid.addWidget(self.body_label, 5, 0) grid.addWidget(self.body_edit, 5, 1) grid.addWidget(self.attachment_label, 6, 0) grid.addWidget(self.attachment_edit, 6, 1) grid.addWidget(self.attachment_button, 6, 2) grid.addWidget(self.send_button, 7, 0, 1, 3) # 设置QWidget的布局管理器 self.setLayout(grid) self.setWindowTitle('邮件发送') self.setGeometry(300, 300, 400, 300) self.show() def browseFile(self): # 弹出文件对话框 filename = QtWidgets.QFileDialog.getOpenFileName(self, '选择文件')[0] if filename: self.attachment_edit.setText(filename) def sendEmail(self): # 获取输入的值 sender = self.sender_edit.text() password = self.password_edit.text() recipient = self.recipient_edit.text() subject = self.subject_edit.text() body = self.body_edit.toPlainText() attachment = self.attachment_edit.text() # 创建邮件对象并设置内容 msg = MIMEMultipart() msg['From'] = sender msg['To'] = recipient msg['Subject'] = subject msg.attach(MIMEText(body, 'plain')) # 添加附件 if attachment: with open(attachment, "rb") as f: attachment_data = f.read() part = MIMEApplication(attachment_data, Name=attachment.split('/')[-1]) part['Content-Disposition'] = 'attachment; filename="%s"' % attachment.split('/')[-1] msg.attach(part) # 连接到SMTP服务器并发送邮件 try: smtpObj = smtplib.SMTP('smtp.gmail.com', 587) # 连接到SMTP服务器 smtpObj.starttls() smtpObj.login(sender, password) # 登录到SMTP服务器 smtpObj.sendmail(sender, recipient, msg.as_string()) # 发送邮件 self.statusbar.showMessage('邮件发送成功') except smtplib.SMTPException as e: self.statusbar.showMessage('邮件发送失败') if __name__ == '__main__': app = QApplication(sys.argv) es = EmailSender() sys.exit(app.exec_()) ``` 在这个例子中,我们使用小部件构建了一个简单的邮件发送界面。首先,用户需要输入发件人和密码,以及收件人、主题、正文和附件等邮件内容。然后,用户可以单击“发送”按钮来发送邮件。 在发送邮件时,我们从输入框中获取用户输入的值,并使用email包来构建邮件内容。我们可以使用MIMEText类将正文添加到邮件中,并使用MIMEMultipart类将附件添加到邮件中。最后,我们使用smtplib包连接到SMTP服务器并发送邮件。 这个例子仅仅只是一个简单的示例,你可以根据自己的需求进行修改和扩展。通过PyQt5,你可以很容易地创建一个美观且功能强大的邮件发送界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值