-
Добрый день
вот фрагмент программы
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
Помогите разобраться с проблемой
-
а что в качестве smtp-сервера используется?
-
а для smtp-relay 550 это имеет какое-то значение? какое?
-
в качестве smtp-сервера используется microsoft exchange 2010
-
-
Включен, но схема такая: внутренная пересилка не требует аутентификацию, а внешняя требует. Ниже привожу параметры сервера
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) но пока безрезультатно.
Тема (прием и передача мейлов из программы на Дельфи) для меня новая. Пиходится учиться в ходе написания программы, так что простите если что-то будет непонятно и буду переспрашивать.
-
попробуй еще msg.Sender = msg.From
-
Не помог. Мейл не посылается
-
Какое значение нужно для IdSMTP.AuthType в моем случае satSASL или satDefault? Ведь всё дальнейшие установки зависят от этого.
-
-
Всем спасибо за советы. Заработало
|