ShellExecute 的參數太長, 怎麼辦 ? |
答題得分者是:hagar
|
boson
中階會員 發表:74 回覆:155 積分:85 註冊:2004-07-31 發送簡訊給我 |
我要透過 Outlook Express 寄信, 以下的方法基本上可以啟動 Outlook express, 同時自動填入主題與內容等:
Str1:='mailto:abc@aaa.com.tw?subject=主題&body=內文'; ShellExecute(0,nil,PAnsiChar(Str1),nil,nil,sw_showdefault); 但問題是, 當內文很長, 使 Str1 長度超過 2K 左右時, 命令就無法執行, Outlook Express 不會出現, 這下該怎麼辦 ? |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
改用 parameter 參數
或用 ShellExecuteEx ===================引 用 boson 文 章=================== 我要透過 Outlook Express 寄信, 以下的方法基本上可以啟動 Outlook express, 同時自動填入主題與內容等: Str1:='mailto:abc@aaa.com.tw?subject=主題&body=內文'; ShellExecute(0,nil,PAnsiChar(Str1),nil,nil,sw_showdefault); 但問題是, 當內文很長, 使Str1 長度超過 2K 左右時, 命令就無法執行, Outlook Express 不會出現, 這下該怎麼辦 ? |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
使用 MAPI, 參考底下這篇看看:
<textarea class="delphi" rows="10" cols="60" name="code"> uses MAPI; function SendMailMAPI(const Subject, Body, FileName, SenderName, SenderEMail, RecepientName, RecepientEMail: String): Integer; var message: TMapiMessage; lpSender, lpRecepient: TMapiRecipDesc; FileAttach: TMapiFileDesc; SM: TFNMapiSendMail; MAPIModule: HModule; begin FillChar(message, SizeOf(message), 0); with message do begin if (Subject <> '') then lpszSubject := PChar(Subject); if (Body <> '') then lpszNoteText := PChar(Body); if (SenderEMail<>'') then begin lpSender.ulRecipClass := MAPI_ORIG; if (SenderName='') then lpSender.lpszName := PChar(SenderEMail) else lpSender.lpszName := PChar(SenderName); lpSender.lpszAddress := PChar('SMTP:' SenderEMail); lpSender.ulReserved := 0; lpSender.ulEIDSize := 0; lpSender.lpEntryID := nil; lpOriginator := @lpSender; end; if (RecepientEMail <> '') then begin lpRecepient.ulRecipClass := MAPI_TO; if (RecepientName='') then lpRecepient.lpszName := PChar(RecepientEMail) else lpRecepient.lpszName := PChar(RecepientName); lpRecepient.lpszAddress := PChar('SMTP:' RecepientEMail); lpRecepient.ulReserved := 0; lpRecepient.ulEIDSize := 0; lpRecepient.lpEntryID := nil; nRecipCount := 1; lpRecips := @lpRecepient; end else lpRecips := nil; if (FileName = '') then begin nFileCount := 0; lpFiles := nil; end else begin FillChar(FileAttach, SizeOf(FileAttach), 0); FileAttach.nPosition := Cardinal($FFFFFFFF); FileAttach.lpszPathName := PChar(FileName); nFileCount := 1; lpFiles := @FileAttach; end; end; MAPIModule := LoadLibrary(PChar(MAPIDLL)); if MAPIModule = 0 then Result := -1 else try @SM := GetProcAddress(MAPIModule, 'MAPISendMail'); if @SM <> nil then Result := SM(0, Application.Handle, message, MAPI_DIALOG or MAPI_LOGON_UI, 0) else Result := 1; finally FreeLibrary(MAPIModule); end; if Result <> 0 then MessageDlg('Error sending mail (' IntToStr(Result) ').', mtError, [mbOk], 0) end; </textarea> |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |