一个简单的邮件发送可视化界面
界面效果
核心代码
def btn_clicked(self):
# 自己的邮箱,通过QQ邮箱设置获取口令
mail_user_qq = "xxxxxxxxxx@qq.com" # QQ邮箱用户名
mail_user_163 = "xxxxxxxxxx@163.com" # 163邮箱用户名
mail_pass = "xxxxxxxxxxxx" # qq邮箱服务器口令
mail_pass_163 = "xxxxxxxxxxxxxxx" # 163服务器口令
sender_qq = 'xxxxxxxxxx@qq.com'
sender_163 = 'xxxxxxxxxxx@163.com' # 发送者
receivers = [] # 接受者
mail_host = self.cmb_server.currentText()
mail_host = "smtp." + mail_host + ".com"
b = self.edit_receiver.text()
b = b + "@qq.com"
receivers.append(b) # 添加接收者
subject = self.edit_subject.text()
file = self.edit_text.toPlainText()
From = self.edit_sender.text()
message = MIMEText(file, 'plain', 'utf-8')
message['From'] = From # 发送人
message['To'] = b # 接收人
message['Subject'] = subject
if mail_host == "smtp.qq.com": # 使用QQ邮箱
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25为SMTP端口号
smtpObj.login(mail_user_qq, mail_pass) # 会返回(状态码, "字符串解释")元组信息
smtpObj.sendmail(sender_qq, receivers, message.as_string())
QtWidgets.QMessageBox.information(self.btn_send, "状态", "发送成功")
except smtplib.SMTPException:
QtWidgets.QMessageBox.information(self.btn_send, "状态", "发送失败")
if mail_host == "smtp.163.com": # 使用163邮箱
try:
smtp = smtplib.SMTP_SSL("smtp.163.com", 994) # 实例化smtp服务器
smtp.login(sender_163, mail_pass_163) # 发件人登录
smtp.sendmail(sender_163, receivers, message.as_string()) # as_string 对 message 的消息进行了封装
QtWidgets.QMessageBox.information(self.btn_send, "状态", "发送成功")
smtp.close()
except smtp.MTPException:
QtWidgets.QMessageBox.information(self.btn_send, "状态", "发送失败")