用idmessage提交邮件问题

suns02 2004-08-10 03:10:24
我在用idmessage时,出现第一次提交时邮件没有内容,第二次提交时邮件内容为第一次提交的内容,以此类推,请高手看一下是什么问题.
idmessage1.NoDecode := False;
idmessage1.NoEncode := False;
idmessage1.ContentType := 'multipart/mixed';
idmessage1.Encoding := meMIME;
idmessage1.From.Address:=;
idmessage1.From.Name:=;
idmessage1.Recipients.EMailAddresses:=;
idsmtp1.Host:='smtp.163.com';
idsmtp1.Username:=;
idsmtp1.Password:=;

idmessage1.Subject:='用订单提交';
IdHTML := TIdText.Create(idmessage1.MessageParts);
IdHTML.ContentType := 'text/html; charset=GB2312';
IdHTML.ContentTransfer := '7bit';
IdHTML.Body.Add(memo1.text);

idsmtp1.AuthenticationType:=atlogin;

try
try
idSMTP1.Connect();
idSMTP1.Send(idmessage1);
showmessage('订单提交及发送邮件成功!');
except
showmessage('订单提交及发送邮件失败!');
end;
finally
if idSMTP1.Connected then
idSMTP1.Disconnect;
end;
...全文
125 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
suns02 2004-08-10
  • 打赏
  • 举报
回复
是哪有问题啊?我用Idhtml不知道是什么问题,按道理我第二次发送时idhtml重新建立了,可是内容还有第一次发的,而第一次发的就没有内容!
princesd 2004-08-10
  • 打赏
  • 举报
回复
看看下面的一个例子吧,对你有帮助.注意看Button1Click(Sender: TObject)那段代码.用一下你就知道你的问题了.

unit smtpprg;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdMessageClient, IdSMTP, IdMessage,IdStackConsts;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit4: TEdit;
Panel1: TPanel;
Edit5: TEdit;
Edit6: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Memo1: TMemo;
Button1: TButton;
IdSMTP1: TIdSMTP;
CheckBox1: TCheckBox;
Memo2: TMemo;
Button2: TButton;
IdMessage1: TIdMessage;
procedure Button1Click(Sender: TObject);
procedure IdSMTP1Connected(Sender: TObject);
procedure IdSMTP1Status(axSender: TObject; const axStatus: TIdStatus;
const asStatusText: String);
procedure IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
procedure IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
procedure IdSMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if checkbox1.Checked then IdSMTP1.AuthenticationType := atLogin
else IdSMTP1.AuthenticationType := atNone;
IdSMTP1.Host:=edit1.Text;
IdSMTP1.Port:=25;
IdSMTP1.UserId:=edit2.Text;
IdSMTP1.Password:=edit3.Text;

IdSMTP1.Connect;
with IdMessage1 do
begin
body.Clear;
Body.Add(memo1.Lines.Text);//内容
From.Text := edit6.Text;
Recipients.EMailAddresses :=edit4.Text;//收件人
Subject:=edit5.Text;//主题

end;
IdSMTP1.Send(IdMessage1);
IdSmtp1.Disconnect;



end;

procedure TForm1.IdSMTP1Connected(Sender: TObject);
begin
memo2.Lines.Add('已经连接到服务器');
//IdMessage1.Body:=memo2.Lines;
end;

procedure TForm1.IdSMTP1Status(axSender: TObject;
const axStatus: TIdStatus; const asStatusText: String);
begin
memo2.Lines.Add(asStatusText);
end;

procedure TForm1.IdSMTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
memo2.Lines.Add(inttostr(AWorkCount));
end;

procedure TForm1.IdSMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);
begin
memo2.Lines.Add(inttostr(AWorkCountMax));
end;

procedure TForm1.IdSMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
Memo2.Lines.Add('end');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
IdSMTP1.Disconnect;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