1

我们的客户大多使用 MS Outlook,但有时其他客户也会给我们从代码创建新邮件窗口带来麻烦。

我们还尝试实现 mailto: 替代方案,但使用 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
4

2 回答 2

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;
于 2012-06-01T12:41:18.480 回答
0

请参阅:如何使用 Delphi 模拟“发送到...”?

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

于 2012-06-01T12:45:51.663 回答