使用场景
当使用者需要群发内容框架一致而只有少许内容不同的邮件时,会因为频繁地修改琐碎的细节而浪费大量时间,这样一来一个可供配置和扩展的自动邮件程序就十分有必要。
比如说我作为课程助教需要发送邮件给每个考试了的同学他的课程成绩,那么邮件中不同的地方就只有接收者的名字、学号以及成绩。
这些信息通常记录在Excel表中,一个自动邮件发送程序应当可以匹配不同的姓名、学号对应的成绩。这样一来,就可以将邮件发送者从繁琐而无意义的体力劳动中解放出来,而且减少了成绩输入错误这种可能情况的发生。
GUI设计版
一个简易的Python写的邮件自动发送程序可以参考我的上一篇文章,介绍了发送邮件的基本框架。
这一次我进一步简化了用户对程序的依赖程度。他只需要运行程序,根据各项文字提示输入必要信息,点击两个按钮即可完成邮件的批量个性化定制发送操作。
首先来看程序源码如下:
# coding:utf-8
# author: Meditator_hkx
#!/usr/bin/env python
# GUI AutoMailor
'a GUI version for auto_email implementation'
from Tkinter import Tk, Label, Button, Entry, Text, IntVar, StringVar, END, W, E
import datetime
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.header import Header
class Automailor:
def __init__(self, master):
self.master = master
master.title("AutoMailor")
# Guest object
self.guest = Guest()
# Change words printed while click "Run" button
self.my_text = StringVar()
self.my_text.set("Hello, master!")
self.my_label = Label(master, textvariable = self.my_text)
# Label Added
self.account_label = Label(master, text = "Sender account: ")
self.pwd_label = Label(master, text = "Sender password: ")
self.port_label = Label(master, text = "Mail server port: ")
self.flag_label = Label(master, text="Replacement flag character: ")
self.subject_label = Label(master, text="Mail subject: ")
self.frame_content_label = Label(master, text = "Framework words:")
self.individual_info_label = Label(master, text = "Ordered information:")
vcmd2 = master.register(self.validate2)
self.my_entry = Entry(master, validate = "key", validatecommand = (vcmd2, '%P'))
# Entry added
self.account_entry = Entry(master)
self.pwd_entry = Entry(master)
s