在delphi中如何自动发送Email(100分)

  • 主题发起人 主题发起人 lmxdoudou
  • 开始时间 开始时间
L

lmxdoudou

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥大姐好
我想在软件启动的界面里面加入一个程序 ,自动发送Email给我的163邮箱 ,主题和内容都是固定的,最好给我一个例子 ,谢谢。
 
环境:delphi6
所用控件:TNMSMTP


unit GetKey;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Psock, NMsmtp;

type
TfrmGetKey = class(TForm)
edtXLH: TEdit;
Label1: TLabel;
edtZCH: TEdit;
Label2: TLabel;
btnKey: TBitBtn;
btnClose: TBitBtn;
Label3: TLabel;
NMSMTP1: TNMSMTP;
Memo1: TMemo;
procedure btnCloseClick(Sender: TObject);
procedure btnKeyClick(Sender: TObject);
procedure NMSMTP1Connect(Sender: TObject);
private
function SendEmail: Boolean;
function EncodeBase64(Source: string): string;
public
{ Public declarations }
end;
const

BaseTable:string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var
frmGetKey: TfrmGetKey;

implementation

{$R *.dfm}

procedure TfrmGetKey.btnCloseClick(Sender: TObject);
begin
self.Close;
end;


function TfrmGetKey.SendEmail: Boolean;
var
mText: string;
begin
mText := 'Product Number: '+trim(edtXLH.Text)+#13#10;
mText := mText + 'Product RegEdit Number£º'+GetKey(trim(edtXLH.Text ))+#13#10;
mText := mText+ 'RegEdit Time: '+datetimetostr(Now);

try
NMSMTP1.Connect;
NMSMTP1.PostMessage.FromAddress := 'yanzhaozhizi@163.com'; //发信地址
NMSMTP1.PostMessage.FromName := '发信人'; //发信人
NMSMTP1.PostMessage.Subject := '主题'; //主题
NMSMTP1.PostMessage.ToAddress.Add('MISSystem@126.com'); //收件人地址
NMSMTP1.PostMessage.ToAddress.Add('bbb@163.com'); //收件人地址
NMSMTP1.PostMessage.Body.Text := (mText);
NMSMTP1.SendMail; //发送
Result := True;
Except
Result := False;
Application.MessageBox('发送失败!');
Exit;
end;
NMSMTP1.Disconnect;
end;

function TfrmGetKey.EncodeBase64(Source: string): string;
var
Times,LenSrc,i:integer;
x1,x2,x3,x4:char;
xt:byte;
begin
result:='';
LenSrc:=length(Source);
if LenSrc mod 3 =0 then Times:=LenSrc div 3
else Times:=LenSrc div 3 + 1;
for i:=0 to times-1 do
begin
if LenSrc >= (3+i*3) then
begin
x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
xt:=(ord(Source[1+i*3]) shl 4) and 48;
xt:=xt or (ord(Source[2+i*3]) shr 4);
x2:=BaseTable[xt+1];
xt:=(Ord(Source[2+i*3]) shl 2) and 60;
xt:=xt or (ord(Source[3+i*3]) shr 6);
x3:=BaseTable[xt+1];
xt:=(ord(Source[3+i*3]) and 63);
x4:=BaseTable[xt+1];
end
else if LenSrc>=(2+i*3) then
begin
x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
xt:=(ord(Source[1+i*3]) shl 4) and 48;
xt:=xt or (ord(Source[2+i*3]) shr 4);
x2:=BaseTable[xt+1];
xt:=(ord(Source[2+i*3]) shl 2) and 60;
x3:=BaseTable[xt+1];
x4:='=';
end else
begin
x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
xt:=(ord(Source[1+i*3]) shl 4) and 48;
x2:=BaseTable[xt+1];
x3:='=';
x4:='=';
end;
result:=result+x1+x2+x3+x4;
end;
end;

procedure TfrmGetKey.NMSMTP1Connect(Sender: TObject);
begin
//////连接成功,下面用户认证过程
Memo1.lines.Add(nmsmtp1.Status);
if nmsmtp1.ReplyNumber = 250 then
Memo1.lines.Add(nmsmtp1.Transaction('auth login')); //开始认证
if nmsmtp1.ReplyNumber =334 then //返回值为334,让你输入Base64编码后的用户名
Memo1.lines.Add(nmsmtp1.Transaction(EncodeBase64('yanzhaozhizi')));//'YWFhYWE=');//

用户名为(发件箱登录时的用户名)
if nmsmtp1.ReplyNumber =334 then //返回值为334,让你输入Base64编码后的用密码
Memo1.lines.Add(nmsmtp1.Transaction(EncodeBase64('01020304')));//'MTIzNDU2');

//用户密码为(发件箱登录时的密码)
if nmsmtp1.ReplyNumber =235 then
begin
Memo1.lines.Add('successful');
end;
end;
 
你好 TNMSMTP这个控件在delphi7 中那里
我实在找不到
要不直接给我一个例子 这是邮箱 我把分数直接给你
shijuan_lmx@163.com
 
delphi7中是没有此控件,关于delphi7中的发送邮件例子,我暂时没有!不好意思!
 
去这里看看吧,这是我以前帮别人解答的。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3219319
 
来自: coolfishs, 时间: 2005-04-09 3:18:33, ID: 3037324
给你一段我自己写的代码,超精简! 保证100%可以发EMAIL`````
procedure TForm1.Button1Click(Sender: TObject);
begin
try
IdSMTP1.AuthenticationType:=atLogin; //设置登陆类型
IdSMTP1.Username:=Edit1.Text; //设置登陆帐号
IdSMTP1.Password:=Edit2.Text; //设置登陆密码
IdSMTP1.Host:=Edit3.Text; //设置SMTP地址
IdSMTP1.Port:=strtoint(Edit4.Text); //设置端口 必须转化为整型
IdSMTP1.Connect; //开始连接服务器
except
Showmessage('连接失败,请重试!');
Exit; //连接失败 的话 退出该执行过程
end;
IdMessage1.Body.Clear; //先清空上次发送的内容
IdMessage1.Subject:=Edit5.Text; //设置邮件发送的标题
IdMessage1.Body.Assign(Memo1.Lines); //设置邮件发送的主体
IdMessage1.From.Address:=Edit6.Text; //设置邮件的发件人 也就是说该邮件来自什么地方
IdMessage1.Recipients.EMailAddresses:=Edit7.Text; //收件人的地址
try
idSMTP1.Send(IdMessage1);
Showmessage('邮件发送成功!');
except
Showmessage('邮件发送失败!');
end;

end;
 
IdSMTP1 这个控件在delphi 7里面在那里?
谢谢
 
木马[?]
如果你要做软件反馈还不如自己写一个asp
直接提交信息到数据库
用e-mail用户都会认为是木马
 
IdSMTP1是indy控件包里的一个控件啊。
 
端口是多少啊。 163邮箱。
是8080 还是80呀。
 
后退
顶部