IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Отправка почты, С++
taran
сообщение 30.01.2010 14:57
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Добрый день.
Подскажите, пожалуйста, как реализуется процесс отправки почты в среде С++ Builder.

Хотелось бы, чтобы при нажатии кнопки отправлялось письмо с заданной темой через почтовый клиент (например, Outlook) на уже назначенный адрес. К письму должен быть прикреплён конкретный txt-файл, сформированный программой ранее.

Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 1.02.2010 13:38
Сообщение #2


Гость






Цитата
При закрытом 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)
{ // здесь весь тот код, который я приводил выше, кроме инициализации Аутлука
 К началу страницы 
+ Ответить 

Сообщений в этой теме
taran   Отправка почты   30.01.2010 14:57
volvo   Скачай Drkb , и посмотри вот по этому пути: Интерн...   30.01.2010 15:09
taran   Спасибо за совет, я ознакомился, но не смог оконча...   31.01.2010 1:09
volvo   С Аутлуком вполне можно работать через Ole Automat...   31.01.2010 1:51
taran   Спасибо.   31.01.2010 12:05
taran   Как известно, письма отправляются только при откры...   31.01.2010 15:00
volvo   Это не нужно, при попытке отправки письма Аутлук и...   31.01.2010 22:14
taran   Это не нужно, при попытке отправки письма Аутлук ...   1.02.2010 0:47
volvo   Хорошо, зайдем с другой стороны. Что происходит у ...   1.02.2010 1:55
taran   Можно теперь узнать, что происходит у тебя? При ...   1.02.2010 13:05
volvo   Неправда... Согласно коду - должно быть так: Vari...   1.02.2010 13:38
taran   Версия Outlook- 2007, Билдера - 6. Что происходит...   1.02.2010 14:25
volvo   Хм... У тебя что, Билдер глючит? Смотри: try {...   1.02.2010 14:35
taran   Смотри: try { // Попытка запуска Outlook.....   1.02.2010 14:48
taran   Кстати, подскажите ещё, пожалуйста, как называется...   1.02.2010 15:27
volvo   В MSDN, где же еще? :) Вот объектная модель Outlo...   1.02.2010 15:35


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.07.2025 21:29
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"