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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отправить на почту? 
:(
    Опции темы
hackvl
  Дата 13.1.2011, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нужно чтото дописать чтоб отправился еше и файл , только я незнаю что дописать, 
к примеру файл С:\\1.txt
 вот мой код

Код

idSmtp1.Host:='smtp.yandex.ru'; // smtp сервер
idSmtp1.Port:=25 ; // Порт
idSmtp1.Username:='****@yandex.ru' ; // Логин, от кого придет письмо
idSmtp1.Password:='*******' ; // Пароль
idMessage1.Body.Text:=edit1.text ; // Текст письма

idMessage1.From.Text:='********@yandex.ru'; // от кого email адрес
idMessage1.Recipients.EMailAddresses:='********@yandex.ru' ; // и кому отправляем
idMessage1.Subject:='Т' ; // Тема письма

idSmtp1.Connect();
if idSmtp1.Connected=true then;
idSmtp1.Send(idmessage1);
idSmtp1.Disconnect

PM MAIL   Вверх
Akella
Дата 13.1.2011, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



поиск по форуму тебя спасёт

Добавлено через 1 минуту и 18 секунд
http://forum.vingrad.ru/topic-44242.html

Добавлено через 4 минуты и 12 секунд
Вот пример:

Код

procedure TfmEmail.SendMail(aRecordIndex:integer);
Var
 q: TpFibQuery;
 IdEMailAddressList2, IdEMailAddressListCopy: TIdEMailAddressList;
begin
  sCharSet := dbgmail.DataController.Values[aRecordIndex, dbgMailCHARSET.Index];

  if dbgmail.DataController.Values[aRecordIndex, dbgMailLOCKED.Index] then
    begin

      exit;
    end;

  Log('Отправка рассылки: ' + dbgmail.DataController.Values[aRecordIndex, dbgMailname.Index]);

  IdSMTP1.DisConnect;
  IdSMTP1.IOHandler.DefStringEncoding := enUTF8;

  IdMessage1.Clear;
  IdMessage1.From.Name    := '';
  SysLocale.PriLangID     := LANG_RUSSIAN; //LANG_SYSTEM_DEFAULT;// LANG_RUSSIAN;// LANG_UKRAINIAN;
  IdMessage1.CharSet      := sCharSet;
  IdMessage1.ContentType  := 'multipart/related; type="multipart/alternative"';
  IdMessage1.ContentTransferEncoding := '8bit';


  IdSMTP1.ConnectTimeout  := 60*100;

  IdMessage1.From.Address := dbgmail.DataController.Values[aRecordIndex, dbgMailE_MAIL.Index];
  //от кого
  case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//    0: IdMessage1.From.Name    := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailFROM_NAME.Index]);
    0: IdMessage1.From.Name    := dbgmail.DataController.Values[aRecordIndex, dbgMailFROM_NAME.Index];
    1: IdMessage1.From.Name    := dbgmail.DataController.Values[aRecordIndex, dbgMailFROM_NAME.Index];
  end;


  //кому
  IdEMailAddressList2 := TIdEMailAddressList.Create(IdMessage1);

  //получатели
  case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//    0: IdEMailAddressList2.EMailAddresses := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT.Index]);
    0: IdEMailAddressList2.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT.Index];
    1: IdEMailAddressList2.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT.Index];
  end;

  IdMessage1.Recipients.EMailAddresses := EncodeAddress(IdEMailAddressList2, 'B',  sCharSet);


  //копия
  if dbgMail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index] <> null then
    begin
        IdEMailAddressListCopy := TIdEMailAddressList.Create(IdMessage1);

        //получатели
        case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//          0: IdEMailAddressListCopy.EMailAddresses := AnsiToUtf8(dbgMail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index]);
          0: IdEMailAddressListCopy.EMailAddresses := dbgMail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index];
          1: IdEMailAddressListCopy.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailRECIPIENT_COPY.Index];
        end;
        IdMessage1.CCList.EMailAddresses := EncodeAddress(IdEMailAddressListCopy, 'B',  sCharSet);
    end;


  //от кого
  case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//    0: IdMessage1.ReplyTo.EMailAddresses := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_FROM.Index]);
    0: IdMessage1.ReplyTo.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_FROM.Index];
    1: IdMessage1.ReplyTo.EMailAddresses := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_FROM.Index];
  end;

  //тема
  case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//    0: IdMessage1.Subject    := AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailSUBJECT.Index]);
    0: IdMessage1.Subject    := dbgmail.DataController.Values[aRecordIndex, dbgMailSUBJECT.Index];
    1: IdMessage1.Subject    := dbgmail.DataController.Values[aRecordIndex, dbgMailSUBJECT.Index];
  end;


    with TIdText.Create(IdMessage1.MessageParts, nil) do begin
      CharSet := sCharSet;

      case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//        0: Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailTITLE.Index]));
        0: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailTITLE.Index]);
        1: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailTITLE.Index]);
      end;

      case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//        0: Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailbody.Index]));
        0: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailbody.Index]);
        1: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailbody.Index]);
      end;

      case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//        0: Body.Add(AnsiToUtf8(dbgmail.DataController.Values[aRecordIndex, dbgMailFOOTER.Index]));
        0: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailFOOTER.Index]);
        1: Body.Add(dbgmail.DataController.Values[aRecordIndex, dbgMailFOOTER.Index]);
      end;

      ContentType := 'text/plain';
    end;


  IdMessage1.IsEncoded  := true;

  IdSMTP1.Host      := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP.Index];
  IdSMTP1.Username  := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_USER.Index];
  IdSMTP1.Password  := Decrypt(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_PASSWORD.Index], k_sm);

  case ansiindextext(dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_TYPE_CRYPT.Index], ['нет', 'неявное', 'явное', 'принудительное']) of
    0: IdSMTP1.UseTLS    := utNoTLSSupport;
    1: IdSMTP1.UseTLS    := utUseImplicitTLS;
    2: IdSMTP1.UseTLS    := utUseExplicitTLS;
    3: IdSMTP1.UseTLS    := utUseRequireTLS;
  end;

  IdSMTP1.Port      := dbgmail.DataController.Values[aRecordIndex, dbgMailSMTP_PORT.Index];
  IdSMTP1.AuthType  := satDefault;

  IdSSLIOHandlerSocketOpenSSL1.Destination  := IdSMTP1.Host + ':' + IntToStr(IdSMTP1.Port);
  IdSSLIOHandlerSocketOpenSSL1.Host         := IdSMTP1.Host;
  IdSSLIOHandlerSocketOpenSSL1.MaxLineAction:= maException;
  IdSSLIOHandlerSocketOpenSSL1.Port         := IdSMTP1.Port;
  IdSSLIOHandlerSocketOpenSSL1.DefaultPort  := 0;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode        := sslmUnassigned;
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode  := [];
  IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;

  q := TpFibQuery.Create(nil);
  try
    q.Database := DM.fibDB;
    q.Transaction := trMailRead;
    q.SQL.Text    := 'SELECT NAME FROM MAIL_ATTACHMENTS where ID_MAIL = :m_ID';
    q.ParamByName('m_ID').AsInteger := dbgmail.DataController.Values[aRecordIndex, dbgMailID.Index];
    q.ExecQuery;
    q.GoToFirstRecordOnExecute := true;

    while not q.Eof do
        if FileExists(q.FieldByName('name').AsString) then
          begin
            with TIdAttachmentFile.Create(IdMessage1.MessageParts, q.FieldByName('name').AsString) do begin
              case AnsiIndexText(ExtractFileExt(AnsiUpperCase(q.FieldByName('name').AsString)), ['.XLS', '.XLSX', '.RAR', '.ZIP', '.DOC', '.DOCX', '.HTML', '.TXT']) of
                0: ContentType := 'application/vnd.ms-excel';
                1: ContentType := 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
                2: ContentType := 'application/x-rar-compres';
                3: ContentType := 'application/zip';
                4: ContentType := 'application/msword';
                5: ContentType := 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
                6: begin ContentType := 'text/html'; {ContentDisposition := 'inline'} end;
                7: begin ContentType := 'text/plain'; {ContentDisposition := 'inline'} end;
                else
                ContentType := 'application/octet-stream';

              end;

