Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.03.2012, 18:20
dtestd dtestd вне форума
Прохожий
 
Регистрация: 11.01.2012
Сообщения: 1
Репутация: 10
Печаль Отправка почты windows 7

При отправке возникает ошибка : "Syntactically invalid EHLO argument(s)", но на windows XP все работает.


Код:
var smtp : TIdSMTP;
    msg  : TIdMessage;
 
begin
  smtp := TIdSMTP.Create(nil);
 
  smtp.AuthenticationType := atLogin;
  smtp.Username := 'xxx@mail.ru';
  smtp.Password := 'password';
  smtp.Host     := 'smtp.mail.ru';
  smtp.Port     := 25;
 
  smtp.Connect;
 
  if smtp.Authenticate then
  begin
    msg := TIdMessage.Create(nil);
 
    msg.Subject := 'Subject';
    msg.Body.Add('Mail body.');
    msg.From.Text := 'xxx@mail.ru';
    msg.Recipients.EMailAddresses := 'xxx@mail.ru';
    smtp.Send(msg);
    smtp.Disconnect;
 
    msg.Free;
  end;
  smtp.Free;

Отправляю так. Подскажите, как отправлять на windows 7 ?
Ответить с цитированием
  #2  
Старый 28.07.2012, 13:27
evgeni777 evgeni777 вне форума
Прохожий
 
Регистрация: 28.07.2012
Сообщения: 3
Репутация: 10
По умолчанию Аналогично

Win 7 x64, delphi 7, indy 10, провайдер beeline (USB модем).
Код аналогичный. Ошибка - syntactically invalid ehlo argument(s) при отправке, но соединение устанавливает по строке, для проверки,
Код:
  try
  showmessage('Подключено');
  IdSMTP1.Send(IdMessage1);

Примерно понятно, что не IdMessage1 не содержит каких-то параметров
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
  IdSMTP, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdMessage1: TIdMessage;
    IdSMTP1:TIdSMTP;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  IdSMTP1.Host:='smtp.mail.ru';
  IdSMTP1.Port:=25;
 IdSMTP1.Username:='*****@mail.ru';
IdSMTP1.Password:='Project1';
//  IdSMTP1.AuthType:=satDefault;
 with IdMessage1 do
     begin
      Body.Assign(Memo1.Lines);
     From.Text := '******@mail.ru';
      Recipients.EMailAddresses := '******@mail.ru';
      Subject := 'Hello';
      ContentType:='text/html; charset=windows-1251';
      ContentTransferEncoding:='8bit';
      end;
   IdSMTP1.Connect;
   try
  showmessage('Ïîäêëþ÷åíî');
  IdSMTP1.Send(IdMessage1);
   finally
      IdSMTP1.Disconnect;
   end;
end;

end.
Отправляю от себя - себе, менял порты, пробовал разные почтовые сервисы, авторизацию - без пользы. После сообщения о ошибке выкидывает в процедуру компонента
Код:
procedure TIdTCPConnection.RaiseExceptionForLastCmdResult;
begin
  LastCmdResult.RaiseReplyError;
end;
Может indy 10 имеет ошибку в исходниках ?
Кому-то помогла смена имени компа на англ. буквы, но у меня изначально англ. имя компа.
Ответить с цитированием
  #3  
Старый 28.07.2012, 13:36
MiraLaklamon MiraLaklamon вне форума
Новичок
 
Регистрация: 07.06.2012
Сообщения: 59
Версия Delphi: 6, 7
Репутация: 10
По умолчанию

Indy вообще загадочные компоненты.
А имя того компьютера, где выскакивает ошибка, случайно не русскими буквами?
Ответить с цитированием
  #4  
Старый 28.07.2012, 14:04
evgeni777 evgeni777 вне форума
Прохожий
 
Регистрация: 28.07.2012
Сообщения: 3
Репутация: 10
По умолчанию Решение

Ебуч*й случай, оказалось, точно - полное имя компа содержит русс. буквы. Поменял и заработало.
Но более аккуратного решения так и не нашел
Ответить с цитированием
  #5  
Старый 28.07.2012, 14:08
MiraLaklamon MiraLaklamon вне форума
Новичок
 
Регистрация: 07.06.2012
Сообщения: 59
Версия Delphi: 6, 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от evgeni777
Ебуч*й случай, оказалось, точно - полное имя компа содержит русс. буквы. Поменял и заработало.
Но более аккуратного решения так и не нашел
Другое решение - использовать другие компоненты.
Ответить с цитированием
  #6  
Старый 28.07.2012, 14:13
evgeni777 evgeni777 вне форума
Прохожий
 
Регистрация: 28.07.2012
Сообщения: 3
Репутация: 10
По умолчанию

LightSMTP ? ICS ? Слушал, но не пользовался - Работают?
Считал, что indy практикой устраняет ошибки и менее известные более глючные, но могу ошибаться



Как и предполагалось - SmtpCli из ICS довольно непонятная штуковина справка без примеров использования, а примеры в сети не работают ...

Последний раз редактировалось evgeni777, 28.07.2012 в 15:31.
Ответить с цитированием
  #7  
Старый 28.07.2012, 19:01
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Используйте win sock и будет вам щасьте.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025