Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 13:16   #1
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию нужно отправить письмо на мэйл получателя

Здравствуйте, дорогие форумчане. Помогите пожалуйста. Стоит такая задача: нужно отправить письмо с прикрепленным файлом (документом) на электронную почту получателя. Пишу программу в C++Builder 6, но выдает ошибку Cannot convert "void" to "bool" в строке
if (IdSMTP1->Connect())
Код:
 

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
IdSMTP1->Host="smtp.yandex.ru";
IdSMTP1->Port=25;
IdSMTP1->UserId="power@mail.ru"; //свой логин
IdSMTP1->Password="свой пароль"; //свой пароль
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdMessage1->From->Text=Edit1->Text;
IdMessage1->Recipients->EMailAddresses=Edit2->Text;
IdMessage1->Subject=Edit3->Text;
IdMessage1->Body->Text=Memo1->Text;

if (IdSMTP1->Connect()) // не запускает и выдает такую ошибку: Сannot convert "void" to "bool".
    IdSMTP1->Send(IdMessage1);
    else
    IdSMTP1->Disconnect();

}

// на форме три компонента edit, один компонент memo, компоненты IdSMTP  и  IdMessage.
Азамат Казанчев вне форума Ответить с цитированием
Старый 04.05.2011, 13:21   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

если не ошибаюсь метод Connect не возвращает значений, а вы его условием ставите, не помню точно, но нужно то ли проверить свойство Connected либо вводить обработку исключений (потому что может быть при неудачной попытке соединения он просто вызывает исключение)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 04.05.2011, 13:26   #3
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

а что не так, вроде бы все делаю нормально!
Азамат Казанчев вне форума Ответить с цитированием
Старый 04.05.2011, 13:30   #4
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

проблема в том что в условие вы передаете метод, который не возвращает никаких значений, т.е. под условием подразумевается некоторое логическое выражение, которого в нем на самом деле нет, поэтому компилятор и ругается на невозможность приведения к логическому типу
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 04.05.2011, 13:36   #5
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

ну тогда посоветуйте пожалуйста, как выйти из ситуации.
Азамат Казанчев вне форума Ответить с цитированием
Старый 04.05.2011, 13:42   #6
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

сейчас под рукой билдера нет, поэтому только на память (читаем выше)

Цитата:
нужно то ли проверить свойство Connected либо вводить обработку исключений (потому что может быть при неудачной попытке соединения он просто вызывает исключение)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 04.05.2011, 14:09   #7
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

с connect разобрался, программа запускается, но сообщение не отправляет.
Азамат Казанчев вне форума Ответить с цитированием
Старый 04.05.2011, 14:30   #8
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

можно код который сейчас есть?
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 04.05.2011, 14:35   #9
Азамат Казанчев
Форумчанин
 
Регистрация: 25.04.2011
Сообщений: 110
По умолчанию

код (смотри выше). Я просто условие if (IdSMTP1->Connect()) поменял на if (IdSMTP1->Connected()) и запустилось, но письмо не отправляется.
Азамат Казанчев вне форума Ответить с цитированием
Старый 04.05.2011, 14:37   #10
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

перед условием IdSMTP1->Connect() пропишите
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отправить письмо с аттачем(WinSock) legendary Работа с сетью в Delphi 0 02.03.2011 15:53
Как отправить письмо в PHP FACE OFF Помощь студентам 4 26.12.2010 18:43
Как отправить письмо с indy 10.5? TwiX Работа с сетью в Delphi 1 08.12.2009 15:33
Не могу отправить письмо seoanalyzer Работа с сетью в Delphi 13 25.05.2009 19:45
Как програмно отправить письмо на E-mail ? SG13 Работа с сетью в Delphi 2 13.06.2008 12:50