1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным. В описании темы указываем язык!!!
Добрый день. Подскажите, пожалуйста, как реализуется процесс отправки почты в среде С++ Builder.
Хотелось бы, чтобы при нажатии кнопки отправлялось письмо с заданной темой через почтовый клиент (например, Outlook) на уже назначенный адрес. К письму должен быть прикреплён конкретный txt-файл, сформированный программой ранее.
При закрытом Outlook: согласно коду, появляется сообщение ShowMessage(L"Ошибка при отправке почты").
Неправда... Согласно коду - должно быть так:
Variant MSOApp = CreateOleObject("Outlook.Application"); // Пытаемся создать новый Instance Аутлука try {
Создать новый Instance - значит "открыть". Если это не получается - это значит, что либо у тебя что-то с системой не то, либо Аутлук не установлен... Версия MSO какая? То, что я написал точно присутствует в Outlook XP (он же - Outlook 2002), и для предотвращения этих вопросов нужно использовать Redemption: Сайт
Цитата
Если запускать в Билдере, появляется сообщение об ошибке: exception class EOleSysError with message "Операция прервана"
Чтобы IDE Билдера правильно обрабатывала исключения, надо это настроить... Билдер у тебя какой? В BDS 2009 это делается в Tools -> Options -> Debugger Options -> CodeGear Debuggers, там ставятся галки где нужно: в Language Exceptions снимается "Notify...", а в Native OS Exceptions переключатель Handled By переводится на User Program, а не на Debugger...
Вообще, если делать программу совсем правильно, то это делается вот так:
Variant MSOApp; bool isRunning = false;
try { // Сначала проверяем, а вдруг Outlook уже запущен? Тогда к нему подключаемся... MSOApp = GetActiveOleObject("Outlook.Application"); isRunning = true; } catch(EOleSysError &e) { try { // Не был запущен... Значит, запускаем: MSOApp = CreateOleObject("Outlook.Application"); isRunning = true; } catch(...) { ShowMessage(L"Неудача: Ошибка подключения к MS Outlook"); } } catch(...) { ShowMessage(L"Неудача: Ошибка подключения к MS Outlook"); }
if(isRunning) { // здесь весь тот код, который я приводил выше, кроме инициализации Аутлука