rt,thanks.
解决方案 »
- 关于内存地址转换!
- 请高手指教,如何循环赋值:edit[n].text:=str[m];
- 请问怎么登录服务器
- 大侠救命:我把一个线程的public变量付给另一个线程的变量(也是公有变量)就出错了
- 我很苦闷,想看一些大师级的数据库程序源码,因为我只是照Delphi Demo上自己写了一些程序
- 怎么打开DataModule文件?
- 若干年后的 4 月 22 日 , 你还能记得么 ? ......
- 好久没有来DELPHI了,散分
- 如何设置PrintDBGridEh1.AfterGridTexT.Text的字体
- 发现一个不错的站点
- 最后sos,我的treeview生成结点时有错,请帮助修改一下
- 如何判断硬盘上某文件(如;*.txt)是否存在?
type
TAttachAccessArray = array [0..0] of TMapiFileDesc;
PAttachAccessArray = ^TAttachAccessArray;
var
MapiMessage : TMapiMessage;
Receip : TMapiRecipDesc;
Attachments : PAttachAccessArray;
AttachCount : Integer;
iCount : Integer;
FileName : string;
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 iCount := 0 to MaxInt do begin
if Mail.Values['attachment' + IntToStr(iCount)] = '' then Break;
AttachCount := AttachCount + 1;
end; if AttachCount > 0 then begin
GetMem(Attachments,SizeOf(TMapiFileDesc) * AttachCount);
for iCount := 0 to (AttachCount - 1) do begin
FileName := Mail.Values['attachment' + IntToStr(iCount)];
Attachments[iCount].ulReserved := 0;
Attachments[iCount].flFlags := 0;
Attachments[iCount].nPosition := ULONG($FFFFFFFF);
Attachments[iCount].lpszPathName := StrNew(PChar(FileName));
Attachments[iCount].lpszFileName := StrNew(PChar(ExtractFileName(FileName)));
Attachments[iCount].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'])); Result := MapiSendMail(0, Handle, MapiMessage,MAPI_DIALOG*Ord(Handle <> 0) OR MAPI_LOGON_UI OR MAPI_NEW_SESSION, 0); for iCount := 0 to (AttachCount - 1) do begin
strDispose(Attachments[iCount].lpszPathName);
strDispose(Attachments[iCount].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);
end;procedure TForm1.Button1Click(Sender: TObject);
var
mail: TStringList;
begin
mail := TStringList.Create;
mail.Values['to'] := '[email protected]';
mail.Values['subject'] := 'hello';
mail.Values['body'] := 'hello man';
mail.Values['attachment0'] := 'c:\boot.ini';
SendEmail(Application.Handle, mail);
mail.Free;
end;
const
olMailItem = 0;
var
Outlook: OleVariant;
vMailItem: variant;
begin
{try
// Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
}
Outlook := CreateOleObject('Outlook.Application');
vMailItem := Outlook.CreateItem(olMailItem);
vMailItem.Recipients.Add('[email protected]');
vMailItem.Subject := 'test email';
vMailItem.Body := 'This is a test';
//vMailItem.Attachments.Add('C:\temp\sample.txt');
vMailItem.Send; VarClear(Outlook);
end;