Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ппоблема с idSMTP 
:(
    Опции темы
a.S.d
Дата 25.2.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



У меня консольное приложение. Нужно отправить почту, используя компонент idSMTP. Но когда дело доходит до до использования компонента, прога вылетает. Вот код процедуры:
Код

procedure MailSend;
begin
idSMTP1.Host := 'smtp.mail.ru';
idsmtp1.Port := 25;
idmessage1.From.Text := '[email protected]';
idmessage1.Recipients.EMailAddresses := '[email protected]';
idmessage1.Subject := 'subject';
idmessage1.Body.Text := r;
tidattachment.Create(idmessage1.MessageParts,'log.txt');
tidattachment.Create(idmessage1.MessageParts,s);
idsmtp1.Connect(100000);
idsmtp1.Send(idmessage1);
idsmtp1.Disconnect;
end;

Если всё это сделать с формой и дописать перед каждым idSMTP1 и idmessage1
form1. , то всё работает.
В чём тут дело?
PM MAIL   Вверх
z-END
Дата 25.2.2005, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 1
Всего: 102



я чегото не вижу где у тебя этот самый idSMTP1 создается... или это кусок кода?


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Snowy
Дата 25.2.2005, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



idSMTP1:=TidSMTP1.Create();
у тебя вообще есть? Или ты его только в var'ах определил?
PM MAIL   Вверх
a.S.d
Дата 25.2.2005, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



z-END
Да, действительно не создаётся. А как его создать?
PM MAIL   Вверх
z-END
Дата 25.2.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 1
Всего: 102



Snowy уже написал:)


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
a.S.d
Дата 25.2.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



В начало процедуры вставил idsmtp1:=tidSMTP.Create(idsmtp1);
Тоже самое.
PM MAIL   Вверх
Snowy
Дата 25.2.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Нет, в качестве параметра нужно передать хэндл какого-нить окна (обычно главное). Но для консольного это затруднительно. Попробуй в скобках просто дать nil.
И не забуть после использования или при выходе уничтожить объект:
IdSMTP.Free;
PM MAIL   Вверх
a.S.d
Дата 25.2.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



Snowy
При чём тут хэндл? tidSMTP.Create(AOwner:TComponent);
А с nil не работает.
PM MAIL   Вверх
z-END
Дата 25.2.2005, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 1
Всего: 102



ну тогда добавь в Uses Forms
и сздавай так: idsmtp1 := tidSMTP.Create (Application);



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
a.S.d
Дата 25.2.2005, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



z-END
Так не годится, размер становится большой. Хотя если так сделать, всё равно не работает.
PM MAIL   Вверх
Snowy
Дата 25.2.2005, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Ну перепутал. Указатель на TComponent. Которого у тебя в консоли нет.
Вот, немного неполный твой код, который я доработал до рабочего состояния.
Проверил - работает.
nil подходит. Просто ты и IdMessage тоже не создал.
Код

program Project1;

{$APPTYPE CONSOLE}

uses
 IdSMTP,IdMessage;

var
 smtp: TIdSMTP;
 mes:  TIdMessage;

begin
 smtp:=TIdSMTP.Create(nil);
 mes:=TIdMessage.Create(smtp);
 smtp.Host := 'localhost';
 smtp.Port := 25;
 mes.From.Text := '[email protected]';
 mes.Recipients.EMailAddresses := '[email protected]'; // чуть не забыл адреса исправить на липовые :)
 mes.Subject := 'subject';
 mes.Body.Text := 'test';
 smtp.Connect(100000);
 smtp.Send(mes);
 smtp.Disconnect;
 mes.Free; smtp.Free;
end.

Но имей ввиду, что нужно еще ексепшены обрабатывать. Вдруг коннекта не будет.

Это сообщение отредактировал(а) Snowy - 25.2.2005, 17:45
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.