//              ContentTransfer := 'base64';
              CharSet := sCharSet;

//              case ansiindextext(sCharSet, ['UTF-8', 'windows-1251']) of
//                0: FileName := q.FieldByName('name').AsString;
//                1: FileName := AnsiToUtf8(q.FieldByName('name').AsString);
//              end;
//              FileName := AnsiToUtf8(q.FieldByName('name').AsString);
              FileName := q.FieldByName('name').AsString;
              //free;
            end;
            q.next;
          end;//if FileExists(q.FieldByName('name').AsString) then
  finally
    q.close;
    FreeAndNil(q);
  end;

  Log('Подключение к: ' + IdSMTP1.Host + ':'+IntToStr(IdSMTP1.Port));
  IdSMTP1.Connect;

  dxStatusBar1.Panels[1].Text := constEMailSending2 + dbgmail.DataController.Values[aRecordIndex, dbgMailName.Index];
  Application.ProcessMessages;

  Log('Отправка.....');
  IdSMTP1.Send(IdMessage1);

  Log('Рассылка отправлена');

  Log('Отключение от сервера...');
  IdSMTP1.DisConnect;

  tMail.Edit;
  tMail.FBN('LAST_DATE').AsDateTime := now;
  tMail.FBN('SEND_COUNT').AsInteger := tMail.FBN('SEND_COUNT').AsInteger + 1;
  tMail.post;
  tMail.refresh;

  FreeAndNil(IdEMailAddressList2);
end;

PM MAIL   Вверх
Snowy
Дата 13.1.2011, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Для Indy 9 - TIdAttachment
Для Indy 10 то же самое, только вместо TIdAttachment - TIdAttachmentFile
PM MAIL   Вверх
hackvl
Дата 13.1.2011, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Неполучается, ошибка высвечивается
Undeclared identifier "FilleAttach"
PM MAIL   Вверх
Snowy
Дата 13.1.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



FileAttach - это string, в которм хранится имя файла.
там одна буква 'l', а не две.
PM MAIL   Вверх
hackvl
Дата 13.1.2011, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как исправить?
PM MAIL   Вверх
Snowy
Дата 13.1.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Убери лишнюю букву L  smile 
PM MAIL   Вверх
hackvl
Дата 13.1.2011, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



это я тут от руки писал там все правильно написано))
PM MAIL   Вверх
Snowy
Дата 13.1.2011, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Значит ты что-то напутал.
В примере FileAttach явно обозначен, как параметр функции.
Так что быть необъявленным физически не может.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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