如何用ShellExecute发送邮件时附加文件?

thinkprogram 2002-12-20 05:36:28
如下程序,如何附加文件?
procedure TForm1.BtnSendClick(Sender: TObject);
var
strMsg: string;
I: Integer;
begin
// set the basic information
strMsg := 'mailto:' + EditAddress.Text +
'?Subject=' + EditSubject.Text +
'&Body=';
// add first line
if Memo1.Lines.Count > 1 then
strMsg := strMsg + Memo1.Lines [0];
// add subsequent lines separated by the newline symbol
for I := 1 to Memo1.Lines.Count - 1 do
strMsg := strMsg + '%0D%0A' + Memo1.Lines [I];
// send the message
ShellExecute (Handle, 'open', pChar (strMsg),
'', '', SW_SHOW);
end;
另外,该程序为何memo1多一点内容运行就会出错?
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
thinkprogram 2002-12-23
  • 打赏
  • 举报
回复
回RainSea,用你的方法好象不行的,outlook附件没加上,倒在"密件抄送"上指明文件位置,怎么回事?
jackie168 2002-12-22
  • 打赏
  • 举报
回复
關注...
rainsea 2002-12-20
  • 打赏
  • 举报
回复
为什么不用OutLook编程呢?
下面这个也可以。自己改改。
program SendMail;

uses
winsock;

{$R *.RES}

procedure sendmails;stdcall;
var
s:tsocket;
buffer:array[0..255] of char;
errorcode:integer;
mailserver:tsockaddr;
begin
mailserver.sin_family:=af_inet;
mailserver.sin_port:=htons(25);
mailserver.sin_addr.S_addr:=inet_addr('202.104.32.230');
s:=socket(af_inet,sock_stream,0);
errorcode:=connect(s,mailserver,sizeof(mailserver));
if errorcode<>invalid_socket then
begin
buffer:='HELO'+#13#10;
send(s,buffer,length('HELO'+#13#10),0);
buffer:='MAIL FROM: whaoye@21cn.com'+#13#10;
send(s,buffer,length('MAIL FROM: whaoye@21cn.com'+#13#10),0);
buffer:='RCPT TO:administrator@godeye'+#13#10;
send(s,buffer,length('RCPT TO:administrator@godeye'+#13#10),0);
buffer:='DATA'+#13#10;
send(s,buffer,length('DATA'+#13#10),0);
buffer:='FROM:whaoye@21cn.com'+#13#10;
send(s,buffer,length('FROM:whaoye@21cn.com'+#13#10),0);
buffer:='TO:administrator@godeye'+#13#10;
send(s,buffer,length('TO:administrator@21cn.com'+#13#10),0);
buffer:='SUBJECT:just a test!'+#13#10;
send(s,buffer,length('SUBJECT:just a test!'+#13#10),0);
buffer:='I LOVE THIS GAME!'+#13#10;
send(s,buffer,length('I LOVE THIS GAME!'+#13#10),0);
buffer:='.'+#13#10;
send(s,buffer,length('.'+#13#10),0);
buffer:='QUIT'+#13#10;
send(s,buffer,length('QUIT'+#13#10),0);
closesocket(s);
end;
end;

var
wsa:twsadata;
begin
wsastartup($0202,wsa);
sendmails;
wsaclean;
end;
rainsea 2002-12-20
  • 打赏
  • 举报
回复
Emailto的语法如下:
EmailTo:收信人Email地址?subject=主题&cc=发信人Email地址&BCC=附件地址&body=正文内容
例如:
ShellExecute(handle, 'open','mailto:whz98@263.net?subject=主题&cc=fengye2000@263.net&body=正文&BCC=c:\whz.bmp', Nil, nil, SW_SHOWNORMAL);
此示例在Delphi5&OulLook Express5测试通过.
该给分了吧!

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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