内容发布更新时间 : 2024/12/27 0:50:49星期一 下面是文章的全部内容请认真阅读。
网上有许多在DELPHI下实现发送EMAIL的文章,但都写得太烦琐且不直观。
跟着下面的步骤,你会发现发送EMAIL原来如此简单。
首先,打开DELPHI,程序会自动建立一个工程。
点击 “查看”-- “组件列表”,分别输入“TIDSMTP”和“TIDMESSAGE”,把这两个组件添加到窗体,放在你喜欢的地方。
(网上有DELPHI 7.0的汉化补丁,BAIDU一下吧)
然后在窗体上添加两个 BUTTO(按扭),分别命名为“连接服务器”和“发送EMAIL”。
双击“连接服务器”按扭,进入代码编辑拦,在begin语句下输入以下代码:
IdSMTP1.Username := 'metals '; //服务器上的用户名 IdSMTP1.Password := '0236521 '; //服务器上的密码
IdSMTP1.Host := 'mx.eYou.com '; //服务器SMTP地址
IdSMTP1.Port :=25; //服务器端口 IdSMTP1.Connect; //建立连接
注意:以上是eyou.com(免费)邮箱的设置,你也可以去申请一个。然后把 IdSMTP1.Username 和 IdSMTP1.Password 属性改成你的用户名和密码就行了,其他属性不用修改。 如果要使用其他的邮箱,可以到该邮箱的网站上查找相关资料。例如新浪的SMTP地址是:smtp.sina.com.cn。 端口通常设置为 25 。
接下来双击“发送EMAIL”的按扭,在begin语句下输入以下代码:
begin
IdMessage1.Body.Add( ' 邮件正文 ' ); //邮件正文件内容 IdMessage1.From.address := 'metals@eyou.com '; //发件人地址
IdMessage1.Recipients.EMailAddresses := 'metals@eyou.com '; //收件人地址,这里改为你的EMAIL地址 IdMessage1.Subject:= '标题 ' ; //邮件标题
IdMessage1.Priority := mphigh; //优先级,mphigh为最高级。 IdSMTP1.Send(IdMessage1); //发送邮件 end;
OK,到这里就全部完成了,调试通过后先点击“连接服务器”等几秒(因为这需要时间),然后点击“发送EMAIL”按扭,好了,打开你的邮箱看一下,是不是已经收到EMAIL了呢?很简单吧。 控件
smtp: TIdSMTP; MgeSend: TIdMessage; 代码
procedure TForm1.Button1Click(Sender: TObject); begin
SMTP.Host:='smtp.163.com'; smtp.Username:='zhm001x@163.com'; smtp.Password:='paswrd'; smtp.Port:=25; smtp.Connect();
MgeSend.Recipients.EMailAddresses:='zhm001x@qq.com'; MgeSend.From.Text :='zhm001x@163.com'; MgeSend.Subject:='test'; MgeSend.Body.Text:='发邮件测试'; SMTP.Authenticate; Smtp.Send(mgeSend); end; Delphi 6 发送电子邮件,我以前编过,就是用TNMSMTP控件发送成功的。不过很不幸,源程序在最近删了。因为程序在Delphi7里不能通用。 网上的资料应该有用,可能除了一点没讲:发送邮件需要用到“身份验证”。在发送邮件时,需要把用户名、密码,变成BASE64编码,再发送过去验证。TNMSMTP控件没有提供身份验证的部分。 如何加入身份验证? Use 里加入:IdCoder3to4; 在NMSMTP的OnConnect事件中添加代码: var strUserName, strPassword: String; begin
strUserName := Base64Encode('帐号'); //帐号字符串变成Base64编码 strPassword := Base64Encode('密码'); //密码字符串变成Base64编码 nmsmtp1.Transaction('EHLO') ;
nmsmtp1.Transaction('AUTH LOGIN'); //身份验证 nmsmtp1.Transaction(strUserName); nmsmtp1.Transaction(strPassword); end;
至于其它部分,很容易在网上找到。
有兴趣请在网上找到base64编码规则,弄清楚Base64Encode()函数是怎么编码的。如果找不到Base64Encode函数,我把当时自己编码的函数写给你,看看有没有用。
function encodebase64(s:string):string; //上面代码的函数名相应改过来。 const
Tb: String[64] =
('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'); var i,a:integer; temp,temp1:string; begin temp:=''; temp1:=s;
if length(temp1) mod 3<>0 then temp1:=temp1+char(0); for i:=1 to length(temp1) do begin
case (i-1) mod 3 of 0: begin
a:=ord(temp1[i]); a:=a shr 2;