Конференция "Сети" » Не отправляется мейл на внешный адрес [WinXP]
 
  • gog © (03.09.14 15:48) [0]
    Добрый день

    вот фрагмент программы

    procedure TTestThread.Execute;
    var
     IdSMTP: TIdSMTP;
     Msg: TIdMessage;
    begin
     try
       Msg:= TIdMessage.Create(Nil);
       Msg.ContentType:= 'text/plain';
    //    Msg.ContentType:= 'text/rtf';
       Msg.CharSet:= IdCharsetNames[idcs_UTF_8];
       Msg.Encoding:= meMIME;
       Msg.Body.Clear;
       Msg.Body.Add('Test mail');
     except
       on E:Exception do begin
         ShowMessage('Can not create mail object' + Chr(13) + E.Message + Chr(13) +
                     'Application will be terminated');
         SendMessage(FHandle, FMsg4, ThreadID, 0);
         Exit;
       end;
     end;

     IdSMTP:= TIdSMTP.Create(Nil);
     with IdSMTP do begin
       try
         Host:= 'smtp.some_host';
         Port:= 25;
         Username:='my_username';
         Password:='my_password';
         Connect;
       except
         on E:Exception do begin
           ShowMessage('Can not connect to mail server' + Chr(13) + E.Message + Chr(13) +
                       'Application will be terminated');
           SendMessage(FHandle, FMsg4, ThreadID, 0);
           Exit;
         end;
       end;
     end;

     try
       IdSMTP.Authenticate;
     except
       on E:Exception do begin
           ShowMessage('Can not Authenticate user' + Chr(13) + E.Message + Chr(13) +
                       'Application will be terminated');
           SendMessage(FHandle, FMsg4, ThreadID, 0);
           Exit;
         end;
     end;

     try
       msg.Subject:='Daily Report (Test)';
       msg.From.Address:='my_address';

       msg.From.Name:='my_Name';
       msg.Recipients.EMailAddresses:='Some_Address';
       msg.IsEncoded:=True;
       IdSMTP.Send(msg);
       msg.Free;
       IdSMTP.Disconnect;
       IdSMTP.Free;
     except
       on E:Exception do begin
         ShowMessage('Can not send mail' + Chr(13) + E.Message + Chr(13) +
                     'Application will be terminated');
       end;
     end;

     SendMessage(FHandle, FMsg4, ThreadID, 0);
    end;

    Когда msg.Recipients.EMailAddresses:='Some_Address'; указывает внутрерый адрес, письмо отправляется, а вот на внешные адреса (***@mail.ru к примеру) получаю сообщение Unable to relay

    Помогите разобраться с проблемой
  • junglecat (03.09.14 16:12) [1]
    а что в качестве smtp-сервера используется?
  • куку (03.09.14 21:16) [2]
    а для smtp-relay 550 это имеет какое-то значение?
    какое?
  • gog © (04.09.14 10:16) [3]
    в качестве smtp-сервера используется microsoft exchange 2010
  • junglecat (04.09.14 10:42) [4]
    > [3] gog ©   (04.09.14 10:16)

    скорей всего, там не включен релэй во внешку
    http://exchangeserverpro.com/how-to-configure-a-relay-connector-for-exchange-server-2010/
  • gog © (04.09.14 13:25) [5]
    Включен, но схема такая: внутренная пересилка не требует аутентификацию, а внешняя требует. Ниже привожу параметры сервера

    Server: Microsoft Exchange Server 2010

    Basic Authentication
    Exchange Server Authentication
    Integrated Windows Authentication

    SMTP Server Details:

    220 ---- Microsoft ESMTP MAIL Service ready at ------
    ehlo

    250-SIZE
    250-PIPELINING
    250-DSN
    250-ENHANCEDSTATUSCODES
    250-STARTTLS
    250-X-ANONYMOUSTLS
    250-AUTH NTLM
    250-X-EXPS GSSAPI NTLM
    250-8BITMIME
    250-BINARYMIME
    250-CHUNKING
    250-XEXCH50
    250-XRDST
    250 XSHADOW

    У меня проблема как раз аутентификации. Команда
    IdSMTP.Authenticate;
    все время возвращает False.
    Перепробовал IdSMTP.AuthType для всех возможных значений (Соответственно подключал IdSMTP.SASLMechanisms) но пока безрезультатно.

    Тема (прием и передача мейлов из программы на Дельфи) для меня новая. Пиходится учиться в ходе написания программы, так что простите если что-то будет непонятно и буду переспрашивать.
  • junglecat (04.09.14 13:42) [6]
    попробуй еще
    msg.Sender = msg.From
  • gog © (04.09.14 14:15) [7]
    Не помог. Мейл не посылается
  • gog © (04.09.14 14:38) [8]
    Какое значение нужно для IdSMTP.AuthType в моем случае satSASL или satDefault? Ведь всё дальнейшие установки зависят от этого.
  • junglecat (04.09.14 15:03) [9]
  • gog © (05.09.14 13:10) [10]
    Всем спасибо за советы. Заработало
 
Конференция "Сети" » Не отправляется мейл на внешный адрес [WinXP]
Есть новые Нет новых   [134427   +35][b:0][p:0]