Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка отправки письма, ни как не хочет 
V
    Опции темы
popapo
Дата 19.8.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



На этом форуме уже спрашивали как на 2009 послать письмо с прилепрлинным файлом, но у меня не получаеться даже отправить.

Код

 if(TrueMail == true)
   {

            TIniFile *ini2;
            ini2 = new TIniFile(ChangeFileExt(ExtractFilePath(Application->ExeName)+"mail.cry", ".cry" ));
    IdSMTP1->AuthType = satDefault;
    IdSMTP1->Host     = ini2->ReadString("Mail","SMTP","");
    IdSMTP1->Port     = 25;
    IdSMTP1->Username = ini2->ReadString("Mail","Login","");
    IdSMTP1->Password = ini2->ReadString("Mail","Password","");
    delete ini2;

    IdMessage1->Clear();

    IdMessage1->CharSet                    = "windows-1251";
    IdMessage1->Recipients->EMailAddresses = "*****@mail.ru";        //EMail- Кому
    IdMessage1->From->Name                 = sEdit1->Text;                //От кого - будет в списке писем "от кого"
    IdMessage1->From->Address              = mail;        //EMail-От кого;
    IdMessage1->Subject                    = sEdit2->Text;    //Тема письма
    IdMessage1->Body->Text                 = sRichEdit1->Text;

    // аттач
    TIdAttachment *pAttach;
    TStringList *pHead = new TStringList;
    IdMessage1->DoCreateAttachment(pHead, pAttach);
    pAttach->FileName                             = ExtractFileName(sFilenameEdit1->Dialog->FileName);
    ((TIdAttachmentFile*)pAttach)->StoredPathName = sFilenameEdit1->Dialog->FileName;


   if(!IdSMTP1->Connected())
    IdSMTP1->Connect();
     try
     {
     if(IdSMTP1->Connected())
     {
    IdSMTP1->Send(IdMessage1);
    ShowMessage("Письмо отправлено успешно");
            sButton1->Enabled = false;
    Timer1->Enabled = true;
     }
    }
    catch(Exception &e)
    {
    ShowMessage("Error "+e.Message);
       }
    IdSMTP1->Disconnect();
    IdSMTP1->Host     = "";
    IdSMTP1->Port     = 25;
    IdSMTP1->Username = "";
    IdSMTP1->Password = "";

    }
         else
         ShowMessage("Incorrect mail");
     }

   }


Если делать без куска который отвечает за отправку файла то все нормально, но если с ним, то при нажатии на кнопку программа сообщает об ошибке (появляеться окно с пустым сообщением и красным крестиком)

И ещё одна проблема, ни как не хочет показывать русский текст в письме, IdMessage1->CharSet = "windows-1251" - не помогает.
PM   Вверх
Anikmar
Дата 19.8.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Нет под рукой хелпа, на вскидку в этом участке кода все правильно?
Код

// аттач
    TIdAttachment *pAttach;
...
    IdMessage1->DoCreateAttachment(pHead, pAttach);
    pAttach->FileName                             = ExtractFileName(sFilenameEdit1->Dialog->FileName);


Я не увидел где собственно создается объект pAttach? 
Он в метод IdMessage1->DoCreateAttachment(pHead, pAttach); передается по по ссылке и создается там?
PM MAIL ICQ   Вверх
popapo
Дата 19.8.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ой действительно, я просто тупо скопировал всё, а как правильно?

Код

    TIdAttachment *pAttach = new TIdAttachmentFile(IdMessage1->MessageParts, sFilenameEdit1->Dialog->FileName);
    TStringList *pHead = new TStringList;
    pAttach->FileName                             = ExtractFileName(sFilenameEdit1->Dialog->FileName);
    ((TIdAttachmentFile*)pAttach)->StoredPathName = sFilenameEdit1->Dialog->FileName;
    IdMessage1->DoCreateAttachment(pHead, pAttach)


таже самая фигня,  если вместо new TIdAttachmentFile просто new TIdAttachment то ошибка компиляции, если чесно, я ничего в этом не понимаю...мне 14 лет)

Это сообщение отредактировал(а) popapo - 19.8.2009, 21:53
PM   Вверх
Anikmar
Дата 20.8.2009, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Гляньте тут, по-моему весьма доходчиво и лаконично
PM MAIL ICQ   Вверх
popapo
Дата 20.8.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

new TIdAttachmentFile(IdMessage1->MessageParts,sFilenameEdit1->Dialog->FileName);


Работает, проблема была из за того что я записывал напрямую из ини файлов в IdSMTP1 данные, если делать через переменные то все работает почему то.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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