2011-12-11 33 views
7

我想在Outlook中创建一个带有附件的邮件并在发送之前显示它,但是我想我已经尝试了几乎所有在网络上找到的示例,但没有任何运气。 我可以使用Indy,但我非常希望使用Outlook来确保邮件是正确的,因为它是用于商业用途。在Outlook中创建带附件的邮件并显示它

以地址,主题,消息和附件为参数,然后在发送消息之前在Outlook中显示消息的函数的任何输入。

回答

14

请参阅MailItem.Display Method

uses 
    comobj; 

.. 

procedure DisplayMail(Address, Subject, Body: string; Attachment: TFileName); 
var 
    Outlook: OleVariant; 
    Mail: Variant; 
const 
    olMailItem = $00000000; 
begin 
    try 
    Outlook := GetActiveOleObject('Outlook.Application'); 
    except 
    Outlook := CreateOleObject('Outlook.Application'); 
    end; 
    Mail := Outlook.CreateItem(olMailItem); 
    Mail.To := Address; 
    Mail.Subject := Subject; 
    Mail.Body := Body; 
    if Attachment <> '' then 
    Mail.Attachments.Add(Attachment); 
    Mail.Display; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    DisplayMail('mailaddress', 'subject', 'message', 'attachmentfile'); 
end; 
+0

我不知道我一直在做什么错,因为它几乎与我一直使用的代码相同,但没有运气。 另一方面,您的代码有效。 我想知道它是否与我一直在使用Outlook_TLB的事实有关 - 但我看不到这应该做什么。 您是否知道是否可以将请求阅读收据和递送收据添加到代码中? – OZ8HP

+1

对于收到读取请求,请选中['ReadReceiptRequested'](http://msdn.microsoft.com/zh-cn/library/ff865400.aspx)属性,并将其用作Mail.ReadReceiptRequested:= True;' – TLama

+1

..和'OriginatorDeliveryReportRequested'属性。 –

相关问题