var
SupportMail:string;
begin
SupportMail = 'mailto:[email protected]?subject=[csdn for delphi]';
ShellExecute(0, nil, PChar(SupportMail), nil, nil, SW_SHOWNORMAL);
end;这是最简单的email调用.
但是他不能指定附件和正文.
我是想不但要指定对方email地址而且还要指定附件和正文等等.
望各位大虾指教.
SupportMail:string;
begin
SupportMail = 'mailto:[email protected]?subject=[csdn for delphi]';
ShellExecute(0, nil, PChar(SupportMail), nil, nil, SW_SHOWNORMAL);
end;这是最简单的email调用.
但是他不能指定附件和正文.
我是想不但要指定对方email地址而且还要指定附件和正文等等.
望各位大虾指教.
解决方案 »
- 如何查询数据库中指定生日日期的客户
- 子窗体如何返回参数给主窗体
- 急,帮我改下系统吧
- 在delphi中,怎么样让ADOconnection自动连上SQLSERVER服务器呢?
- 关于Dcomconnection在多网段局域网中的连接问题,在线急等!!!
- 如何实现将全屏游戏切换为窗口型?请多指教!
- Delphi的安装问题:安装之初如何解决:BDE is currently running
- 究竟是操作系统烂,还是DELPHI烂!
- 如何使窗体使终保持在桌面的右上角???
- Help:我的浏览器主页被人改了,而且修改不了,请各位高手指导,送50分
- FastReport打印StringGrid的问题
- 关于email
//(2)"C:\PROGRAM FILES\OUTLOOK EXPRESS\MSIMN.EXE" /eml:%1
//(3)利用Mapi接口
//我只是想看看大家还有什么好的idea而已.结贴。
uses
Mapi;function SendEMail(Handle: THandle; Mail: TStrings): Cardinal;
type
TAttachAccessArray = array [0..0] of TMapiFileDesc;
PAttachAccessArray = ^TAttachAccessArray;
var
MapiMessage: TMapiMessage;
Receip: TMapiRecipDesc;
Attachments: PAttachAccessArray;
AttachCount: Integer;
i1: integer;
FileName: string;
dwRet: Cardinal;
MAPI_Session: Cardinal;
WndList: Pointer;
begin
dwRet := MapiLogon(Handle,
PChar(''),
PChar(''),
MAPI_LOGON_UI or MAPI_NEW_SESSION,
0, @MAPI_Session);if (dwRet <> SUCCESS_SUCCESS) then
begin
MessageBox(Handle,
PChar('Error while trying to send email'),
PChar('Error'),
MB_ICONERROR or MB_OK);
end
else
begin
FillChar(MapiMessage, SizeOf(MapiMessage), #0);
Attachments := nil;
FillChar(Receip, SizeOf(Receip), #0);if Mail.Values['to'] <> '' then
begin
Receip.ulReserved := 0;
Receip.ulRecipClass := MAPI_TO;
Receip.lpszName := StrNew(PChar(Mail.Values['to']));
Receip.lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['to']));
Receip.ulEIDSize := 0;
MapiMessage.nRecipCount := 1;
MapiMessage.lpRecips := @Receip;
end;AttachCount := 0;for i1 := 0 to MaxInt do
begin
if Mail.Values['attachment' + IntToStr(i1)] = '' then
break;
Inc(AttachCount);
end;if AttachCount > 0 then
begin
GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);for i1 := 0 to AttachCount - 1 do
begin
FileName := Mail.Values['attachment' + IntToStr(i1)];
Attachments[i1].ulReserved := 0;
Attachments[i1].flFlags := 0;
Attachments[i1].nPosition := ULONG($FFFFFFFF);
Attachments[i1].lpszPathName := StrNew(PChar(FileName));
Attachments[i1].lpszFileName :=
StrNew(PChar(ExtractFileName(FileName)));
Attachments[i1].lpFileType := nil;
end;
MapiMessage.nFileCount := AttachCount;
MapiMessage.lpFiles := @Attachments^;
end;if Mail.Values['subject'] <> '' then
MapiMessage.lpszSubject := StrNew(PChar(Mail.Values['subject']));
if Mail.Values['body'] <> '' then
MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values['body']));WndList := DisableTaskWindows(0);
try
Result := MapiSendMail(MAPI_Session, Handle,
MapiMessage, MAPI_DIALOG, 0);
finally
EnableTaskWindows( WndList );
end;for i1 := 0 to AttachCount - 1 do
begin
StrDispose(Attachments[i1].lpszPathName);
StrDispose(Attachments[i1].lpszFileName);
end;if Assigned(MapiMessage.lpszSubject) then
StrDispose(MapiMessage.lpszSubject);
if Assigned(MapiMessage.lpszNoteText) then
StrDispose(MapiMessage.lpszNoteText);
if Assigned(Receip.lpszAddress) then
StrDispose(Receip.lpszAddress);
if Assigned(Receip.lpszName) then
StrDispose(Receip.lpszName);
MapiLogOff(MAPI_Session, Handle, 0, 0);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
mail: TStringList;
begin
mail := TStringList.Create;
try
mail.values['to'] := '[email protected]';
mail.values['subject'] := 'Hello';
mail.values['body'] := 'blah';
mail.values['body'] := 'blah';
mail.values['attachment0'] := 'C:\Test.txt';
// mail.values['attachment1']:='C:\Test2.txt';
sendEMail(Application.Handle, mail);
finally
mail.Free;
end;
end;