李杰,李瑞瑞
(1.同方知网(北京)技术有限公司,北京100192;2.北京因擎科技有限责任公司,北京100081)
目前,许多岗位在实际工作中需要进行邮件的“点对点”发送。邮件“点对点”发送要求一个发件人(即一个“点”)向一个收件人(即另外一个“点”)进行直接发送,在收件人处看到的效果即是发件人单独给收件人发送一封邮件。在实际工作中,“点对点”邮件发送是一“点”对多“点”的邮件发送,即一位发件人常常需要向成百上千个收件人发送邮件。
如果需要“点对点”发送的邮件内容和附件不变,以上的要求利用常用电子邮箱的“群发单显”功能即可实现,以网易126邮箱为例,见图1。发件人直接利用邮箱自身的功能即可实现。
在时需要“点对点”发送的邮件没有携带附件,但邮件正文中出现多处内容需要进行个性化处理。以编辑部向投稿人批量发送收稿通知为例,如图2所示。
图2 邮件正文多处内容需要个性化处理示意图
在这种情况下,可以利用Microsoft Word软件中的“邮件合并”功能进行设置并发送,见图3。
注:图中“«»”包含的灰色部分为利用“邮件合并”功能后自动添加的“域”,即在每封邮件中可以变动的部分
其中成为域的“作者姓名”项和“文章题目”项事先存放在Microsoft Excel文件中,见图4。
图4 存放在Microsoft Excel文件中的“作者姓名”、“收件人邮箱”和“文章题目”项列表
邮件预览结果见图5。
注:灰色部分为域。
在以下两种情况,需要“点对点”发送的邮件利用电子邮箱或者Microsoft Word“邮件合并”功能均无法实现:①除收件人邮箱外有其他个性化字段且携带相同附件,②不论是否有个性化字段,但需要携带不同附件。为此,笔者利用Mi⁃crosoft Excel的VBA语言 结 合Microsoft Outlook设计了一个基于Microsoft Excel的邮件群发系统,可以解决以上两个需求。
邮件群发系统建立在一个启用宏的Microsoft Excel文档中,后缀名为.xlsm。该系统交互界面包括1个窗体和2个工作表,即“发送记录”工作表、“后台”工作表。
邮件群发系统的窗体是邮件各项参数的设置和邮件内容的预览界面,利用在Microsoft Excel中插入窗体实现,见图6。窗体主要分为“设置框架”(绿色虚线区域)和“预览框架”(红色虚线区域)2个部分。在“设置框架”中,用户需要选择发送日期、所使用的发件箱、邮件是否带有附件以及相应的固定部分名称后,即可在“预览框架”中预览相应的邮件主题与正文。
图6 邮件群发系统的窗体
(1)“发送日期”列表框。需要用户点击选择发送日期,此列表的数据来源为“发送记录”工作表A列“发送日期”,需要用户事先填写,见图7。
图7 邮件群发系统的“发送记录”工作表
(2)邮件数量显示区域。在用户点击选择发送日期后会自动显示所选发送日期下的邮件数量,用户无需操作。
(3)“发件箱”列表框。其列出的邮箱为本机Microsoft Outlook中已经添加的账户信息,因此在发送邮件前需要用户事先在Microsoft Outlook中添加邮箱账户,并且在发送邮件前选择所用的发件箱。
(4)附件选择区域。用户根据所发邮件内容可以选择是否携带附件,如果用户选择选项“有”,则系统会根据用户所选发送日期检查附件路径是否正确,附件路径信息存放在“发送记录”工作表C列“附件路径”,需要用户事先填写,见图7。
(5)固定部分内容设置区域。其中“固定部分名称”列表框中显示用户已经保存的固定部分名称,其数据来源为“后台”工作表A列“名称”,见图8。“保存”按钮可以将用户在下方预览框输入的固定部分内容保存到“后台”工作表;“清空”按钮可以清空下方预览框中的固定部分内容,用于重新输入固定部分内容;“删除”按钮可以从“后台”工作表中删除保存的固定部分内容,删除后,“固定部分名称”列表框会刷新。
图8 邮件群发系统的“后台”工作表
红色底色区域为固定部分预览区域,蓝色底色区域为可变部分预览区域。其中,固定部分预览区域包括邮件主题、称呼前缀、固定字段1、固定字段2、固定字段3、固定字段4和签名,分别对应“后台”工作表C~I列的数据,见图8。可变部分预览区域包括收件人姓名、可变字段1、可变字段2、可变字段3、可变字段4,分别对应“发送记录”工作表D~H列的数据,且仅预览符合发送日期的第一条数据,见图8。固定部分和可变部分按照以下顺序依次连接共同组成了邮件的主题和正文部分:称呼前缀→收件人姓名→固定字段1→可变字段1→固定字段2→可变字段2→固定字段3→可变字段3→固定字段4→可变字段4→签名,以“2021年度调薪方案为例”,见图9。
图9 2021年度调薪方案邮件示意图
(6)“确定发送”按钮。用户点击后则按照设置的发送日期、发件箱、附件以及选择的固定字段在Microsoft Outlook中依次新建邮件对象并发送。
(7)“取消发送”按钮。用户点击后退出交互界面,中止邮件发送。
“发送记录”工作表用来存储发送日期、收件人Email、附件路径以及可变部分内容,包括收件人姓名和可变字段1~4,见图8。其中,发送日期必须采用Microsoft Excel标准的日期数据录入形式,可以采用Ctrl加“;”的组合键录入;本系统中可供使用者设置0~4个可变字段,实际设置可变字段的个数并不会影响邮件发送。在此工作表中添加按钮,并将按钮“Caption”属性改为“设置邮件发送”,见图7。
“后台”工作表用来存储固定部分内容,包括名称、保存时间、邮件主题、称呼前缀、固定字段1~4、签名,见图8。其中,A列“名称”表示固定部分名称,由窗体⑤“固定部分名称”列表框读取;B列“保存时间”为用户在窗体中点击“保存”按钮时的时间,仅供后台存储,窗体中不会显示;C列“邮件主题”、D列“称呼前缀”、E~H列“固定字段1~4”和I列“签名”分别会被窗体中的固定部分预览区域读取。
此按钮用于加载窗体“设置邮件并发送”,代码如下:
3.2.1 检测附件路径函数与过程
首先自定义附件路径函数FileFolderExists,用于检测路径下的文件是否存在,返回布尔值。代码如下:
其次在用户选择发送日期后,调用上述函数逐行检测所选发送日期下的邮件附件路径是否正确或者为空白,若正确则可以选中选项“有”,若错误则提示错误并选中选项“无”,若空白则提示附件路径未输入。代码如下:
3.2.2 窗体初始化事件过程
窗体初始化时要求在发送日期列表框中加载“发送记录”工作表中A列用户输入的发送日期,并且去重后按照升序排列;要求在发件箱列表框加载本机Microsoft Outlook中已经添加的邮箱账户;要求在固定字段列表框中加载已经保存在“后台”工作表中的A列名称。代码如下:
3.2.3 “发送日期”列表框单击事件
此事件中,需要后台记录符合用户选择的发送日期的邮件数量并显示在邮件数量显示区域;在可变部分预览区域显示符合用户选择发送日期的第一条记录的收件人姓名、可变字段1~4;若附件“有”按钮被选中,则需要调用检测附件路径过程。代码如下:
3.2.4 选项“是”单击事件
此事件中,需要检测用户所选发送日期的邮件项目的附件路径是否正确。代码如下:
3.2.5 “固定部分名称”列表框单击事件
此事件中,需要在固定部分预览区域显示用户选择的固定部分名称。代码如下:
3.2.6 “保存”按钮单击事件
此事件中,需要将用户在窗体固定部分预览区域录入的内容保存到“后台”工作表中并刷新“固定部分名称”列表框。代码如下:
3.2.7 “清空”按钮单击事件
此事件中,需要将窗体下部固定部分预览区域的内容清空,以便用户直接输入内容,方便下一步保存固定部分或者发送邮件。代码如下:
3.2.8 “删除”按钮单击事件
此事件中,需要将用户已经选中的固定部分名称整条数据从“后台”工作表中删除并且刷新“固定部分名称”列表框。代码如下:
3.2.9 “确定发送”按钮单击事件
此事件中,需要根据用户选择的发送日期、发件箱、是否携带附件、固定部分名称,循环创建HTML邮件项目并发送邮件。代码如下:
3.2.10 “取消发送”按钮单击事件
此事件中,需要关闭窗体,代码如下:
笔者所开发的邮件群发系统具有以下特点:(1)自由选择发件箱。用户可以根据本地计算机Microsoft Outlook中已经添加的邮箱账户由用户自由选择发件箱。
(2)保留已发邮件记录。用户可以将需要发送邮件的可变部分内容一次性加入到“发送记录”工作表中,提前设置发送时间,在发送时直接选取,并且发送后无需删除已经发送的邮件,不仅操作更加便捷,而且保留发送记录可以方便用户后续查阅、跟进发送进度,追踪客户信息。
(3)即时显示待发邮件数量。邮件数量显示区域自动显示所选发送日期下的邮件数量,在点击不同发送日期时可以方便用户即时查看。
(4)自由选择是否携带附件并自动进行附件路经检测。本系统可以实现用户在一次发送中自选邮件是否携带附件,且若用户选择携带附件,则系统自动检测附件路径是否正确并给出提示。
(5)快速管理固定部分内容。窗体可以允许用户通过“固定部分名称”及右侧“保存”、“删除”、“清空”按钮读取、添加、删除固定部分内容或下方的预览框,可以让用户迅速找到已经发送过的邮件内容,不必重复录入,也可以随时添加固定部分内容用于后续发送,更加便捷地管理邮件内容。
(6)按需使用多个固定部分内容和可变部分内容。本系统目前分别设置了4个固定字段与可变字段,允许用户在其中设置不同内容,基本能够符合日常使用场景要求,并且可以任意选择0~4个固定或者可变字段,在不需要使用时保留空白即可。需要注意的是,固定字段和可变字段的排列顺序决定了邮件的正文,当固定字段或可变字段数量少于4个时,需要用户优先使用靠前的固定字段与可变字段。
(7)通过HTML代码设置邮件格式。本系统新建的邮件对象为HTML邮件,因此可以使用HTML语言对邮件的格式进行个性化设置,如利用“”表示段落,“”表示换行,“ ”表示空格,“”表示斜体,“”表示粗体等功能。另外需要注意,使用该系统发送邮件之前,需要用户在Microsoft Outlook中添加邮箱账户后才可使用;Microsoft Outlook发送邮件过程需要一定的时间,可在软件界面状态栏“发送/接收->显示进度”查看发送进度[1]。
笔者设计的邮件群发系统可用于多种场景下的邮件批量发送,具有一定的通用性,希望能为广大读者工作带来一定的帮助。