在citrix环境下从delphi代码发送电子邮件

时间:2012-06-01 12:20:49

标签: delphi delphi-xe mapi

我们的客户大多使用MS Outlook,但有时其他客户也无法通过代码创建新的邮件窗口。

我们也试图实现mailto:alternative,但使用attachment =“C:\ filename.txt”失败。

使用发送到邮件收件人右键单击文件主要是无论如何,但我从未找到过通过代码执行此操作的方法。

有没有其他方法可以使用文件附件创建新邮件?

我们也经历过整个应用程序崩溃,因为mapi代码,windows错误经常会出现如下错误:

Faulting module name: dhcpcsvc.DLL, version: 6.1.7600.16385, time stamp: 0x4a5bd9b5
Exception code: 0xc0000005
Fault offset: 0x00001d00
Faulting process id: 0x868
Faulting application start time: 0x01ca7fbc86a3e836
Faulting application path: C:\Program Files (x86)\Microsoft Office\OFFICE11\OUTLOOK.EXE
Faulting module path: C:\Windows\system32\dhcpcsvc.DLL
Report Id: c60fa358-ebaf-11de-8b4f-0026b9486d93

2 个答案:

答案 0 :(得分:0)

  

有没有其他方法可以使用文件附件创建新邮件?

是。您可以使用Indy直接发送:TIdSMTP + TIdMessage + TIdAttachmentFile。

示例代码:

IdMessage := TIdMessage.Create(nil);
IdSMTP := TIdSMTP.Create(nil);
try
    IdMessage.Subject := 'YourMessageSubject';
    IdMessage.Recipients := 'targetmail1@example.com,targetmail2@example.com';
    IdMessage.CCList := ...
    IdMessage.BccList := ...
    IdMessage.Body.Text := 'YourMessageText';
    IdSMTP.Host := 'smtp.example.com';
    i := 1;
    TIdAttachmentFile.Create(IdMessage.MessageParts, TFileName('YourAttachmentFileName'));
    try
      IdSMTP.Connect;
      IdSMTP.Send(IdMessage);
    finally
      IdSMTP.Disconnect;
    end;
finally
    IdMessage.Free;
    IdSMTP.Free;
end;

答案 1 :(得分:0)

请参阅:How can I simulate ‘Send To...’ with Delphi?

该代码显示了如何使用已附加的文件打开新的“撰写邮件”窗口,模拟“发送到...”shell上下文菜单的操作系统默认操作。