Internet - enviando email com anexo no outlook

Top  Previous  Next

// ====== modificada, porém não funcionou com o Outlook Express

// ====== acho que é só para Outlook (sem Express)

 

uses ComObj;

 

procedure EnviarEmailOutLook(const Assunto, Destino, Corpo, Anexo: string);

const

  // OlItemType constants

  olMailItem        = 0;

  olAppointmentItem = 1;

  olContactItem     = 2;

  olTaskItem        = 3;

  olJournalItem     = 4;

  olNoteItem        = 5;

  olPostItem        = 6;

  // OlAttachmentType constants

  olByValue         = 1;

  olByReference     = 4;

  olEmbeddedItem    = 5;

  olOLE             = 6;

var

  myOlApp, myItem, myRecipient, myAttachments: OLEVariant;

begin

  // Usando o VBScript p/ criar um email e adicionar um anexo

  myOlApp        := CreateOLEObject('Outlook.Application');

  myItem         := myOlApp.CreateItem(olMailItem);

  myItem.Subject := Assunto;

  myRecipient    := myItem.Recipients.Add(Destino);

  myItem.Body    := Corpo;

  // Agora vamos adicionar os arquivos

  myAttachments  := myItem.Attachments;

  myAttachments.Add(Anexo, olByValue, 1'SUPORTE.ZIP Attachment'); // pode-se adicionar multiplos arquivos

  myItem.Send;

  myOlApp        := VarNull;

  myItem         := VarNull;

  myRecipient    := VarNull;

  myAttachments  := VarNull;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  EnviarEmailOutLook('Mensagem Automatica do Supervisor para Suporte Market',

                     'suporte@market.com.br',

                     'Digite a descrição do seu problema aqui!',

                     'C:\SUPORTE.ZIP' );

end;

 

=========================== abaixo original ===========================

 

Question/Problem/Abstract:

 

There have been many questions about how to send an e-mail 

with an attachment. I came up with the vbs script that did 

it with Outlook. 

 

Well here's the Delphi translation that uses OLE to 

accomplish the same thing: 

 

 

Answer:

 

 

Change recipientaddress@recipienthost.com to your own e-mail 

address and give it a try. You must have Outlook installed, 

 

{I'not sure if this will work with Outlook Express.} 

 

uses ComObj; {Delphi 5} 

 

procedure TForm1.Button1Click(Sender: TObject); 

const 

  // OlItemType constants 

  olMailItem = 0

  olAppointmentItem = 1

  olContactItem = 2

  olTaskItem  = 3

  olJournalItem = 4

  olNoteItem = 5

  olPostItem = 6

  // OlAttachmentType constants 

  olByValue = 1

  olByReference = 4

  olEmbeddedItem = 5

  olOLE = 6

 

var 

  myOlApp, myItem, myRecipient, myAttachments: OleVariant; 

begin 

  // VBScript file to create a mail and add an attachment 

  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 constants'+ #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 + '  // Now let''s attach the files...' + #13; 

  myItem.Body := myItem.Body + '  myAttachments.Add ''C:\blah'', olByValue, 

1''Blah 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

  // Now let's attach the files... 

  myAttachments := myItem.Attachments; 

  myAttachments.Add('C:\blah.txt', olByValue, 1'Blah Attachment'); 

  myItem.Send 

  myOlApp := VarNull; 

  myItem := VarNull; 

  myRecipient := VarNull; 

  myAttachments := VarNull; 

end