首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 软件开发 → Delphi编程 → 文章内容

Delphi让你发送Flash电子邮件(1)

作者:佚名  来源:网上收集  发布时间:2005-12-10 0:20:17
 
Delphi让你发送Flash电子邮件

  无论Outlook XP还是最新的Foxmail 4.0,都只能在HTML格式的电子邮件中嵌入JPG、GIF格式图片,而音色俱佳的Flash动画却只能作为电子邮件附件发送给好友,你可曾感到遗憾?

  经过一番实验探索,我使用
Delphi终于实现了将Flash动画(.SWF格式)嵌入到电子邮件正文中发送的功能,Foxmail、Outlook均可以按照HTML格式的邮件查看,而且263、163等免费电子邮件还支持Web界面直接浏览。可惜的是,Sina、Sohu免费电子邮件的Web界面则不支持,只能将Flash动画作为附件提供。

一、程序原理

  下面对本程序相关的重要理论知识做些解释,帮助大家理解本程序的原理。更多的内容,限于文章篇幅,请参见相关的参考
书、帮助文件。

1.TNMSMTP控件

  电子邮件发送过程都必须遵循SMTP协议。客户端和服务器通过该协议进行通信,由客户端发送出电子邮件,SMTP服务器通过网络上其他SMTP服务器,最终将邮件传递到收信人的邮件服务器。本程序作为电子邮件客户端程序,最基本的功能是要实现电子邮件发送,为了简化编程,使用了
Delphi 5自带的TNMSMTP控件,该控件封装了对SMTP编程。由于该控件继承自TPowersock,因而必要时可以直接调用底层的Socket过程,又不失灵活性。

  例如,虽然TNMSMTP不直接支持“SMTP服务器认证功能”(请参考《电脑爱好者》2001年16期《制作支持“服务器认证”的
VB电子邮件程序》,包括下文“BASE64编码”),但是,可以利用TNMSMTP的Connect事件和继承自TPowersock的Transaction方法,实现SMTP服务器认证。其原理在于,Connect事件发生在TNMSMTP与服务器连接成功之时,此时,使用Transaction方法发出SMTP服务器认证所规定的“AUTH LOGIN”命令,并输入经过BASE64编码后的用户名和密码,可以实现认证。因此,本程序实现了SMTP服务器认证。

  另外,TNMSMTP的SendStart事件在邮件发送开始时触发,在该事件中,可以通过修改TNMSMTP的FinalHeader属性值,实现修改电子邮件的邮件头信息。在本程序中需要修改邮件头的Content-Type属性,使接收嵌入
Flash动画电子邮件的客户端软件(如Foxmail)能正确处理邮件内容。

2.MIME协议

  目前,几乎所有的邮件服务器和客户端软件都支持“多用途Internet邮件扩展”协议Multipurpose Internet Mail Extensions (MIME)。该协议的最新版由RFC2045(Internet消息体格式)、RFC2046(媒体类型)、RFC2047(无ASCII文本消息头扩展)、RFC2048(注册过程)、RFC2049(一致性标准和例子)等共同规定。该协议遵循了RFC822中规定的电子邮件内容只能包括简单的ASCII文本字符(如字母、数字、标点符号等),定义了在电子邮件中包括经过编码的二进制文件的方法,编码后的内容将只包括文本字符。目前,实现对二进制文件编码的规范有很多,BASE64编码规范也是其中之一。本程序使用TMemoryStream对象,实现了通用的BASE64编码函数EncodeBASE64,能够对SWF文件进行编码。

  通过MIME协议,电子邮件中不但可以添加附件,还可以添加HTML格式内容,包括图片、声音、动画等。Outlook、Foxmail 4.0等软件都可以编辑HTML格式的邮件,但是并不支持直接嵌入
Flash动画。事实上,正确利用MIME协议,可以在HTML格式的邮件中嵌入Flash动画,并在邮件正文中显示出来,其原理和在HTML格式邮件中显示图片、播放声音是一样的。在HTML格式邮件中嵌入Flash动画与向网页中添加动画所需要的代码是一样的,同样使用< OBJECT >、< EMBED >标记,感兴趣的朋友可以查看一个包含Flash动画的网页源代码,对比本程序。

  在本程序中,设置邮件MIME消息头的Content-Type属性为multipart/related; boundary="---SwfEmail by JDH",表示该邮件包括多个不同数据类型的部分,各个部分之间用"---SwfEmail by JDH"(不包括引号)区分。在邮件内容的这些部分中,根据每部分的内容不同,再为其添加相应的MIME消息头,具体可参见程序源代码。

二、编程实战

  启动
Delphi 5,参考图1在Form1上创建各种控件。图中黑色方框内标明了控件名称,其中txt前缀表示TEdit控件,mem前缀表示TMemo控件,chk前缀表示TCheckbox控件,btn前缀表示TButton控件,NMSMTP1是TNMSMTP控件,OpenDialog1是TOpenDialog控件。图2列出了一部分控件的某些关键属性。

现在添加代码如下:


{******Unit1.pas源代码内容如下******}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Psock, NMsmtp;
type

......
procedure TForm1.btnOpenClick(Sender: TObject);
begin
{打开对话框,选择SWF文件}
if OpenDialog1.Execute then

procedure TForm1.NMSMTP1SendStart(Sender: TObject);
begin
{在邮件发送开始时修改邮件的消息头,标明邮件为多部分组成}
NMSMTP1.FinalHeader.Values['Content-Type'] := 'multipart/related; boundary="------------SwfEmail by JDH"';
end;

procedure TForm1.chkSmtpVerifyClick(Sender: TObject);
begin
{根据是否需要SMTP服务器认证,改变用户名、密码状态}
if chkSmtpVerify.Checked = True then

......


完整源代码请点击 这里 查看


三、程序运行

  首先在
Delphi 5中编译运行,接着在对话框中输入收信人、发信人、主题、正文内容以及SMTP服务器,比如填写“smtp.263.net”,端口号使用默认的25,选中“SMTP服务器需要认证”,并根据发信人输入用户名、密码。单击“打开文件”按钮,选择要发送的Flash动画文件,确认无误后,单击“发送”按钮即可。发送成功后,会出现发信成功
 

[] [返回上一页] [打 印]
  • 上一篇文章:Delphi实现随时随刻知道自己的IP
  • 下一篇文章:Delphi让你发送Flash电子邮件(2)

  • 相关文章:
  • [图文]利用Delphi编制IP地址转换器
  • 简析XML及其在Delphi中的应用
  • Delphi模拟最小化恢复关闭按纽
  • Delphi实现远程串口的数据采集
  • [图文]Delphi开发基于DCOM的聊天室
  • 在Delphi中使用电子邮件
  • Delphi托盘编程实战演练
  • Delphi实现同类型文档自动合并
  • Delphi开发98屏幕保护预览程序
  • [图文]Delphi 8 For .NET 抢先预览
  • [图文]用Delphi实现动态获取版本信息
  • Delphi图像存取另类解决方案
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号