2009-12-24 2 views
0

테스트 애플리케이션을 개발 중이며 모든 것을 내 PC에서 실행하고 있습니다. 회사 메일 서버를 사용하여 메일을 보내고 있습니다. 정상적으로 잘 작동합니다. 나는 메일 서버가 내 PC에서 접근 할 수없는 것과 같은 어떤 조건을 처리하는 방법을 궁금해했다. 필자가 그것에 대해 읽었을 때, 레일 어플리케이션은 메일을 보낸다. 메일이 수신자에게 도착했는지, 수신자 메일 ID가 맞는지 등을 알 수있는 방법이 없습니다. 이 시나리오를 처리하는 방법에 대한 의견이 있으십니까? 감사합니다 및 감사합니다, Anjalirails 또는 actionmailer에서 상태를 보냈습니다.

답변

1

두 가지 문제를 함께 섞어서 사용한다고 생각합니다. 실제로는 전혀 관련이 없습니다.

첫 번째 문제 - 회사 메일 서버 (이 경우 메일 릴레이)에서 전자 메일을 수락했는지 확인하는 것이 첫 번째 문제입니다. 이 문제를 해결하기 위해 로컬 큐 (데이터베이스, 큐 서버 등)를 빌드하고 별도의 작업자 프로세스로 보내면 큐에서 각 메시지를 가져 와서 전달하고 삭제합니다. 메일 릴레이에 의해 승인 된 경우에만.

프로세스의 저수준 수동 제어가 필요하지 않은 경우 간단한 로컬 메일 서버를 컴퓨터에 설치하고 회사 메일 릴레이로 직접 전자 메일을 보내는 경우에는 로컬 메일 서버. 그러면 이메일이 회사에 제대로 전달되었는지 확인합니다.

그러나 두 경우 모두 당신이 메시지가 최종 수신자에게 전달 된 위치에 대한 정보를받지 않습니다 - 전자 메일 주소가 유효 여부, 사용자의 사서함이 가득 아니었다 등을 등

두 번째 문제 - 메일 배달 오류를 추적합니다.이 문제를 적절하고 완벽하게 해결하려면 원격 서버에서 반송 된 모든 메일을 캐치하고 분석해야합니다. 전자 메일을 보낼 때 알 수없는 많은 오류가 있지만 나중에 메일 형식으로 반환됩니다 튀어 오릅니다. 이 바운스를 잡아서 추적하면 가득 차있는 편지함, 잘못된 이메일, 일시적인 배달 실패 등의 오류를 잡을 수 있습니다.

메일 목록 관리 소프트웨어에서 수행되는 방식입니다. 예를 들어 phpList는 정확히 같은 방식으로.

0

나는이 문제에 대해 생각했다. 내 생각은 "mailqueue"라는 별도의 모델에 메시지를 저장 한 다음 기업 메일 서버를 사용할 수있는 경우에만 해당 메일 대기열에서 메시지를 가져오고 삭제하는 루비 스크립트를 실행하는 것입니다 (이미이 코드를 가지고 있으며, 나는 믿는다). 물론, 더 좋은 방법이 있다면, 나는 그것을 환영 할 것입니다.

+0

물론입니다. 이 작업을 직접 수행 할 필요는 없습니다. 이미 많은 메일 대기열이 있습니다. 모든 중요하지 않은 SMTP 서버는 다음과 같은 작업을 수행합니다. – radiospiel

+0

충분합니다. 확실히 그 길로 가야합니다. 비록 어떤 이유로 든 제가 위에 언급 한 이유가 있습니다. . . – Rilindo

+0

걱정할 필요가 없습니다. 우리는 최근 직장에서 토론을 가졌습니다. 누군가가 이메일을 보관할 수 있도록 대기열을 구현하여 나중에 전송할 수 있도록 제안했을 때였습니다. 메일을 생성하는 것이 문제가된다면 (예를 들어, 모델을 최종 이메일로 변환하기위한 코드), 대기열은 확실히 * 길일 것입니다. 사람들은 종종 delayedjob 또는 resque를 사용합니다.) – radiospiel

관련 문제