说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

SMTP组件的使用方法-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
SMTP组件的使用方法-Delphi资料

Borland的Delphi3提供了FTP、HTML、HTTP、SMTP等14个Internet组件,使得开发Internet应用程序变得轻松有趣。我们利用其中一个名为SMTP Client的ActiveX组件, 可简单的设计一个E-Mail发送程序。

一、用SMTP组件发送E-Mail的步骤

1、连接SMTP服务器:SMTP1.Connect(RemoteHost:string

RemotePort:longint);Remotehost即SMTP服务器。

2、制作邮件头:可用SMTP.DocInput.Headers.Add(Name

Value:string)方法

增加电子邮件的头信息,主要包括有发件人E-mail地址、收件人E-mail地址、所采用的文件格式和字符集、发送软件名称等项目,供SMTP1.SendDoc方法使用。

3、发送邮件:SendDoc(URL:string

Headers:DocHeaders

InputData:VARIANT

InputFile:string

OutputFile:string);

发送时必须保证SMTP1.State(连接状态)为prcConnected,才能正确发送。

二、监控SMTP组件运行时状态的方法

1、连接状态:SMTP组件共有6种有关连接的状态

(1)prcConnecting : 正在连接

(2)prcResolvingHost : 解析主机地址

(3)prcHostResolved : 解析完成

(4)prcConnected : 已经建立连接

(5)prcDisConnecting : 正在撤消连接

(6)prcDisConnected : 已经撤消连接

上述6种状态可在SMTP组件的OnStateChanged事件中监控,用于显示连接进程。

2、发送状态:SMTP组件在发送邮件时也有6种状态

(1)icDocNone : 没有传送数据

(2)icDocBegin : 开始传送(初始化)

(3)icDocHeaders : 传送邮件头信息

(4)icDocData :传送邮件内容

(5)icDocErroe : 传送出错

(6)icDocEnd : 传送结束

上述6种状态可在SMTP的OnDocInput事件中监控,用于显示传送进程。

三、窗体设计

1、设置窗体Form1的Font.name为宋体,Font.Size为12。

2、在窗体Form1上放置SMTP1、Button1、OpenDialog1、Panel1、Edit1、SMTP1、Bevel1、Label1、Memo1等19个组件。布局参见程序运行时界面(图一)。

3、设置Button3.Enabled为False;设置Memo1.lines为空,Memo1.ScrollBars为ssVertical;设置OpenDialog1.Filter为“文本文件|*.TXT|所有文件|*.*”。

四、运行举例

给ty@163.netE-mail:

1、设置我的E-mail地址为cq98@263.net,SMTP服务器为263.net

收件人E-mail地址为ty@163.net,邮件主题为“问候”,在Memo1备注框输入邮件内容。也可打开一个现有的文本文件放入Memo1备注框。

2、按“建立连接”,在提示框出现“已经建立连接”、“发送邮件”按钮变为允许时,按“发送邮件”按钮即可将E-mail发出,发送结束时,提示框将提示“邮件发送完成”。同时,在程序运行过程时,提示框中可不断提示连接或发送的状态。图一为本程序运行时的界面。

3、退出程序应撤消与SMTP服务器的连接。

五、源程序

unit Unit1;

interface

uses

Windows

Messages

SysUtils

Classes

Graphics

Controls

Forms

Dialogs

ComCtrls

ToolWin

OleCtrls

isp3

StdCtrls

Buttons

ExtCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

SMTP1: TSMTP;

Memo1: TMemo;

OpenDialog1: TOpenDialog;

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

Panel4: TPanel;

Panel5: TPanel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Bevel1: TBevel;

Label1: TLabel;

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure SMTP1StateChanged(Sender: TObject; State: Smallint);

procedure Button1Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure SMTP1DocInput(Sender: TObject; const DocInput: DocInput);

procedure SMTP1Error(Sender: TObject; Number: Smallint;

var Description: WideString; Scode: Integer; const Source

HelpFile: WideString; HelpContext: Integer;

var CancelDisplay: WordBool);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

SMTPerror: Boolean;

implementation

{$R *.DFM}

function GetNoParam: Variant; {缺省的参数}

Var V: Variant;

begin

TVarData(V).VType := varError;

