請問,要如何使用shellexecute直接發信的方法? |
尚未結案
|
sangya
一般會員 ![]() ![]() 發表:21 回覆:46 積分:13 註冊:2002-04-15 發送簡訊給我 |
在貴站有找到一些文章是如何使用shellexecute來發送mail的
pCh := 'mailto:123@pchome.com.tw?subject=your_subject&body=your_body&file="c:\autoexec.bat"';
ShellExecute(0, 'open', pCh, nil, nil, SW_SHOWNORMAL);
但此法會出現outlook express的視窗,我還有找到其它文章,但為使用
outlook的方法,公司是使用outlook express,請教各位是否有方法
使用shellexecute來直接傳送信件,或是還有其它方法,謝謝.
|
leo2568
中階會員 ![]() ![]() ![]() 發表:54 回覆:124 積分:70 註冊:2003-09-21 發送簡訊給我 |
引言: 在貴站有找到一些文章是如何使用shellexecute來發送mail的 pCh := 'mailto:123@pchome.com.tw?subject=your_subject&body=your_body&file="c:\autoexec.bat"'; ShellExecute(0, 'open', pCh, nil, nil, SW_SHOWNORMAL); 但此法會出現outlook express的視窗,我還有找到其它文章,但為使用 outlook的方法,公司是使用outlook express,請教各位是否有方法 使用shellexecute來直接傳送信件,或是還有其它方法,謝謝. uses ShellApi; procedure TForm1.Button1Click(Sender: TObject); var strEmail, strSubject, strBody, Param: string; begin strEmail := 'user@host.com'; strSubject := 'Your Subject'; strBody := 'Your Message Text'; Param := 'mailto:' + strEmail + '?subject=' + strSubject + '&Body=' + strBody; ShellExecute(Form1.Handle, 'open', PChar(Param), nil, nil, SW_SHOWNORMAL); end;╭╧╮╭╧╮╭╧╮╭╧╮╭╮☆ ║聖│║誕│║快│║樂│ ╰☆╮ ╘∞╛╘∞╛╘∞╛╘∞╛☆╰☆ . ﹒☆‧☆∴.:☆﹒‧∴ ☆..... |
leo2568
中階會員 ![]() ![]() ![]() 發表:54 回覆:124 積分:70 註冊:2003-09-21 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); begin NMSmtp1.Host:=''; //SMTP服務器地址 NMSmtp1.UserID:=''; //你在對應服務器上的注冊用戶名 NMSmtp1.Connect; //与服務器建立連接 NMSmtp1.PostMessage.FromAddress:=Edit1.Text; //發件人的郵件地址 NMSmtp1.PostMessage.Subject:=Edit2.Text; //郵件主題 NMSmtp1.PostMessage.ToAddress.Add(Edit1.Text); //收件人的郵件地址 NMSmtp1.PostMessage.Attachments.AddStrings(ListBox1.Items); //附件 NMSmtp1.PostMessage.Body.Assign(Memo1.Lines); //郵件的正文 NMSmtp1.SendMail; //發送郵件 NMSmtp1.Disconnect; //斷開連接 ShowMessage('發送完畢!'); //發送完時顯示提示信息 end; |
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
leo2568
中階會員 ![]() ![]() ![]() 發表:54 回覆:124 積分:70 註冊:2003-09-21 發送簡訊給我 |
使用MAPI發送E-mail
function TForm1.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.BitBtn1Click(Sender: TObject); var mail: TStringList; begin mail := TStringList.Create; try mail.values['to'] := 'hello.av8d@msa.hinet.net'; mail.values['subject'] := 'Hello'; //主旨 mail.values['body'] := '內文'; mail.values['attachment0'] := 'C:\file.txt'; //附加檔案 sendEMail(Application.Handle, mail); finally mail.Free; end; end;發表人 - leo2568 於 2003/12/22 17:33:05 |
sangya
一般會員 ![]() ![]() 發表:21 回覆:46 積分:13 註冊:2002-04-15 發送簡訊給我 |
|
sangya
一般會員 ![]() ![]() 發表:21 回覆:46 積分:13 註冊:2002-04-15 發送簡訊給我 |
請問leo2568:
NMSmtp1.Host:=''; //SMTP服務器地址
NMSmtp1.UserID:=''; //你在對應服務器上的注冊用戶名
NMSmtp1.Connect; //与服務器建立連接
NMSmtp1.PostMessage.FromAddress:=Edit1.Text; //發件人的郵件地址
NMSmtp1.PostMessage.Subject:=Edit2.Text; //郵件主題
NMSmtp1.PostMessage.ToAddress.Add(Edit1.Text); //收件人的郵件地址
NMSmtp1.PostMessage.Attachments.AddStrings(ListBox1.Items); //附件
NMSmtp1.PostMessage.Body.Assign(Memo1.Lines); //郵件的正文
NMSmtp1.SendMail; //發送郵件
NMSmtp1.Disconnect; //斷開連接
ShowMessage('發送完畢!'); //發送完時顯示提示信息
以上的程式,是用那個元件撰寫的?謝謝
|
sangya
一般會員 ![]() ![]() 發表:21 回覆:46 積分:13 註冊:2002-04-15 發送簡訊給我 |
|
Elsa-fen
一般會員 ![]() ![]() 發表:9 回覆:16 積分:5 註冊:2003-09-25 發送簡訊給我 |
|
leo2568
中階會員 ![]() ![]() ![]() 發表:54 回覆:124 積分:70 註冊:2003-09-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |