Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
15-11-2007 05:25
Проблема вообще-то в ДНК.
Вместо адреса "SMTP.Host:='127.0.0.1';" нужно прописывать нормальный "белый" IP-адрес, набрав который в любом интернет-кафе в браузере попадеш на именно свой сервер.
Адрес 127.0.0.1, он же localhost - это просто обращение к своему компьютеру через указанный порт.
P.S. Ну это, конечно, если вы не хотите настроить почтовик, чтобы саму себе на компьютер письма не слать :), правда все равно порты протоколов разные.
27-08-2007 16:57 | Сообщение от автора вопроса
Пробовал и другие адреса тоже самое. А этот адрес взят с другого примера.
Я применил пример встроенного SMTP сервера из выложенного примера
и добавил Почтового клиента для отправки писем.
Где я допустил ошибку программа виснит или не отправляет письмо адресату.
Прошу Помощи.
procedure TForm1.IdSMTPServer1CommandAUTH(AThread: TIdPeerThread;
const CmdStr: String);
begin
// This is where you would process the AUTH command - for now, we send a error
AThread.Connection.Writeln(IdSMTPServer1.Messages.ErrorReply);
end;
procedure TForm1.IdSMTPServer1CommandCheckUser(AThread: TIdPeerThread;
const Username, Password: String; var Accepted: Boolean);
begin
// This event allows you to 'login' a user - this is used internall in the
// IdSMTPServer to validate users connecting using the AUTH.
Accepted := False;
end;
procedure TForm1.IdSMTPServer1CommandQUIT(AThread: TIdPeerThread);
begin
// Process any logoff events here - e.g. clean temp files
end;
procedure TForm1.IdSMTPServer1CommandX(AThread: TIdPeerThread;
const CmdStr: String);
begin
// You can use this for debugging :)
// It should be noted, that no standard clients ever send this command.
end;
procedure TForm1.IdSMTPServer1CommandMAIL(const ASender: TIdCommand;
var Accept: Boolean; EMailAddress: String);
Var
IsOK : Boolean;
begin
// This is required!
// You check the EMAILADDRESS here to see if it is to be accepted / processed.
IsOK := False;
if Pos('@', EMailAddress) > 0 then // Basic checking for syntax
IsOK := True;
// Set Accept := True if its allowed
if IsOK then
Accept := True
Else
Accept := False;
end;
procedure TForm1.IdSMTPServer1CommandRCPT(const ASender: TIdCommand;
var Accept, ToForward: Boolean; EMailAddress: String;
var CustomError: String);
Var
IsOK : Boolean;
begin
// This is required!
// You check the EMAILADDRESS here to see if it is to be accepted / processed.
// Set Accept := True if its allowed
// Set ToForward := True if its needing to be forwarded.
IsOK := False;
if Pos('@', EMailAddress) > 0 then // Basic checking for syntax
IsOK := True
Else
CustomError := '500 No at sign'; // If you are going to use the CustomError property, you need to include the error code
// This allows you to use the extended error reporting.
// Set Accept := True if its allowed
if IsOK then
Accept := True
Else
Accept := False;
end;
procedure TForm1.IdSMTPServer1ReceiveRaw(ASender: TIdCommand;
var VStream: TStream; RCPT: TIdEMailAddressList;
var CustomError: String);
begin
// This is the main event for receiving the message itself if you are using
// the ReceiveRAW method
// The message data will be given to you in VSTREAM
// Capture it using a memorystream, filestream, or whatever type of stream
// is suitable to your storage mechanism.
// The RCPT variable is a list of recipients for the message
end;
procedure TForm1.IdSMTPServer1ReceiveMessage(ASender: TIdCommand;
var AMsg: TIdMessage; RCPT: TIdEMailAddressList;
var CustomError: String);
begin
// This is the main event if you have opted to have idSMTPServer present the message packaged as a TidMessage
// The AMessage contains the completed TIdMessage.
// NOTE: Dont forget to add IdMessage to your USES clause!
procedure TForm1.IdSMTPServer1ReceiveMessageParsed(ASender: TIdCommand;
var AMsg: TIdMessage; RCPT: TIdEMailAddressList;
var CustomError: String);
begin
// This is the main event if you have opted to have the idSMTPServer to do your parsing for you.
// The AMessage contains the completed TIdMessage.
// NOTE: Dont forget to add IdMessage to your USES clause!
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.