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

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.

移动Web应用UI框架大比拼:Ionic vs. Famo.us vs. F7 vs. OnsenUI 面包旅行CTO薛亮:做旅游与社交有机结合的先行者 盘点开发者最喜爱的Swift技巧 2017年,开发者还能从移动广告中收获什么? 《近匠》茄子快传,让设备更好地连接 面向移动应用程序的DevOps五大挑战和十个最佳实践 Ruby 2.2.0发布,支持回收Symbol类型对象 听UnitedStack、IBM、HP专家如何谈“OpenStack 存储”技术 专访POWER 8编程挑战赛选手孙冬冬:从C语言到人工智能、深度学习的技术演变 盘点2014:十家最酷的大数据创业公司 盘点2014:最受关注的十大云服务创业公司 基于Kubernetes构建Docker集群管理详解 漫画:编程语言学习曲线 彩云天气: 328万元大奖背后的故事 iOS开发的22个奇谲巧技 谁是最受欢迎IT企业?技术、薪酬、发展空间、创新能力大评比 Jolt Awards 2015最佳编程工具奖榜单揭晓,Cloud9 IDE众望所归! 展望2015:数据中心行业的十大预测 亚信CTO金亚东:传统企业向产业互联网转型的两条路径 微信评论功能开启将成净土还是地狱 如何定位Android NDK开发中遇到的错误 流行从这里开始,MDCC 2014十大人气产品榜单揭晓! 专访POWER 8编程挑战赛选手唐刚:大数据计算永远是主角 微信公众号认证命名松绑,您怎么看? LambdaNet:纯Haskell实现的人工神经网络库 专注模式识别,易道博识为海量信息输入提供便捷之门 【问底】Michael G. Noll:整合Kafka到Spark Streaming——代码示例和挑战 2014年手游和社交游戏行业重要趋势解读 腾讯副总裁罗道锋:共建全国最大安全云库 5分钟内数据精准共享 Connected Cycle 一举两得的智能自行车踏板 CES可穿戴产品前瞻:汽车厂商入局智能手表领域 JPG图片怎么能实现部分透明? 如何用VB.net编写控件 关于ASP中对文本文件的skip(n)操作到底怎么做 关于SQL的菜鸟问题 大家现在用什么软件管理源代码啊。60分相送。 今年是考C 还是C++啊? 怎样判断一个线程已结束 我用new新建了若干个基类是cwnd的窗体cmywnd,然后想在每个窗体内定时让它们自己消失,我应该用什么函数?是destroywindow吗?最后还用不 vs.net 2003 中文版 的帮助MSDN是不是有问题? 清问这个SQL有什么错,还是FB1。0不支持? 是我的usb口的问题吗?? 怪事 急 路径绝对正确,为什么服务器只能下载rar 不能下载EXE 文件 已知,f(x)=arctanx,其二导f''(x)=(-2x)/(1+x*x)^2,f''(0)=0,试: 一个有趣的问题,请大家看一个小程序,来者有分。 这个写者优先是不是有问题????麻烦看一下,小弟实在看不出错在哪里 请问有没有办法得到[系统托盘]上其它程序的所显示的Icon?? 已知,十六进制(34.6)16=(28.75)10(十进制) 高手推荐几个Palm开发的网站?最好有源代码! 请教一个问题 触发器(加密)内容可以查看吗 怪,文件路径绝对正确,EXE文件不能下载,其它格式正常。 在编写的用户控件中公开所引用控件的事件怎么实现啊 这是我的usb口的问题吗? 考程序员前想先考全国三级,请问三级种哪个科目考C编程?何时报名? 调用DLL时候出现Bad Dll calling convention错误,为什么?代码如下 如何建立一个小数据库? 我想问下,网络技术到底是指什么??? 为什么会出现这个问题呢??急救??? 在不同操作系统出现不能正常运行的问题,和默认字体语系乱码问题 C# 静态类成员 新手请求各位前辈帮助 如何查询我连接到哪个数据库? 哭着请求帮助。。。。。页面显示问题!!在线等着 网络技术到底是指什么???? 我想在<<三国九>>里输入正确的中文,有法子么? 能帮我改改么? 紧急求助,请高手支招 请问在JTABLE中如何将某几行设置成可以被选择的,其他几行设置成不能被选中的? 请问怎样修改SDI框架的标题及去掉最大化按钮??? 在自定义的用户控件上公开引用windows控件的事件怎么做啊!!谢谢 2003中为什么IDE设备只能用PIO模式? 在FAQ里见到这样一句,不明白什么意思 怎么我用vc 的 odbc 做数据库时,工程名为try ,在工程工作区的“class view”面板里没有tryview类的? 不能使用xmldocfile() 文档对象的问题 关于键盘纪录,高手 如何使用IPAddress控件? 初学者问:怎么用UpdateAllViews()? 无法创建asp.net应用程序 大家帮帮我吧,我都快崩溃了 中文乱码的问题 谁做过CIK细胞治疗,请谈谈效果 毛泽东诗词名句(不少于10句) 怎么辨别银圆真假 把小动物的尸体埋进花园或菜地的土里,过一段时间不见了.请分析原故是什么?\ 各猜一句毛泽东诗词武汉长江的桥建成( )海陆空喜庆( ) 早就想当飞行员()铁骑不能追穷寇()一尘不染()霜叶红于二月花() 怎么样用万能表量在工作下发光二极管的电流是多少 两对基因独立遗传,TtRr与ttRr杂交后代的基因型和表现型的种类分为几种? 一条火线什么能认灯泡亮? 七年级下册地理,南极冰盖最高点在南极点的 方. 无脊椎动物的尸体埋在土中会消失的原因? vlv22 185平方 150平方 120平方 95平方 70平方 50平方 电缆外径大概是多少穿管需要个外径尺寸 将“大洲和大洋”这节内容的内在联系呈现出来 TTRr和Ttrr与TTrr和TtRr产生的后代有什么不同基因型和表现型 有葫芦的神仙? 请教一道数学题,望高手详解三角形ABC中,D是BC边上的中点,BC=8,AC=5,AD=3求△ABC形状 例2.已知高秆感病(Ttrr)与高秆抗病(TtRr)的个体杂交,两对基因独立遗传时,所生后代的基因型及表现型种类分别为A.4,4 B.6,4 C.4,6 D.9,4 神仙道葫芦里都有多少丹药啊 皇上不急,太监急啥?用英语怎么说? F1基因型比为TTRR:TtRR:TTRr:TtRr=1:2:2:4,与ttrr杂交,F2基因型比例为 找一棵大树,是10.07米的,计算树干横截面的直径是多少? 单摆 简谐振动 急救当单摆摆角不大时,什么力构成使单摆做简谐振动的恢复力呢?请站在教师的角度解释这个问题,不懂的或者转帖者勿扰, 运用经济常识知识,从政府与企业两个角度说明怎样做才能使我国中小企业实现又好又快发展?(政治考试要...运用经济常识知识,从政府与企业两个角度说明怎样做才能使我国中小企业实现又 为什么电路中有一处短路,而其他正常的用电器也不能正常工作 HA1392接成BTL有多大功率 什么店铺可以锯木板我想锯一些木板,长61厘米,宽10厘米共4块,然后长65厘米,宽5厘米的共8块,像这样人家会不会帮我锯啊,还有,在什么店铺可以锯啊,大概多少钱啊,我只是想做一个桌子的架而已, 升旗台在天安门的什么位置 猜鲁迅著作:来回度步 木板怎样锯直 为什么在电路中一条线短路了,所有的用电器都不会工作 望有详解有A,B两地,甲乙从A地出发,丙从B地出发,甲到B地需t甲,乙到B地需t乙,乙丙相遇需t甲/p,甲丙相遇需t乙/q,求丙到地所需时间对不起,是丙到A地所需时间 有一个20米的木板,锯4米一块.要锯多少次?谁来帮我解决下. 描写升旗台的句子 用长为l的木条围成上半部分是半圆下半部分是矩形的窗框,中间有两根横档,要是透光性最好,应如何设计?本人不会弄图,请各路英雄谅解!我满意的话,横档要木头! a-2大于等于-2,a+2小于等于3,为什么要加等号, 局部短路为什么用电器不能工作,电流还是正常工作时的电流吗? y=|x+2|+|2x-1| 写成分段函数,画出图像,求直域!不理解 绝对值的变号,我知道要分成3段 但是X的范围 为什么取这范围 无法理解 高中数学:为什么等号成立? 根据相对论,光对于任何惯性系的速度都是c.如果一个惯性系的速度也是c,那么光对于它的速度是多少? 和摩擦力有关如图所示,人重600N,木块A重400N,人与A,A与地面的动摩擦因数均为0.2,现人用水平力拉绳,使他与木块一起向右作匀速直线运动,运动摩擦不计,求(1)人脚对A的摩擦力的方向和大小图 高中数学中区间等号的取舍 从相对论观点,为什么惯性系速度越快,其内时间相对外部越快 一块地有2.5公顷,用2台同样的抽水机浇水,要5小时,平均每台抽水机每小时可以浇地多少公顷?今天就要, 使指针停在红色和黄色区域的可能性都是三分之一用空白的圆形纸片做转盘,按要求涂色 根据狭义相对论,当一惯性系K'速度接近C时,K中物体相对于K'的时空坐标都发生了变化,那么我们能不能认为K'� 摩擦力和什么有关 有一个成语图为一道门和三只喜鹊,是什么成语?第一个字是门 有一块长30厘米.宽25厘米的长方体铁皮,在四个角上分别剪去面积相等的正方体后,正好折成一个深五厘米的无盖铁盒.求这个铁盒的表面积和容积.单位:(cm)要说清楚为什么这样算? 摩擦力与什么有关 喜鹊()地叫着 从文中可以看出赵普是个怎样的人? 摩擦力跟什么有关? 求一个表达情侣之间的爱意,还和喜鹊有关的成语,词句呜呜呜呜呜,我要好听一点,字好看一点的. 历史上和赵普类似的人 发电机电压高低和什么有关 1.A={y|y=x²+1,x∈N},B={y|y=a²-2a+2,a∈N*},则A、B的关系是括号()A.A=B B.A真包含于B C.B真包含于A D.B不包含于A2.已知集合A={x|ax=1},集合B={x|x²1=0}且A包含于B,则满 如图,一太阳能热水器受光面的一边AB长为1.5m,∠ACB=90°,倾斜角∠ABC=30°,连杆CD经过AB的中点D求支架AC,连杆CD的长. 语音声控灯的原理是什么? 从经济生活角度分析如何改变当前房价居高不下的状况谢谢了, 毛泽东诗词精选10句要精选的,好的加分 已知,如图所示,在△ABC中,∠ACB=90度,CD⊥AB,垂足为D,若∠B=30度,CD=6,求AB的长请用勾股定理来解答(初二的) 维也纳出新措治理粉尘污染美国长岛一小学生在校内玩胡椒喷雾致多美拒评是否曾监听默克尔手机 新自贸协新加坡一卡车为避前方车祸急刹车侧翻压美国疑监听默克尔电话 德国外长召见美日本6名女性涉嫌在网络上上传猥亵视频英媒:中国持续30年“英语热”降温德国每年屠宰5800万头猪 养猪业被中国游客剧增 美华纳兄弟影城配备中文德防长批评美国监控传闻 称欧美关系将日媒:2012年日本农业收入过半得益美国疑监听默克尔电话 德国外长召见美美国11岁男孩持枪入校遭拘捕 面临谋民调显示美民众对奥巴马医改法支持率略象海豹泥地里打滚 身沾企鹅羽毛似穿新中国记协就新快报记者被拘事件发表声明日拟发布夺岛演习视频 称向国际澄清领述评:日本“网络争岛”惹争议 频繁出王毅将访问法国、意大利和圣马力诺英设计师推“鸵鸟枕” 补眠神器助轻松美国公立大学学杂费上涨3% 涨幅30老水利人工作的最后一天:把工作做圆满驻巴塞罗那总领事屈生武出席文成同乡会团伙三人冒充\"神医\"以消灾为名诈驻丹麦大使刘碧伟会见丹中商业协会主席中国驻法国使馆临时代办夫人、使馆阳光驻安提瓜和巴布达大使任共平拜会莱克塔老人扫马路被撞自称没有亲人 医院不问中国买家纽约曼哈顿炒房 360万买入极度省电的电子墨水数字挂钟印度列车失火9人丧生公务员考试9日可申请调剂 调剂人员不云南香格里拉欲开展人工增雨扑救森林火驻墨西哥大使邱小琪视察领事部并与公众合肥蜀山区:大礼包送给困难户(图)备好金钻做瓷活韩国热议日本自民党新年目标“修宪”与地球村的“韩流”粉丝数达928万名 2014年 美国经济能否实现突破?《我是歌手2》热播 邓紫棋爆红被称“广东今年拟建设1000家全省示范学校大同大学发生32例麻疹病例 疫情已得
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