2016-01-22 6 views
3

Здравствуйте все эксперты,Delphi: Отправить электронную почту через 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; 

С выше кусок кода я могу прикрепить к внешнему виду и отправить по электронной почте и прикрепить вложение к этой почте .. .

Моя проблема в том, что IT WONT присоединяет второе приложение ... ??? я попробовал все стороны, используя различные методы, чтобы сделать это, но я просто не могу получить 2-ое вложение присоединять к почте ...

Пожалуйста, помогите ...

+0

почему использование перспективы? не будет ли проще создавать электронную почту и отправлять ее из вашей программы? –

+0

Что это значит означает «не прикрепится»? какое исключение ошибки оно дает вам? Вы убедились, что вы используете разные имена вложений? вы убедились, что используете форматы файлов/расширения имен файлов, которые Outlook не считает опасными? верно ли, что вложения # 2 и # 3 имеют одинаковые индексы «1, 2»? –

+0

1 Мне нужно использовать внешний вид, чтобы учетная запись внутри Outlook имела запись 2 Нет ошибки, просто не прилагается 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 –

 Смежные вопросы

  • Нет связанных вопросов^_^