Программно создать письмо в Outlook

Ребят, подскажите кусочек кода для программного создания письма в аутлоке! В инете есть примеры отправки писем напрямую, но меня интересует именно добавление в аутлок...
6 ответов

Вот такой вариант не устроит?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    const int olMailItem        = 0;
 
    Variant MSOApp = CreateOleObject("Outlook.Application");
    try
    {
        Variant myItem = MSOApp.OleFunction("CreateItem", (Variant)olMailItem);
 
        myItem.OlePropertySet("Subject", "This is the Subject"); // Тема
        myItem.OlePropertyGet("Recipients").OleFunction("Add", WideString("[removed_email]")); // Здесь будет адрес
 
        myItem.OlePropertySet("Body", (WideString)memoBody->Text); // Сообщение
 
        Variant myAttachments = myItem.OlePropertyGet("Attachments");
        myAttachments.OleFunction("Add", WideString("F:\\fam.txt")); // Здесь будет имя прикрепленного файла
        myItem.OleProcedure("Send");
        MSOApp.OleFunction("Quit");
    }
    catch(...)
    {
        ShowMessage(L"Ошибка при отправке почты");
    }
}
На 2009 Билдере этот код прекрасно отсылал почту через Outlook (у меня тогда был OutlookXP)


у меня 6-й билдер... Какие библиотеки нужно подключить ? [C++ Error] Unit1.cpp(30): E2285 Could not find a match for 'Variant::OlePropertySet(char *,undefined)' [C++ Error] Unit1.cpp(30): E2451 Undefined symbol 'memoBody' [C++ Error] Unit1.cpp(22): E2268 Call to undefined function 'CreateOleObject'


memoBody - это название обычного TMemo, лежащего на форме. А для использования CreateOleObject всегда было нужно подключать ComObj.h


спасибо,все работает!!! кст. правильно будет ComObj.hpp


UI, помоги разобрать со строчкой:
myItem.OlePropertySet("Subject", "This is the Subject"); // Тема
Вместо This is the Subject пишу ну скажем Label1->Caption, то при отправке дебаггер ругается на "операция недоступна блаблаб ла"Решено, нужно писать так
myItem.OlePropertySet("Subject", (WideString)Label1->Caption); // Тема


myAttachments.OleFunction("Add", WideString("F:\\fam.txt"));
А подгруздка файлов MemorStream возможна (знаю что да, но не могу собрать)?на шарпе это делается так:
using (var message = new MailMessage("[removed_email]", "[removed_email]", "Just testing", "See attachment..."))
{
    writer.WriteLine("Comma,Seperated,Values,...");
    writer.Flush();
    stream.Position = 0;     // read from the start of what was written
 
    message.Attachments.Add(new Attachment(stream, "filename.csv", "text/csv"));
 
    mailClient.Send(message);
}