正如大家所知
ShellExecute(Handle, 'open','mailto:收件人@bbb?cc=抄送人@yyy&bcc=密件抄送人@ddd&subject=邮件标题&body=邮件正文',nil, nil, SW_NORMAL);
这种方式可以激活outlook express 弹出创建新邮件的窗口,而且可以将收件人,抄送人和密件抄送人以及邮件标题和邮件正文都自动填入到新邮件窗口中。但问题我这里出现了这样的情况,将此函数单独放到一个新建工程的一个窗体的按钮单击事件里执行没问题,而同样的代码加到一个稍微复杂点的工程的某一个子窗体的一个按钮中执行便提示错误信息为:win32 error code:2 系统找不到指定文件。
请问这是什么原因呢?于是采用下面的方法来激活outlook express,ShellExecute(Handle,'Open',pChar('D:\Program Files\Outlook Express\msimn.exe'),nil,nil,SW_SHOWNORMAL);大家可以想想,当你右键一个文件->发送到->邮件接受者 的时候都会自动打开系统默认的邮件发送软件并将你鼠标选中的文件自动添加到附件内,而且可以将文件名添到邮件标题中。这说明邮件发送软件包括 outlook express还是支持命令行参数方式来发送软件的,但我不了解outlook express的命令行参数啊,还是不能将收件人,抄送人和密件抄送人以及邮件标题和邮件正文信息都自动填入到新邮件窗口中。谁知道能帮帮我吗?另外,补充说明一下我的需求:在程序中打开outlook express,并将程序中传递的 收件人,抄送人和密件抄送人以及邮件标题和邮件正文信息都自动填入到新邮件窗口中。暂时还没有要求加附件,但是早晚的需求,我已经郁闷了一段时间了,谁有时间帮帮我啊,谢谢了
ShellExecute(Handle, 'open','mailto:收件人@bbb?cc=抄送人@yyy&bcc=密件抄送人@ddd&subject=邮件标题&body=邮件正文',nil, nil, SW_NORMAL);
这种方式可以激活outlook express 弹出创建新邮件的窗口,而且可以将收件人,抄送人和密件抄送人以及邮件标题和邮件正文都自动填入到新邮件窗口中。但问题我这里出现了这样的情况,将此函数单独放到一个新建工程的一个窗体的按钮单击事件里执行没问题,而同样的代码加到一个稍微复杂点的工程的某一个子窗体的一个按钮中执行便提示错误信息为:win32 error code:2 系统找不到指定文件。
请问这是什么原因呢?于是采用下面的方法来激活outlook express,ShellExecute(Handle,'Open',pChar('D:\Program Files\Outlook Express\msimn.exe'),nil,nil,SW_SHOWNORMAL);大家可以想想,当你右键一个文件->发送到->邮件接受者 的时候都会自动打开系统默认的邮件发送软件并将你鼠标选中的文件自动添加到附件内,而且可以将文件名添到邮件标题中。这说明邮件发送软件包括 outlook express还是支持命令行参数方式来发送软件的,但我不了解outlook express的命令行参数啊,还是不能将收件人,抄送人和密件抄送人以及邮件标题和邮件正文信息都自动填入到新邮件窗口中。谁知道能帮帮我吗?另外,补充说明一下我的需求:在程序中打开outlook express,并将程序中传递的 收件人,抄送人和密件抄送人以及邮件标题和邮件正文信息都自动填入到新邮件窗口中。暂时还没有要求加附件,但是早晚的需求,我已经郁闷了一段时间了,谁有时间帮帮我啊,谢谢了
解决方案 »
- delphi控件IdHTTPProxyServer,做代理服务器,如何替换网页中的内容
- CloneCursor 和多线程的问题
- 我无聊了,咋办?
- 何处有WinMessenger v2.1的原码下载
- 请问以下有什么好的实现方法,我有好多查询都一样,但是设及参数太多,有不知道怎么定义过程或函
- 刚学delphi,如何尽快掌握delphi的类的属性和方法的具体性质?
- sendmessge问题。怎么控制按钮单击事件而不使该按钮在活动区域。
- 再问:建个索引,用Table.AddIndex()方法!谁会?需上机通过验证代码!
- 关于Delphi线程构造函数: 简单问题
- 提问!
- 谁可以举出一些办公自动化系统(OA)的例子啊
- 时间计算???
void __fastcall TForm_MainForm::ToolButton_SendToClick(TObject *Sender)
{
MapiRecipDesc *OriginatorRecipDesc=new MapiRecipDesc;
MapiRecipDesc *recipientRecipDesc=new MapiRecipDesc;
// MapiFileDesc *FileDesc=new MapiFileDesc;
MapiMessage aMapiMessage; //接收人信息:
recipientRecipDesc->ulReserved=0;
recipientRecipDesc->ulRecipClass=MAPI_TO;
recipientRecipDesc->lpszName=NULL;//"xthmpro_cn";
recipientRecipDesc->lpszAddress="SMTP:[email protected]";//Name or Address can set noly one;
recipientRecipDesc->ulEIDSize=0;
recipientRecipDesc->lpEntryID=NULL;
//发送人信息:
OriginatorRecipDesc->ulReserved=0;
OriginatorRecipDesc->ulRecipClass=MAPI_ORIG;
OriginatorRecipDesc->lpszName=NULL;
OriginatorRecipDesc->lpszAddress="SMTP:[email protected]";//Name or Address can set noly one;
OriginatorRecipDesc->ulEIDSize=0;
OriginatorRecipDesc->lpEntryID=NULL;
//Email内容:
aMapiMessage.ulReserved=0;
aMapiMessage.lpszSubject="Hello!";
aMapiMessage.lpszNoteText="OK!";
aMapiMessage.lpszMessageType=NULL;
aMapiMessage.lpszDateReceived="2002/9/6/ 22:50";
aMapiMessage.lpszConversationID=NULL;
aMapiMessage.flFlags=MAPI_RECEIPT_REQUESTED;
aMapiMessage.lpOriginator=OriginatorRecipDesc;
aMapiMessage.nRecipCount=1;
aMapiMessage.lpRecips=recipientRecipDesc;
aMapiMessage.nFileCount=0;// 1
aMapiMessage.lpFiles=NULL;//FileDesc; aMessage.Handle=Handle;
aMessage.aMapiMessage=aMapiMessage; DWORD SendMailThreadID;
HANDLE Hthread=CreateThread(0,0,SendMailThreadFunc,&aMessage,0,&SendMailThreadID);//参数一定要使用全局变量!
if(Hthread==NULL)
Application->MessageBox("Error",NULL, MB_OK);
}
//---------------------------------------------------------------------------
DWORD CALLBACK SendMailThreadFunc(void *aMessage)
{
AMessage *aaMessage=(AMessage *)aMessage;
FLAGS flFlags=MAPI_DIALOG | MAPI_NEW_SESSION | MAPI_LOGON_UI;
return MapiSendMail(NULL,(unsigned)aaMessage->Handle,aaMessage->aMapiMessage,flFlags,0);
}
【那个不是用命令行的方式的,楼主不要搞错了啊!】这句话针对的是什么,能给个详细的解释吗?我很着急啊,分数不是问题,这里回到问题的我都给分,回答最正确的,我令开贴给分,表示感谢,方便的话和我联系:[email protected]
BCB的代码翻译到Delphi很好翻译啊。你仔细看看就明白了。
aMapiMessage.lpFiles=NULL是指定附件的地方,具体你看看API帮助。