全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2490
推到 Plurk!
推到 Facebook!

請問,要如何使用shellexecute直接發信的方法?

尚未結案
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-22 13:51:39 IP:211.76.xxx.xxx 未訂閱
在貴站有找到一些文章是如何使用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-22 14:01:08 IP:61.217.xxx.xxx 未訂閱
引言: 在貴站有找到一些文章是如何使用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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-22 15:08:13 IP:61.217.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-22 16:20:44 IP:202.39.xxx.xxx 未訂閱
這篇也可以參考: http://forum.vclxx.org/topic.php?TOPIC_ID=17826&FORUM_ID=5&CAT_ID=2&Topic_Title=ShellExecute¥l³êOutLook®ɡA¦p¦ó¦P®ɱN*.htm¥á¤J&Forum_Title=Database --- 我擁有信念,我擁有信仰,我相信,當這件事情结束的時候,我將成為更優秀的人。
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-22 17:30:35 IP:61.217.xxx.xxx 未訂閱
使用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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-02 17:48:50 IP:211.76.xxx.xxx 未訂閱
leo2568感謝你的幫忙,可是我測了你的程式後,還是會出現outlook express的畫面,我是希望能直接把信send出去,而不會出現outlook express的畫面
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-05 11:34:16 IP:211.76.xxx.xxx 未訂閱
請問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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-01-05 13:44:38 IP:211.23.xxx.xxx 未訂閱
請教leo2568,你寫的程式所用的NMSmtp元件,delphi7有這個元件嗎?
Elsa-fen
一般會員


發表:9
回覆:16
積分:5
註冊:2003-09-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-01-05 14:46:06 IP:61.221.xxx.xxx 未訂閱
引言: 請教leo2568,你寫的程式所用的NMSmtp元件,delphi7有這個元件嗎?
如果沒錯的話..應該在FastNet裡可以找到..
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-01-07 20:55:43 IP:61.217.xxx.xxx 未訂閱
uses ShellApi
procedure TForm1.Label1Click(Sender: TObject);
begin 
 ShellExecute(GetDesktopWindow(),
                nil,
                pChar('mailto:' 
                TLabel(Sender).Caption),
                nil,
                nil,
                SW_SHOWNORMAL);
end; 
 
 
系統時間:2024-11-24 21:39:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!