用Delphi设计能携带附件的EMail

平时从来不使用Foxmail、Outlook这样的的客户端软件的用户,每次发邮件的时候都会小心翼翼地打开IE,击开收藏夹,点击某个网站的地址,然后填入用户名、密码,添加附件,等待ing…,发送失败,回退到前页,再次发送,等待ing…,直到发送成功。每次让他们经历这些动作不啻于一种折磨。用什么办法能减轻他们的负担呢?那就在你的程序中加入邮件发送功能吧,同时别忘了加上附件功能(附件功能在电子邮件中实在太有用了),让你的用户只要点击一次就能搞定一切,为他们带来一些轻松。

实现上面讲的功能会不会很难呢?或许以前是这样的,可是现在我们有了Delphi和Indy组件,开发的过程就会像是静坐窗前,一边欣赏窗外的景致,一边品尝着杯中的咖啡一般惬意而自然。现在就让我们双击Delphi,开始这一段愉快之旅吧。

在Delphi的Form上,放置IdSMTP、IdMessage、OpenDialog三个主要的组件,这三个组件是这次邮件发送程序的核心组件,大部分功能都由它们来实现,其它还有一些Label、LabeledEdit和Memo组件,具体的布局如下图所示:


(图一)

本程序的实现思路是这样的,邮件的发送功能由Indy组件来实现,(笔者注:这是一套十分著名的用来开发网络程序的组件,从Delphi6开始,这套组件成为Delphi内置的组件,它的最新版本可以到http://www.nevrona.com/indy/上去下载),IdSMTP组件用来实现与邮件发送服务器(即SMTP服务器)的联接与通信,而IdMessage组件则用来对邮件内容进行存储和编码。当邮件写好后,数据被编码并“填充”进IdMessage,然后通过IdSMTP与SMTP服务器进行联接和通信。

邮件发送的主要代码如下:

procedure TMailerForm.btnSendMailClick(Sender: TObject);
begin
  StatusMemo.Clear;
//设置SMTP
  SMTP.Host := ledHost.Text; //具体使用的SMTP,可以到你申请的邮箱所在的网站中去找
  SMTP.Port := 25;
//设置邮件内容
  MailMessage.From.Address := ledFrom.Text;
  MailMessage.Recipients.EMailAddresses := ledTo.Text + ',' + ledCC.Text;
MailMessage.Subject := ledSubject.Text;
  MailMessage.Body.Text := Body.Text;
if FileExists(ledAttachment.Text) then
   TIdAttachment.Create(MailMessage.MessageParts,
   ledAttachment.Text);
//发送邮件
   try
    try
     SMTP.Connect(1000);
     SMTP.Send(MailMessage);
    except on E:Exception do
     StatusMemo.Lines.Insert(0, 'ERROR: ' + E.Message);
    end;
   finally
    if SMTP.Connected then
    SMTP.Disconnect;
  end;
end;
//添加附件代码
procedure TMailerForm.btnAttachmentClick(Sender: TObject);
begin
  if AttachmentDialog.Execute then
   ledAttachment.Text := AttachmentDialog.FileName;
end;

邮件发送程序的应用十分的广泛,随着宽带的普及,“时刻在线”成为了可能,为你的应用软件加入邮件收发功能将为你的用户带来不少的方便。在软件开发中更多的为用户着想,才能使你的软件真正受到大众的欢迎!

时间: 2024-11-02 07:38:46

用Delphi设计能携带附件的EMail的相关文章

如何用delphi设计将表二减表一,然后把结果写入表三中。

问题描述 如何用delphi设计将表二减表一,然后把结果写入表三中. SQl2005数据库有两个表如下表一,表二. 如何用delphi设计将表二减表一,然后把结果写入表三中. 一.表名:NNew 结构如下: ID, 品名,数量 1 花香 100 2 飘柔 125 3 秀美 126 二.表名:TTew 结构如下: ID, 品名,数量 1 花香 500 2 飘柔 625 3 秀美 726 如何将表一,和表二逐项相减,将结果写入表三中 正解结果如下 三.表名:TTMP ID, 品名,数量 1 花香 4

用php发送带附件的Email

参考了一下网上的文章.俗话说,天下文章一大抄,看你会抄不会抄.关键是能为我所用,这是最重要的.废话不多讲,let's go. 其实发mail很简单,php有现成的函数,可以参考php 的 manual,特别是第四个例子,讲的很详细. 关键是怎么把上传附件跟邮件发送结合起来.关于文件的上传,可以参考http://blog.csdn.net/slamdunk3/archive/2005/02/23/299025.aspx 这篇文章. 讲一下 文件上传的方法及其属性: 我们假设文件上传字段的名称如上例

使用Delphi设计强大的服务器程序

现在网络的流行,使得服务器程序得到了广泛的应用,那么我们使用Delphi如何设计出强壮的服务器呢? 有人说,如果要设计服务器的话,一定要使用VC来设计,其实这个人说的有一定道理,因为如果你要使用Delphi来设计服务器的话,要想设计高效的服务器就不要使用Delphi带来的大部分的控件(最好不要使用Delphi控件),为什么呢?下面我会告诉大家.这样的话你全部使用API来设计服务器,就同VC没有太大的区别了. 使用Delphi来设计服务器程序,具体选择是使用窗体消息模式还是使用完成端口的模式,这主

Delphi设计PhotoShop型弹出菜单

大家都知道,使用Delphi的TPopupMenu构件可以制作弹出式菜单.但是我们如何才能制作出类似Photoshop中各种样式的弹出式菜单呢?(比如,Photoshop的笔刷形状选择菜单,见图) 制作方法如下: 1.打开Delphi, 在Form1中放置一个TButton构件. 2.新建一个窗体,使用默认名字Form2. 3.将Form2的BorderStyle属性设置为bsNone,这样将会去掉窗体的标题栏和边框. 4.在Form2中加入TPanel构件Panel1,将Panel1的Beve

Delphi设计形象的动态三维饼图

在进行数据比较或者演示时,一个形象的图表不但非常直观,而且也很生动.本实例介绍如何在Delphi中设计形象的三维饼图. 向窗体上添加一个TVtChart组件和一个TTimer组件,其中TVtChart组件用于显示饼图,而TTimer组件用于不停地改变饼图的数据,获得动态的效果.设计完成的主界面如图1所示. 图1 主界面 程序首先在uses段中加入math单元,然后在窗体的初始化过程中添加Randomize()语句,使得每次运行程序时重新产生随机数,以免同前一次运行的随机数相同. 为了产生动态的饼

二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)_python

可以使用Python的email模块来实现带有附件的邮件的发送. SMTP (Simple Mail Transfer Protocol)邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器.SMTP协议只能用来发送邮件,不能用来接收邮件.大多数的邮件发送服务器 (Outgoing Mail Server) 都是使用SMTP协议.SMTP协议的默认TCP端口号是25. SMTP协议的一个重要特点是它能够接力传送邮件.它工作在两种情况

用ASP实现支持附件的EMail系统

大家经常探讨使用asp,而不使用其他组建能否实现文件的上传,从而开发出支持邮件附件的邮件系统,答案是可以的. 以下是发送邮件的页面,邮件的帐号是员工号,假设是5位的数字,sendmail.asp当然是在合法登陆后才能够看到的 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel="st

用ASP实现支持附件的EMail系统(1)

    大家经常探讨使用asp,而不使用其他组建能否实现文件的上传,从而开发出支持邮件附件的邮件系统,答案是可以的. 以下是发送邮件的页面,邮件的帐号是员工号,假设是5位的数字,sendmail.asp当然是在合法登陆后才能够看到的 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <link rel=&quo

Delphi设计可中/英文切换的界面技巧

在一些软件中,我们经常会看到界面语言切换功能,不过程序需要的这些各国语言信息都封装在DLL中,有的也存储在INI文件中,下面我就向大家介绍一个小技巧,在DELPHI中不需要任何DLL文件和INI文件,就可以实现此功能. 首先新建一工程,然后在窗体FORM1中加入一些控件,在这里我假设加入了如下控件:三个TBUTTON按钮,两个TCHECKBOX,一个TGROUPBOX和一个菜单. 然后把他们的CAPTION属性改为中文信息,再将对应的英文信息放在这些控件的HINT属性中,信息如下: 控件名称 C