批量回复邮件 一键搞定
技术与开发
我是某家游戏公司的客服,每天都会收到大量游戏玩家的来信。很多回复都差不多,大家就建立了几个回复模板,一条一条地回复,不过这样还是比较繁琐。我开发了一个批量回复邮件的小程序(程序下载地址:http://www.shudoo.com/bzsoft),同事用过后,都说工作效率提高了不少,领导也表扬了我。

公司需求:公司每天都会收到大量游戏玩家的邮件,每封邮件都必须回复。由于很多情况下,回复邮件的内容是一样的,我们选择好需要批量发送的邮件,输入内容后,再点击“批量发送”按钮,就一次性给所有选中的玩家回了信。
软件原理:使用一个对话框来设置客服人员电子邮件的配置(服务器、端口号、账户名、密码等),在主窗体上连接客服人员的电子邮件服务器,登录客服人员的信箱读取所有信件,把信件的主题显示在列表中,点击列表中的某一个主题后,把相应的正文显示在文本框中,设计两个输入框用于输入回复邮件主题和邮件内容,使用循环功能对每一个收件人进行邮件发送,发送成功一个后再发送下一个,直到所有邮件发送完毕。
技术要点:目前许多网站的邮件服务器需要对发送者的身份进行验证,也就是需要给出用户名和密码,否则无法发送。选用IdPOP31、IdSmtp、IdMessage就能实现我们的要求,因为IdSmtp支持身份验证。
先设置IdPOP31的参数从邮件服务器上接受所有信件,再设置IdMessage的参数(邮件主题、邮件内容、附件、发件人地址、收件人地址),并且设置IdSmtp的参数(发件人的邮件服务器SMTP、账户名、密码、端口号),参数设置完毕后,对发件人服务器进行连接,连接成功后进行身份验证,验证成功后调用IdSmtp的Send方法(IdSmtp.Send(IdMessage)发送邮件就可以了。
软件开发步骤
第一步:启动Delphi7.0,新建一个工程,并在Form1窗体上添加三个Button控件(用于接收客服人员的电子邮件等),添加一个ListBox控件和一个Memo控件(显示所有的玩家邮件主题和邮件正文)、一个ListBox控件(用于显示玩家邮件地址)、一个Edit控件(输入邮件主题)、一个Memo控件(输入邮件内容)、一个IdSmtp控件、一个IdMessage控件(用于批量回复邮件)。
新建Form2窗体,在Form2上添加八个Edit控件和两个Button控件(设置发送者的邮件服务器、端口号、用户名、密码等)。
第二步:从邮件服务器上获取客服人员的所有邮件,把邮件的主题和邮件正文分别显示在ListBox1和Memo1中。接收邮件的关键代码如下(完整代码下载地址:http://www.shudoo.com/bzsoft):
idpop31.Host:=POP3Option.PoP3Server.Text;//设置POP3的服务器地址
IdPOP31.Port:=StrToIntDef(POP3Option.POP3Port.text,110);// 设置POP3的端口号
idpop31.Username:=POP3Option.edtAccount.Text;// 设置POP3的账户
idpop31.Password:=POP3Option.edtPassword.Text;// 设置POP3的密码
Label9.Caption :='一共有'+inttostr(idpop31.CheckMessages)+'封邮件';
if idpop31.CheckMessages>0 then//如果存在新邮件
第三步:发送邮件。我们在收取玩家邮件的时候已把玩家邮件地址存储在ListBox2中了,现在只需把ListBox2的每一行读出来,使用Smtp和IdMessage来依次给他们发送邮件即可。发送邮件的关键代码如下(完整代码下载地址:http://www.shudoo.com/bzsoft):
SMTP.Host := fmSMTPOption.SMTPServer.Text; // SMTP地址
SMTP.Port := StrToIntDef(fmSMTPOption.SMTPPort.Text, 25); //端口(默认25)
Try // 发送邮件
SMTP.Connect; //连接服务器
if SMTP.AuthSchemesSupported.IndexOf('Login')>-1 then
begin
showmessage('支持身份验证');
SMTP.AuthenticationType := atLogin;
showmessage('不支持身份验证');
SMTP.AuthenticationType := atNone;
第四步:设置SMTP功能,为了避免客服工作人员每次启动软件都需手动录入自己邮件的用户名、密码、服务器端口号等参数,我们采用.ini文件来保存这些参数,在项目文件夹下新建一个Mail.ini文件,然后在Form2窗体的“保存”按钮中输入代码,其中关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
begin // 把输入框的参数存入配置文件
WriteString('Smtp', 'ServerName', SMTPServer.Text);//服务器名,比如smtp.sina.com.cn
WriteString('Smtp', 'ServerPort', SMTPPort.Text);//端口号,默认是25
WriteString('Smtp', 'ServerUser', edtAccount.Text);//账户名
编后
此软件把收件人邮件地址放入列表框中,使用循环功能依次读取列表框的行,把邮件地址赋值给IdMessage后进行邮件发送,实现了邮件批量回复的功能。使用这种功能可以广泛运用在需要每天大量回复众多邮件的地方,比如杂志社的编辑、企业负责招聘的管理人员等都可以采用这种方法来批量回复邮件。