Отправка E-mail с прикреплённым файлом из Delphi через Outlook.

Автор: Eddie Shipman

Пример использует VB Script для Outlook, который позволяет произвести такую операцию. Создаётся OLE-объект — ‘Outlook.Application’ и в него передаётся скрипт.

Совместимость: все версии Delphi

Измените recipientaddress@recipienthost.com на Ваш собственный e-mail
адресс. У Вас должен быть проинсталирован Outlook,

{Я не уверен, что это будет работать в Outlook Express.}

uses ComObj; {Delphi 5}

procedure TForm1.Button1Click(Sender: TObject);
const
// константы OlItemType
olMailItem = 0;
olAppointmentItem = 1;
olContactItem = 2;
olTaskItem = 3;
olJournalItem = 4;
olNoteItem = 5;
olPostItem = 6;
// константы OlAttachmentType
olByValue = 1;
olByReference = 4;
olEmbeddedItem = 5;
olOLE = 6;

var
myOlApp, myItem, myRecipient, myAttachments: OleVariant;
begin
// файл VBScript для создания почтового сообщения и прикрепления к нему файла
myOlApp := CreateOLEObject(‘Outlook.Application’);
myItem := myOlApp.CreateItem(olMailItem);
myItem.Subject := ‘This is the Subject’;
myRecipient := myItem.Recipients.Add(‘recipientaddress@recipienthost.com’);
myItem.Body := #13;
myItem.Body := myItem.Body + #13;
myItem.Body := myItem.Body + ‘Hello,’ + #13;
myItem.Body := myItem.Body + ‘This code created this message and ‘+
‘ sent it and I didn»t even have’ + #13;
myItem.Body := myItem.Body + ‘to click the send button!!!’ + #13;
myItem.Body := myItem.Body + #13;
myItem.Body := myItem.Body + ‘If you have any more problems, let me know’ +
#13;
myItem.Body := myItem.Body + ‘rename to blah.vbs and run like this:’ + #13;
myItem.Body := myItem.Body + ‘wscript c:\blah.vbs’ + #13;
myItem.Body := myItem.Body + #13;
myItem.Body := myItem.Body + ‘Eddie’ + #13;
myItem.Body := myItem.Body + #13;
myItem.Body := myItem.Body + #13;
myItem.Body := myItem.Body + ‘const’+ #13;
myItem.Body := myItem.Body + ‘ // константы OlItemType’+ #13;
myItem.Body := myItem.Body + ‘ olMailItem = 0;’+ #13;
myItem.Body := myItem.Body + ‘ olAppointmentItem = 1;’+ #13;
myItem.Body := myItem.Body + ‘ olContactItem = 2;’+ #13;
myItem.Body := myItem.Body + ‘ olTaskItem = 3;’+ #13;
myItem.Body := myItem.Body + ‘ olJournalItem = 4;’+ #13;
myItem.Body := myItem.Body + ‘ olNoteItem = 5;’+ #13;
myItem.Body := myItem.Body + ‘ olPostItem = 6;’+ #13;
myItem.Body := myItem.Body + ‘ // OlAttachmentType constants’+ #13;
myItem.Body := myItem.Body + ‘ olByValue = 1;’+ #13;
myItem.Body := myItem.Body + ‘ olByReference = 4;’+ #13;
myItem.Body := myItem.Body + ‘ olEmbeddedItem = 5;’+ #13;
myItem.Body := myItem.Body + ‘ olOLE = 6;’+ #13;
myItem.Body := myItem.Body + #13;
myItem.Body := myItem.Body + ‘var’+ #13;
myItem.Body := myItem.Body + ‘ myOlApp, myItem, myRecipient, myAttachments:
OleVariant;’+ #13;
myItem.Body := myItem.Body + ‘begin’+ #13;
myItem.Body := myItem.Body + ‘ myOlApp :=
CreateObject(»Outlook.Application»)’ + #13;
myItem.Body := myItem.Body + ‘ myItem := myOlApp.CreateItem(olMailItem)’ +
#13;
myItem.Body := myItem.Body + ‘ myItem.Subject := »This is the Subject»’ +
#13;
myItem.Body := myItem.Body + ‘ myItem.Body := »This is the body»’ + #13;
myItem.Body := myItem.Body + ‘ myRecipient := myItem.Recipients.Add
(‘recipientaddress@recipienthost.com’)’ + #13;
myItem.Body := myItem.Body + ‘ myAttachments := myItem.Attachments’ + #13;
myItem.Body := myItem.Body + ‘ // Теперь прикрепим файлы…’ + #13;
myItem.Body := myItem.Body + ‘ myAttachments.Add »C:\blah.txt», olByValue,
1, »Blah.txt Attachment»’ + #13;
myItem.Body := myItem.Body + ‘ myItem.Send’ + #13;
myItem.Body := myItem.Body + ‘ myOlApp := VarNull;’ + #13;
myItem.Body := myItem.Body + ‘ myItem := VarNull;’ + #13;
myItem.Body := myItem.Body + ‘ myRecipient := VarNull;’ + #13;
myItem.Body := myItem.Body + ‘ myAttachments := VarNull;’ + #13;
myItem.Body := myItem.Body + ‘end;’ + #13;
// Теперь прикрепим файлы…
myAttachments := myItem.Attachments;
myAttachments.Add(‘C:\blah.txt’, olByValue, 1, ‘Blah.txt Attachment’);
myItem.Send
myOlApp := VarNull;
myItem := VarNull;
myRecipient := VarNull;
myAttachments := VarNull;
end;