Страница 1 из 1

Отправка почты из Delphi

Добавлено: 30 сен 2004, 19:10
Пацак с планеты Земля
Проблема. не могу отправить письмо из программы. Код такой:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
NMSMTP1.Host := 'mail.ru';{Сервер отправки}
NMSMTP1.UserID := 'zma23@mail.ru';{Учётная запись на сервере}
NMSMTP1.Connect;{Соединение}
NMSMTP1.PostMessage.FromAddress:= 'zma23@mail.ru';{От кого}
NMSMTP1.PostMessage.ToAddress.Text:= 'zma@uuh0.bank.gov.ua';{Кому}
NMSMTP1.PostMessage.Body.Text:= memo1.Text;{Текст сообщения}
NMSMTP1.PostMessage.Subject:='Проверка!';{Тема}
NMSMTP1.PostMessage.Date:='27.01.04' ;{Дата}
NMSMTP1.PostMessage.localprogram:='Microsoft Outlook';{Прога отправки} { Эта строка вообще нужна? }
NMSMTP1.SendMail;{Отправка}
NMSMTP1.Disconnect;{Отсоединение}
end;
В итоге получаю такую АШЫПКУ:
project project1.exe raised exeption class ESockError with message "Connection Failed".
Подскажите пож-та в чем проблема.
Спасибо за ответы.

Добавлено: 01 окт 2004, 00:06
AiK
Пацак с планеты Земля, проблема исключительно в поставщике услуг. Ты в отуглюке давно через мыло.ру почту успешно отправлял?

Добавлено: 01 окт 2004, 10:25
Пацак с планеты Земля
AiK, ваще, если честно никогда. Этого поставщика выбрал в качестве тестового, т.к. у меня там ящик есть, если можно посоветуй того, у кого єто будет работать.

А еще в Delphi на закладке Servers есть компонет "MailItem". Как я понимаю, создается COM объект, через который тоже можно письмо отправить. В PHP это делается элементарно, а в Делфях я с этим никогда не работал и пока разобраться не могу. Может кто чего подскажет?

Добавлено: 05 окт 2004, 12:25
Пацак с планеты Земля
Кому интересно, проблема решилась! Проще всего сделать так:

Код: Выделить всё

const 
  // OlItemType constants 
  olMailItem = 0; 
  olAppointmentItem = 1;
  olContactItem = 2; 
  olTaskItem  = 3; 
  olJournalItem = 4; 
  olNoteItem = 5; 
  olPostItem = 6; 
  // OlAttachmentType constants 
  olByValue = 1; 
  olByReference = 4; 
  olEmbeddedItem = 5; 
  olOLE = 6; 

var 
  myOlApp, myItem, myRecipient, myAttachments: OleVariant; 
begin 
  myOlApp := CreateOLEObject('Outlook.Application'); 
  myItem := myOlApp.CreateItem(olMailItem); 
  myItem.Subject := 'Das Ist Test';
  myRecipient := myItem.Recipients.Add('адрес получателя');
  // Прикрепляем к письму файлы
  myAttachments := myItem.Attachments;
  myAttachments.Add('C:\1.txt', olByValue, 1, '1.txt');
  myItem.Send;
  myOlApp := VarNull;
  myItem := VarNull; 
  myRecipient := VarNull; 
  myAttachments := VarNull; 
end; 
Правда единственная проблема: если офис новый, то Outlook начинает матюкаться, что к нему пытается получить доступ другая программа. Приходится лишние кнопки нажимать.