2016-01-22 33 views
3

您好所有專家發送電子郵件,德爾福:通過Outlook與多個附件

procedure TForm1.domail(Sender: TObject; fromname, fromadd, sub, toadd, thedocdone, theacc: string; body: widestring); 
const 
    olMailItem = 0; 
var 
    Outlook: OLEVariant; 
    vmailitem: variant; 
    Attachment: TIdAttachment; 
    savetofol: string; 
begin 
    try 
    Outlook := GetActiveOleObject('Outlook.Application'); 
    except 
    Outlook := CreateOleObject('Outlook.Application'); 
    end; 
    vmailitem := Outlook.CreateItem(olMailItem); 
    vmailitem.Recipients.Add(toadd); 
    vmailitem.ReplyRecipients.Add('[email protected]'); 
    vmailitem.Subject := sub; 
    vmailitem.body := 'SENT: ' + formatdatetime('dd mmmm yyyy - hh:nn am/pm', now) + #13#10 + body; 
    vmailitem.ReadReceiptRequested := true; 
    vmailitem.importance := 2; 
    if thedocdone <> 'NIL' then 
    begin 
    vmailitem.Attachments.Add(thedocdone, 1, 1, 'SBSA_' + theacc); 
    if ansipos('string1', lowercase(toadd)) <> 0 then 
    begin 
     vmailitem.Attachments.Add('*manual path', 1, 2, '*manual name'); 
     Memo1.Lines.Add('Adding consent letter to mail...'); 
    end; 
    if ansipos('string2', lowercase(toadd)) <> 0 then 
    begin 
     vmailitem.Attachments.Add('*manual path', 1, 2, '*manual name'); 
     Memo1.Lines.Add('Adding consent letter to mail...'); 
    end; 
    savetofol := extractfilepath(thedocdone) + copy(extractfilename(thedocdone), 0, length(extractfilename(thedocdone)) - 8); 
    vmailitem.saveas(savetofol + '_eml.doc', 4); //^+'.doc' 
    end; 
    // vmailitem.clear; 
    vmailitem.Send; 
    Outlook := Unassigned; 
end; 

有了上面這段代碼,我能夠連接到Outlook併發送一封電子郵件,並附加附件的郵件..

我的問題是,它WONT附加第二附件...... ???我曾嘗試所有可能的方法用不同的方法來做到這一點,但我就是無法取得第二個附件附加到郵件...

請幫助...

+0

爲什麼使用前景如何?僅僅創建電子郵件並從程序發送它會不會更容易? –

+0

什麼是它的意思是「它不會附加」?它給了你什麼錯誤異常? 你確定你使用不同的附件名稱嗎?你確定你使用Outlook不認爲危險的文件格式/文件擴展名嗎?是否正確#2和#3附件有相同的'1,2'指數? –

+0

1我需要使用Outlook,以便Outlook中的該帳戶有記錄 2沒有錯誤只是不附加第二個附件 3是他們是不同的文件名 4是的,他們是pdf的附加 5#2#3是不同的pdf的如果string1然後附加#2如果string2然後附加#3,#2#3將永遠不會同時附加 – Troz

回答

2

Attachments Object (Outlook)

爲確保結果一致,始終在添加項目之前保存項目或刪除項目的附件集合中的對象。

錯誤:

vmailitem.Attachments.Add(); 
vmailitem.Attachments.Add(); 
vmailitem.Attachments.Add(); 

右:

vmailitem.Attachments.Add(); 
vmailitem.save; 
vmailitem.Attachments.Add(); 
vmailitem.save; 
vmailitem.Attachments.Add(); 
vmailitem.save; 
+0

你可以在你的答案中添加一些更多的信息嗎? http://stackoverflow.com/help/how-to-answer –