2016-10-09 17 views
0

ActionManager에있는 작업을 사용하여 클라이언트에 전자 메일을 보내려면 DBGrid입니다.TIdSMTP 및 TIdMessage를 사용하여 전자 메일 보내기

클라이언트 세부 정보가 DBGridrow을 선택하고 마우스 오른쪽 버튼을 클릭 한 후 Popupactionbar이 나타나면 메일 보내기 동작을 클릭하고 메일을 보내야합니다.

procedure TForm2.actSendEmailExecute(Sender: TObject); 
begin 
IdSMTP1.Host := 'smtp.mail.yahoo.com'; 
IdSMTP1.Port := 465; 

//setup mail message 
IdMessage1.From.Address := 'my email address is here'; 
IdMessage1.Recipients.EMailAddresses := DBGrid1.DataSource.DataSet['email']; 
IdMessage1.Subject := 'test subject'; 
IdMessage1.Body.Text := 'test email body' + DBGrid1.DataSource.DataSet['details']; 

//send mail try 
IdSMTP1.Connect ; 
IdSMTP1.Send(IdMessage1) ; 
IdSMTP1.Disconnect; 
end; 

내가 TIdSMTPTIdMessage (인디 구성 요소)를 사용하고 있습니다 :

는 메일 전송 조치에 대한 코드입니다. Object Inspector를 사용하여 TIdSMTP Properties에서 호스트 이름, 포트, 사용자 이름 및 암호를 설정했습니다. 모든 세부 정보는 야후가 제공 한 웹 사이트 (호스트 이름, 포트, 로그인 용 전자 메일 및 로그인) 및

내가 선택한 행에서 DBGrid 거기에 클라이언트의 메일 주소가 들어있는 전자 메일이라는 필드가 있으므로 전자 메일을 보내야합니다. 또한 이메일의 본문 섹션에 들어있는 details라는 필드에 몇 가지 정보를 추가합니다. 위의 코드를 참조하십시오.

소프트웨어를 시작한 후에 DBGrid의 행을 선택하고 send를 누르십시오. 작업 버튼에서 소프트웨어는 다음과 같은 오류 메시지를 반환하는 것보다 약 20-40 초 정도 얼어서 (응답하지 않음) 연결이 정상적으로 종료되었습니다. 난 그냥, 내가 결국 (DB를도 위치 등) 내 웹 사이트를 호스팅 내 호스팅 제공 업체의 SMTP

인디 버전 10.6.2.5311 을 사용하는 것입니다 물건을 테스트하기 위해 야후 SMTP를 사용하고

Delphi 10 사용 시애틀

내가 지금까지 잘못하고있는 것에 대한 생각은 무엇입니까?

답변

1

누락 된 SSL 라이브러리와 관련이 있습니까? 포트 465를 사용하고 있음을 알 수 있습니다. SSL 연결에 대한 것이 아닙니까?

나는 TIdSMTP 구성 요소를 한번도 사용해 보지 못했지만, TIdHTTP 구성 요소와 비슷한 상황이 발생했습니다 (SSL 연결을 사용하려고 시도 할 때 TIdHTTP 구성 요소와 연결이 시간 초과되는 이유는 확실하지 않습니다). 적절한 DLL을 사용할 수있게되었습니다. 그것들은 인디의 불가분의 일부는 아니지만 (일부 국가에서는 암호화의 사용에 관한 법적 문제라고 생각합니다) 그러나 그들은 다른 곳에서 자유롭게 사용할 수 있습니다.

편집 : 구성 요소에도 "UseTLS"속성이 설정되어있을 수 있습니다.

+0

Dunno, 야후가 그 ​​호스트 이름에 사용한다고 말한 이유는이 포트를 사용하고 있습니다. 그 도서관을 어디서 구할 수 있는지, 그리고 그 도서관을 어디에 둘 필요가 있을까? – Petzy

+0

인디 자신의 웹 사이트는 http://www.indyproject.org/sockets/ssl.en.aspx에서 다운로드 할 수있는 하나의 세트로 연결됩니다. 그들은 실행 파일과 함께 디렉토리에서 작동합니다. 둘 중 하나를 선택하거나 위치를 선택하고 기본 경로에 추가하십시오. – Owen

+0

그 거대한 목록 중 어느 것을 사용했는지 알고 싶습니까? 나는 목록에서 마지막을 얻었지만 그렇게하지는 않았다. 인디 버전은 10.6.2.5311입니다. 1.0.2h와 1.0.2j로 시도한 Delphi 10 Seattle을 사용하고 있습니다. 또한 UseTLS 옵션에 주목했습니다. 현재 기본적으로 utNoTLSSupport로 설정되어 있습니다. 다른 옵션 (명시 적, 암시 적 또는 요구 사항)을 시도하면 IDE에 다음과 같은 오류가 즉시 발생합니다.이 설정에는 SSL IOHandler가 필요합니다. – Petzy