| 
| 
 | Вопрос # 2 765/ вопрос открыт / | 
 |  Добрый день/вечер, уважаемые!Подскажите, как с помощью Делфи(Д2009) отправить письмо с атачем? И если сервер smtp требует аутентификацию(как например gmail.com)?
 Что и где надо прописать? Если можно, то с примером
 В объектах TidSMTP и TisMessage вроде нету метода - attachment
 
 Заранее, большое спасибо!
 
|  |   Вопрос задал: Irbis (статус: Посетитель)Вопрос отправлен: 12 мая 2009, 00:08
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Ученый Здравствуйте, Irbis! Попробуйте так:
 var
IdMessage:TIdMessage;
sm:idsmtp;
begin
IdMessage:=TIdMessage.create(form1);
IdMessage.From.Text:='test_prog@mail.ru';//от кого
IdMessage.Recipients.Add;
IdMessage.Recipients.Items[0].Text:='<'+decoding(sl[4])+'>';// кому
IdMessage.Subject:='Otchot';// тема
sm:=tidsmtp.Create(form1);
sm.Host:=''; //смтп сервер
sm.Username:='';//логин
sm.Password:='';//пароль
TIdAttachmentFile.Create(IdMessage.MessageParts,'c:\tester\Config\Otchot.txt');// путь к файлу
try
sm.Connect();
if sm.Connected then
begin
sm.Send(IdMessage);
end;
sm.Disconnect();
except
end;
end; 
|  | Ответ отправил: Ученый (статус: 8-ой класс)Время отправки: 12 мая 2009, 13:55
 Оценка за ответ: 4
 Комментарий к оценке: а как на счет авторизации на смтп сервер с TLS?кстати, не подскажите, у меня стоит 2009 делфи и Инди10, но там только dcu и нету класса TIdAttachment
 пробовал взять Инди10 с ихнего сайта, но не смог поставить, ругается на то, что функции с разными параметрами и типы не соответствуют и т.д.
 в чем могут быть проблемы?
 ставил пакеты правильные - *120.dpk
 |  
 Мини-форум вопросаВсего сообщений: 12; последнее сообщение — 13 мая 2009, 15:48; участников в обсуждении: 5. 
|   | min@y™ (статус: Доктор наук), 12 мая 2009, 08:34 [#1]:В модуле idMessage.pas есть для этого соответствующий класс: 
 TIdAttachment = class(TIdMessagePart)
  protected
    FContentDisposition: string;
    FFileIsTempFile: boolean;
    FFileName: TFileName;
    //
    function GetContentDisposition: string;
    procedure SetContentDisposition(const Value: string);
  public
    procedure Assign(Source: TPersistent); override;
    constructor Create(Collection: TIdMessageParts; const AFileName: TFileName = ''); reintroduce;
    destructor Destroy; override;
    procedure Encode(ADest: TStream);
    function SaveToFile(const FileName: TFileName): Boolean;
    //
    property ContentDisposition: string read GetContentDisposition write SetContentDisposition;
    property FileIsTempFile: boolean read FFileIsTempFile write FFileIsTempFile;
    property FileName: TFileName read FFileName write FFileName;
  end;Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | 7Ghost (статус: 1-ый класс), 12 мая 2009, 13:51 [#2]:Не знаю насчет Delphi 2009! Ибо он мне не очень нравится! А вот в Delphi 7 я писал программу для отправки и получения почты через Маил.ру! У меня получилось! Раньше Маил.ру использовал порт 25 теперь похоже 2525! Если ВЫ хотите я могу опубликовать данный код, но только для Delphi 7 и маил.ру(хотя я с маил.ру отправлял и на гугл и на все остальные)! А если хотите с гугла отправлять, то ищите его порт! |  
|   | Вадим К (статус: Академик), 12 мая 2009, 14:14 [#3]:А зачем сколько знаков восклицания? по поводу порта 2525. Стандартным есть 25, но некоторые провайдеры блокируют его (типа пытаются бороться с рассылкой спама). Поэтому многие почтовые службы открывают на запасных портах.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Ученый (статус: 8-ой класс), 12 мая 2009, 14:19 [#4]:Не знаю как на счет авторизации TLS, но вот этот код точно проверялся в Delphi 2009, более того он взят из рабочего проекта.....достаточно бросить на форму IdMessage idsmtp и код должен работать....
 |  
|   | Irbis (статус: Посетитель), 12 мая 2009, 14:53 [#5]:буду признателен за помощь у меня еще проблема с авторизацией
 я уже демаю, может мои админы на работе закрыли порта. может ли такое быть? и могу ли я как то это проверить?
 |  
|   | Ученый (статус: 8-ой класс), 12 мая 2009, 14:57 [#6]:если выход в глобал идет через локальный сервер или через несколько локальных сетей, то большая доля вероятности что могли и прикрыть некоторые порты....это уже надо у сисадмина спрашивать...у нас в школе такое практикуется.... |  
|   | Вадим К (статус: Академик), 12 мая 2009, 15:08 [#7]:Да, могли закрыть, кто им мешает. Но если это гугл, то рекомендую начать внимательно чтение с страницы http://mail.google.com/support/bin/topic.py?hl=ru&topic=12805 Как минимум следует помнит, что у гугла порты другие....(465). И мало того, pop/smpt может быть отключено в настройках. В других почтовых служб может быть похоже.
 А у hotamail.com до недавнего времени вообще не было pop/smtp.... А outlook бегал по специальному закрытому протоколу.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Irbis (статус: Посетитель), 12 мая 2009, 18:29 [#8]:за гугл я помню, у меня там есть ящик и я бат на него настраивал, все работает спасибо за помощь, вечером дома проверю
 |  
|   | Irbis (статус: Посетитель), 13 мая 2009, 15:30 [#9]:2 Ученый: если вам не трудно, можете мне переслать исходники вашего Indy для Д2009
 у меня наверное он какой то не полный, там нету модуля IdAttachment
 я брал исходники с ихнего сайта, но поставить не смог
 вылазат ошибки, что функции не правильно описаны и параметры не совпадают. вот одна из ошибок в функции Stub_WSALookupServiceBegin в модуле IdWinSock2.pas:
 IdWinsock2.pas(5558): E2033 Types of actual and formal var parameters must be identical
 или в функции TIdStackWindows.HostToNetwork в модуле IdStackWindows:
 L := HToNL(LParts.HighPart);
 говорит что HighPart метод не найден
 я не силен что Indy делает, но сам руками не хочу что то править, так как не уверен что это будет верно
 2 All: может ли кто то чем то помочь?
 |  
|   | Вадим К (статус: Академик), 13 мая 2009, 15:33 [#10]:А зачем брать сорцы с ихнего сайта, если они идут с делфи??? К тому же, от версии к версии разрабы инди иногда так перелопачивают исходники, что за голову берёшся.
 Поэтому я даже не буду удивляться, если мне скажут, что инди, которая хорошо компилируются под 2007, не хочет под 2009.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Irbis (статус: Посетитель), 13 мая 2009, 15:48 [#12]:еще нашел странное есть вот такой метод:
 IdMessage.DoCreateAttachment
 у него 2 параметра. первый типа Tstrings, а второй - TIdAttachments
 но вот создать объект типа TIdAttachments, я не могу
 говорит нету такого типа...
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |