hur.cn - 华软网

 热门搜索

  • 授权方式: 免费源码
  • 支付金币: 0个
  • 金币充值: 点击查看
  • 下载方法: 点击查看
  • 源码大小: 1590 KB
  • 评分等级: ★★★
  • 源码类别: 国内视频
  • 运行环境: WinXP/NT/Vista/Win7
  • 整理录入: 昕晨
  • 更新时间: 2010/1/4 12:20:20

源码介绍    


实例四 邮件群发

 

实例四 邮件群发
【程序说明】
邮件群发是一种很有用软件,不管是用在广告还是个人发送通知,这里我们就教大家如何做一个简单的邮件群发软件
程序运行效果如图所示。
 
图8.4.1
编程思路】
在D7中,邮件发送我们仍然利用Indy系列组件,大家可以看到在网络应用程序方面,Indy系列组件应用非常广,难怪DELPHI7用它代替了以前的FastNet单元。发送邮件使用SMTP协议,使用TidMessage组件配合TIdSMTP组件来完成此功能,而群发不过是增加一个邮件地址列表然后循环一遍即可。
编程步骤】
1.启动Delphi7,建立一个标准的Application。
2.添加控件
普通的控件在前面我们已经很熟悉了,这个例子我们用到了新的组建,TidMessage组件和TIdSMTP组件用来完成发送邮件,TpopupMenu弹出菜单组件、TopenDialog和TsaveDialog组件用来配合地址列表的操作。
 
图8.4.2
组件名称 对象名称 组件属性 属性值
TPopupMenu PopupMenu1 Items 图8.4.3

TLabeledEdit le_pass PasswordChar #
TOpenDialog openDialog1 Filter 文本文件(*.txt)|*.txt|所有文件(*.*)|*.*
TSaveDialog saveDialog1 Filter 文本文件(*.txt)|*.txt|所有文件(*.*)|*.*
 
图8.4.3
2.编写代码
(1) 我们从简单的开始,首先看看如何导入导出地址列表:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not OpenDialog1.Execute then Exit; //如果没有选择文件则退出
  ListBox1.Items.LoadFromFile(OpenDialog1.FileName);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  if ListBox1.Items.Count = 0 then exit;
  if SaveDialog1.Execute then //选择了保存文件
    ListBox1.Items.SaveToFile(SaveDialog1.FileName);
end;
地址列表文件其实就是一个文本文件,每一行写入一个Email地址,通过TlistBox组件的LoadFromFile和SaveToFile即可完成导入导出操作。
(2) 然后看看菜单代码
procedure TForm1.N1Click(Sender: TObject);
var
  s: string;
begin
  s := InputBox('输入对话框', '请输入邮件地址:', '@');
  if (Length(s) > 5) and (Pos('@', s) < Pos('.', s)) then
    ListBox1.Items.Add(s);
end;
添加号码菜单执行以上代码
procedure TForm1.N2Click(Sender: TObject);
begin
  ListBox1.DeleteSelected;
end;
删除所选菜单执行以上代码。
procedure TForm1.N3Click(Sender: TObject);
begin
  ListBox1.Clear;
end;
清空列表菜单执行以上代码。
(3) 接下来开始重点邮件发送的代码了:
procedure TForm1.Button3Click(Sender: TObject);
var
  i: integer;
