|
Вопрос # 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, я не могу
говорит нету такого типа...
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|