TVarData(V).VError := DISP_E_PARAMNOTFOUND;

GetNoParam := V;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if SMTP1.state=prcConnected then

SMTP1.Quit {撤消连接}

else

if SMTP1.State=prcDisConnected then begin

SMTP1.RemoteHost:=edit2.text; {SMTP服务器}

SMTP1.Connect(GetNoParam

GetNoParam); {建立连接}

Application.ProcessMessages;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

SMTPerror:=False;

while SMTP1.Busy do Application.ProcessMessages;

with SMTP1 do begin

DocInput.Headers.Clear; {邮件头信息}

DocInput.Headers.Add('From'

edit1.Text); {发件人地址}

DocInput.Headers.Add('To'

edit3.Text); {收件人地址}

if edit4.Text<>'' then

DocInput.Headers.Add('CC'

edit4.Text); {抄送地址}

DocInput.Headers.Add('Subject'

edit5.Text); {邮件主题}

DocInput.Headers.Add('X-mailer'

'MyMailer [Cao ZuQuan HBZJ]'); {发送软件名称}

DocInput.Headers.Add('Message-Id'

Format('%s %s %s'

[Application.Title

DateTimeToStr(Now)

edit1.Text])); {邮件标识、文件格式和字符集}

DocInput.Headers.Add('Content-Type'

'text/plain; charset="GB2312"');

SendDoc(GetNoParam

DocInput.Headers

Memo1.Text

''

''); {发送邮件}

end;

end;

procedure TForm1.SMTP1StateChanged(Sender: TObject; State: Smallint);

begin

case State of

prcConnecting:

Label1.Caption:='正在连接'+SMTP1.RemoteHost+'...';

prcResolvingHost:

Label1.Caption:='解析服务器地址...';

prcHostResolved:

Label1.Caption:='服务器地址解析完成';

prcConnected:

begin

Label1.Caption:='已经建立连接';

Button2.Caption:='撤消连接';

end;

prcDisconnecting:

Label1.Caption:= '正在撤消连接...';

prcDisconnected:

begin

Label1.Caption:= '已经撤消连接';

Button2.Caption := '建立连接';

end;

end;

Button3.Enabled:= state=prcConnected;

end;

procedure TForm1.SMTP1DocInput(Sender: TObject;

const DocInput: DocInput);

begin

case DocInput.State of

icDocBegin:

Label1.Caption:= '邮件初始化...';

icDocHeaders:

Label1.Caption:= '发送邮件头信息...';

icDocData:

Label1.Caption:= '发送邮件内容...';

icDocEnd:

if SMTPError then

Label1.Caption:= '发送出错!!!'

else

Label1.Caption:= '邮件发送完成!';

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin {打开一个文本文件,将其内容作为邮件正文}

if Opendialog1.Execute then begin

Memo1.Lines.Clear;

Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

end;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin {退出系统}

if SMTP1.state=prcConnected then SMTP1.Quit;

Close;

end;

procedure TForm1.SMTP1Error(Sender: TObject; Number: Smallint;

var Description: WideString; Scode: Integer; const Source

HelpFile: WideString; HelpContext: Integer; var CancelDisplay: WordBool);

begin {当发送出现错误时触发本事件}

SMTPerror:=True;

end;

end.

销售额达一万亿元 阿里巴巴成世界最大电商 共享软件海外营销策略与实战分析(武汉站)成功落幕 你未必知道的CSS故事:揭开leading的面纱 2013年 影响Web发展的5类API 《Warcraft是怎样炼成的》:多人对战、战争迷雾以及AI HBTC精彩回顾 Hadoop专家分享大数据技术工具与最佳实践 苹果iTV规格泄露:iOS应用开发的新蓝海 Facebook觊觎微信鼻祖WhatsApp,但谈不上收购 首款社交API应用 Facebook Messenger for Firefox正式上线! 共享软件海外营销策略与实战分析(沈阳站)成功落幕 移动之伤:为什么山寨游戏比原创更火? IBM在京发布PureData 主打数据交易处理、操作分析 Intel发布Hadoop免费版 全力拓展生态圈 突出图片搜索:微软向测试人员开放Socl社交搜索 豌豆荚创始人:和巨头竞争,我们拼产品和技术 “互联网女皇”报告解读:智能电视大趋势 苹果扩大其北卡罗莱纳州燃料电池发电场规模 Oracle回收站使用全攻略 微软这次很诚实:IE真的糟透了 Facebook进军短信业务,挑战微信鼻祖WhatsApp 从菜鸟到专家的五步编程语言学习法 亚马逊企业文化:从书贩到云服务巨头的催化剂 明年Google I/O大会日程敲定 或发Android“酸橙派”? 绝境求生,WebOS寄望Android Facebook在移动路上走过的那些弯路 曙光聂华:推动数据融合 CloudStack Committer李学辉:2013年社区将爆发 继续霸权:美众院否决联合国掌控互联网 墨迹天气创始人金犁:巧用细分市场的力量 Windows 8的IE10在浏览器安全测试中独占鳌头 程序员如何做出“不难看”的设计 怎样才能完全彻底的干掉QQ的那个该死的Tencent Explorer EXELE这个函数哪位用过? j2ee:为什么我的ejb老是在编译运行的时候报错“拒绝访问”,那位高手尽快帮忙,小弟不胜感激 不是问题,不的不转行学ASP,发发感慨! 请问谁有符合“c99标准”的编译器 关于盘符的问题,即光盘盘符为何在硬盘盘符之前 冷门问题,会者请多多指教!(发言者都有分) 这样的sql语句怎么写?::::::::::::::::::::>在线等待!! VB--->传真???? 用VB如何收发传真,请各位赐教....(急) 谁知道这个问题的答案? 请问怎样把主框架的两个滚动条去掉?? 那有JSP上手的源代码学习下载。在线等待 知者不难的问题---oracle里有没有像sql server那样生成diagram(表间关系图)的工具? ASP初建网站外,还可以用在哪些方面? 请问序列号在那?? 如何建立与有数据库密码的ACCESS数据库的连接,错误提示:没有可安装的ISAM 指的是什么错误 各位前辈,如果在公司的试用期觉得工资低了,怎么样和公司谈好一点?谢谢! 为什么取不出id字段值! 如何讓SELECT刷新本頁時現有的數据不會消失? 请问这是怎么回事? c语言的源代码!哪里有? 如何在正在运行的窗体中实例化一个控件。 关于向文件中写入表格的问题!谢谢! 爽,两天来在VC版得分2205分,现在偶的专家分有3406了,希望明天能达到5000,这样我就有一个星星了 有人能给我详细解释一下GDI位图和DIB位图的区别吗 smilejiangjun(smile将军)请进 打印问题!! 快来啊,哥哥! 请问,怎样将.fox的文件变成.prg程序 各位前辈,如果在公司的试用期觉得工资低了,怎么样和公司谈好一点?谢谢! 在安装好的机器中提取声显卡驱动吗? 大家有没有兴趣在北京举办一次聚会,大家探讨Java技术? 数据库中的某个字段的数据中包含&nbsp; ,当把该字段绑定到dropdownlist后,&nbsp; 就显示不出来了.? vb怎么处理导出的历史文件 用户控件问题?急、急、急??? 原文:文字接龙---喜欢玩的请接下去!(转) CInternetSession.OpenURL()打开这个网面,只能得到93字节,怎么处理??? 求救:如何低级格式化硬盘,用什么dos命令? delphi+mapx的问题,求救! 读取数据库怎么这么慢?是不是我的方法不正确? form提交数据后,另一页取值为空?200分相送!! 关于windows.net server的安装 打印问题!!(50) 如何编程获得win2000本机的MAC地址?不用Netbios的方法阿,谢谢 讨论一下,对于个人来讲计算机可以帮助我们做什么? 谁有WS-FTP pro 7.5的注册码! 怎样改变MENU的字体? 请问有谁愿意转让《Object-Oriented Software Engineering: A Use Case Driven Approach》一书 讨论一下,对于个人来讲计算机可以帮助我们做什么? 谁用C++ BUilder写过类似sql 语句生成器的东西。 有谁知道 NetBoy 3.0.1 的序列号?第一个答对者20分全给!本人说话绝对算数。 配电系统图上Pe=132.5kw ,Kx=0.7,Pjs=92.8,ljs=175.3 怎样计算的 在三相四线制中,当三相负载不平衡时,三相电压数值相等,但中线电流不为零.错误在三相四线制中,当三相负载不平衡时,三相电压数值相等,但中线电流不为零.错误 ,错在哪里了?另外中线和中 人体细胞分化成上皮细胞,上皮细胞是否会发生分裂体细胞不是会发生有丝分裂么,怎么答案说高度分化的细胞不能分化? 求:电阻、电容、电感各大生产厂家排名,越详细越好,顶级品牌有哪些? 摩托车 发动机的工作原理(详细说明) 是什么决定了人体上皮细胞和肌肉细胞的不同特性 请教电容,电阻,电感,的作用,电阻与电感是一样吗,不是有什么区别本人初学电子,想知道那三样怎么用,怎么测好坏,尽量说的简单易懂,谢谢,请大家重点讲下电感,它其中的变化原理也讲清楚, 如图,CD为半圆的直径,CD=4cm,弦AB//于CD, 人体,各种细胞,如肌细胞、骨细胞、成骨细胞、肌腱细胞、上皮细胞、破骨细胞、神经细胞等,这句话正确吗人体各种细胞:如肌细胞、骨细胞、成骨细胞、肌腱细胞、血细胞、上皮细胞、破 Pe=60kW Kx=0.95 Pjs=57kW COS%%c=0.9 Ijs=96. 变压器的工作原理是什么呀?请详细说明,希望能把用到的原理说明.因为可能有的我没有学过详细讲述工作原理 如能量之间是如何转化的?```````` 甲乙两个自然数的乘积比甲的平方小2007,那么满足上述条件的自然数有几组?最好有算式,谢谢 电施图中Pe=96.0KW,Pjs=76.8KW,Ijs=137.5A,cosΦ=0.85,Kx=0. 为什么人有嘴巴? 谁用量子物理学解释下宇宙大爆炸理论 一道高中物理题,求问我过程中哪步做错了?某商场安装了一台倾角为30度的自动扶梯,该扶梯在电压为380V的某商场安装了一台倾角为30度的自动扶梯,该扶梯在电压为380V的电动机带动下以0.4m/s的 什么时候人有2个嘴巴?如题 终末分化细胞中含有线粒体吗?比如人的成熟红细胞,根尖细胞,肌肉细胞,还有神经细胞. 某商场安装上一台倾角为30度的自动扶梯,改扶梯在电压为380V的电动机带动下以0.4米每秒的恒定速率向斜上方动,电动机的最大输出功率为4.9KW,不载人是测得电动机中的电流为5A,若载人时扶梯 男人用嘴巴添女人下面会怀孕不? 人类B细胞分化成熟的场所是( ) A.胸腺;B.骨髓; C.淋巴结;D.脾脏;E.法氏囊 人在倾斜角为30°的自动扶梯上以恒定速度随扶梯斜向上运动,电动机对人的功率是多少?人质量m,斜向上速度v.急!!!在线等,扶梯给人重力势能,给人动能吗? 这时存在摩擦力吗?如果存 隔离开关的爬电距离是如何定义的? 抗体能作用于植物吗为什么 某商场安装了一台倾角为30度的自动扶梯,该扶梯在电压为380V的电动机带动下以0.4m/s的恒定速率向斜上方移动,电动机的最大 问题补充:输出功率为4.9kW.不载人时测得电动机中的电流为5A,若载 如何用惠更斯原理解释波反射折射惠更斯原理 到底起什么作用 ,我想知道 植物抗体的应用有哪些? 帮忙介绍质量比较好的贴片电阻电容的牌子最好能提供价格,主要有0805 0603 是4/3你说4/3 我给你最佳答案 请问抗原抗体反应中"中和作用"的概念? 贴片电阻,电容哪个品牌好?贴片电阻厚生和利智哪个好一些?贴片电容三星,国巨哪个稍好些? 下列有关细胞分裂的叙述,错误的是A细胞分裂产生的两个新细胞的形态结构相似B细胞分裂产生的新细胞的染色体数目与原细胞相同C细胞分裂可以使多细胞生物增加细胞数量D细胞分裂后新细 宇宙大爆炸的几个问题1,所有的星体都在以相同的速度远离地球,那么是不是说地球就是宇宙的中心?2,星球都在加速远离地球,那么他们的动能增量从那来的?3,宇宙的每一寸空间都在膨胀,那么, 贴片电阻电容都有哪些品牌的啊?分别美国,日本,台湾,和国产的都有哪些啊?急用, 某单位盖一座楼房,如果由建筑一队施工,那么180天就可以盖成,如果由建筑一队,二队同时施工,那么30天能完成工程总量的十分之三,现若由二队单独施工,则需要多少天才能盖成? 关于宇宙大爆炸的问题这个问题困扰我很久了:如果发生大爆炸物质的逃逸速度是多少?根据爱因斯坦的相对论,任何物质的速度不会超过光速,所以逃逸的物质的速度是小于等于光速的,但是黑 贴片电容,电阻怎么认 某单位盖一座楼房,如果由建筑一队施工,那么180天就可盖成,如果由建筑一队,二队同时施工,那么3天能完成工程总量的3/10,现若由二队单独施工,则需要多少天才能盖成? 关于理论的几点疑问?首先,大家都知道目前对天文学来说,宇宙的起源是由一个质量无限小而密度无限大的点(这个点叫奇点)爆炸而形成的,那么问题来了:1,宇宙是否只是由一个点发展起来的,或 在一个周长为50.24cm的圆内画一个最大的长方形,这个正方形的面积是( )平方厘米. 某单位盖一座楼房,建筑一队施工,预计一百八十天盖成,为了早日完成,由建筑一队、两对同时收工,一百天盖成了,问:由建筑二队独立施工,要多少天才能完成?列方程 关于“宇宙大爆炸”理论的疑问?据科学家说,宇宙原先是个密度很大的大火球,后来发生爆炸,导致宇宙不断的膨胀,那么请问:宇宙初期(大火球)的周围是什么物质呢?它周围有空间吗? 在周长24CM的正方形里面画一个最大的圆,这个圆的面积是( ) 甲数有7个约数,乙数有12个约数,甲乙两数的最小公倍数是1728,甲乙两数各是几 长江三峡大坝上下游水位最高可达113m,上游的船要在船闸中经过5个闸室使船体逐渐降低,每个闸室水位变化二十多米,因而三峡船闸的闸门非常大.其首级人字闸门每扇高39.5m,宽20.2m.倘若门外的 一个圆扩大后,面积比原来多了8倍,周长比原来多50.24cm,这个圆原来是( ).不知道它求什么. 功率因数(PF)是指的什么? 肌细胞是高度分化的细胞我知道,但不是说高度分化的细胞仍有细胞全能性的潜能吗?肌细胞在人体中显然是不能够再分化的了,但离体即体外培养,在适宜条件下,都不能表现出细胞全能性吗? 三相不平衡度应该如何计算? 功率因数越大,总电流越……?当cos&=1时,总电流为……?这里的功率因数指的是电阻的,&指的是功率因数角 为什么皮肤细胞比肌肉细胞分解得快? 望字组词再用词造句 5个 急望字组词再用词造句 5个 急 下列有关细胞分裂和细胞分化的叙述,错误的是A.细胞分裂产生新细胞的形态结构相似B.细胞分裂产生新细胞的染色体数目不变C.细胞分化可以形成不同的组织D.细胞分化可以导致细胞中的遗传 4x的平方-9y的平方 分解因式 下列说法中,正确的是()a 近似数1.70和1.7的精确度是相同的 b 近似数六百和近似数600的精确度是相同的 c 近似数35.0是精确到个位的数,它的有效数字是3和5两个数 d 近似数35.0是精确到十分位 下列关于细胞分裂的叙述中,错误的是()A细胞分裂的结果使细胞数目增加B细胞分裂时不受外界条件的限制C细胞分裂时,染色体和细胞质都要平均分配到新细胞中去D细胞分裂开始时染色体位 一个六棱柱模型,他的底面边长都是5厘米,侧棱长4厘米.那这个六棱柱的所有侧面面积之和是多少 一个游泳池长50米,宽2米,如果每小时放入200立方米的水,多长时间能达到1.8米 会讲的最好 还要有单位的 0.125的2010次幂乘以8的2009次幂 在抵抗乙型肝炎病毒感染的过程中,发挥主要作用的物质是抗原还是抗体?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