begin
  if ListBox1.Items.Count = 0 then
  begin
    showmessage('发送列表为空,群发失败!');
    exit;
  end;
  if me_content.Text = '' then //检测邮件是否有内容
  begin
    showmessage('输入邮件内容!');
    exit;
  end;

  Button3.Enabled := False;
  if cb_authentication.Checked then //服务器验证
  begin
    IdSMTP1.AuthenticationType := atLogin; //设置认证模式
    IdSMTP1.Username := le_user.Text; //用户名
    IdSMTP1.Password := le_pass.Text; //密码
  end else
  begin
    IdSMTP1.AuthenticationType := atNone;
  end;
  IdSMTP1.Host := le_smtp.Text; //主机地址
  IdSMTP1.Port := StrToIntDef(le_port.Text, 25); //如果转换错误默认25

  IdSMTP1.Connect; //连接
  try
    Tag := 1; //设置中断标志
    for i := 0 to ListBox1.Items.Count - 1 do
    begin //循环发送
      if Tag = 0 then exit; //如果中断则退出群发
      SendEmail(ListBox1.Items.Strings[i]); //这个函数我们在后面介绍
      IdSMTP1.Send(IdMessage1); //发送
      ListBox1.ItemIndex := i;
      StatusBar1.SimpleText := Format('正在发送... (%d/%d) %s', [i, ListBox1.Items.Count - 1, ListBox1.Items.Strings[i]]);
      Application.ProcessMessages; //循环期间处理进程消息
    end;
  finally
    Tag := 0;
    IdSMTP1.Disconnect; //断开连接
    Button3.Enabled := True;
  end;
  StatusBar1.SimpleText := '发送完成...';
end;
为了可以随时中断发送,我们需要设置一个全局标志,这里我们直接利用了Tform的Tag属性来完成,这种方法可以省掉一个全局变量的申明和初始化它的值,因而中断按钮的代码就非常简单了,一句Tag := 0;即可。
其中我们用到了SendEmail()函数代码如下:
function TForm1.SendEmail(aAddr: string): boolean;
begin
  IdMessage1.Body.Assign(me_content.Lines); //内容
  IdMessage1.From.Text := le_email.Text;
  IdMessage1.ReplyTo.EMailAddresses := le_email.Text; //回复地址
  IdMessage1.Recipients.EMailAddresses := aAddr; //发送地址
  IdMessage1.Subject := le_title.Text; //标题
end;
这个函数就是我们用来设置发送的邮件信息的,循环中每封邮件的发送地址都不一样,因而封装此函数方便使用。
(4) 保存参数的代码:
procedure TForm1.Button5Click(Sender: TObject);
begin //保存配置
  with TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'comm.ini') do
  begin
    WriteString('comm', 'smtp', le_smtp.Text);
    WriteString('comm', 'port', le_port.Text);
    WriteString('comm', 'user', le_user.Text);
    WriteString('comm', 'pass', le_pass.Text);
    WriteString('comm', 'email', le_email.Text);
    WriteBool('comm', 'pass', cb_authentication.Checked);
  end;
end;
Ini文件的使用我们在前面已经介绍过,这里就不多说了,同理,在窗体显示的时候读出这些配置即可。
3.全部代码写完收工,F9运行一下看看效果。
【程序小结】
本程序主要的功能由IdMessage和IdSMTP组件完成,如果想做一个OutLook的软件,再学习一下TidPop3、T IdIMAP的组件使用,需要用到什么协议,就用相应的组件来完成。

实例四 邮件群发 (0 folders, 13 files, 1.59 MB, 1.59 MB in total.)
1.bmp 786.39 KB
2.bmp 89.88 KB
3.bmp 107.68 KB
main_from.gif 724 bytes
Project1.cfg 646 bytes
Project1.dpr 188 bytes
Project1.exe 566.50 KB
Project1.res 876 bytes
Unit1.dfm 5.12 KB
Unit1.pas 5.37 KB
群发演示邮件地址.txt 253 bytes

邮件群发.doc 64.50 KB



上一源码:实例三 断点续传
下一源码:实例一 用DELPHI实现网络信使服务

下载地址    

  • 实例四 邮件群发

下载说明

  • 为防止盗链,本站资源部分有解压密码,解压密码点击查看
  • 如果您发现该资源不能下载,请通知管理员;
  • 为了保证您快速的下载,推荐使用迅雷或网际快车等专业工具下载;
  • 为确保所下资源能正常使用,请使用WinRAR v3.80或以上版本解压本站资源;
  • 本站所收集的下载资源均来源于网络,如果有侵犯您的版权,请来信告知,我们会马上处理;
  • 本站所提供的资源仅供学习和研究,请勿用于商业用途,请在下载后24小时内删除;
  • 本站不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害!