2009-03-30 4 views
7

많은 응용 프로그램은 사용자가 응용 프로그램의 전자 메일 알림에 응답 할 수있는 편리한 기능을 제공합니다. 응답은 응용 프로그램으로 다시 slurped됩니다.전자 메일 메시지를 응용 프로그램의 입력으로 받아들이 기위한 지침

예를 들어 고객 지원 시스템을 구축하는 경우 전자 메일에는 응답을 올바른 서비스 티켓에 다시 연결하는 토큰이 포함되어있을 수 있습니다.

이러한 유형의 시스템을 구현하기위한 지침, 힌트 및 팁은 무엇입니까? 알고 있어야 할 몇 가지 잠재적 함정은 무엇입니까? 이런 시스템을 구현 한 사람들은 그들의 지혜를 공유 할 수 있기를 바랍니다.

답변

10

일부 지침 및 고려 사항 :

주소 질문 : 가장 좋은 것은 이메일 (myaddr**+custom**@gmail.com) 주소의 "+"확장 부분을 사용하는 것입니다. 이렇게하면 경로를 쉽게 지정할 수 있지만 무엇보다도 시스템에 대한 주소 라우팅을 추적하기가 쉽습니다. 다른 기술은 제목의 토큰을 사용합니다.

스팸 : 스팸 처리를 앱 외부에서 수행하고 헤더 기반의 앱 필터를 사용합니다.

대기열에 오류가 발생했습니다. : 대부분은 그렇지 않습니다. 표준 전자 메일 동작은 최대 3 일 동안 메시지 배달을 시도하는 것입니다. 애플리케이션 이메일 서버의 경우, 처리하지 않는 메일의 거대한 스풀 파일이 생성됩니다. 오류 원인이 통제 범위를 벗어나는 경우에만 대기열 메시지를 보냅니다 (예 : 서버가 다운 됨).

유효하지 않은 메시지 처리 : 메시지가 유효하지 않을 수있는 여러 가지 방법이 있습니다. 일부는 라이브러리의 제한 사항입니다 (RFC 유효 패키지 인 경우에도 주소를 구문 분석 할 수 없음). 다른 것은 클라이언트 깨짐 (예 : 특정 헤더 주변의 따옴표 생략) 때문입니다. 다른 것들은 너무 커서, 알려지지 않은 인코딩을 사용하거나, 중요한 헤더를 놓치거나, 하나만 있어야하는 곳에 여러 개의 값을 가지거나, 응용 프로그램에 특정한 의미를 위반하는 등의 것들이있을 수 있습니다. Java mail API 예외를 던질 수있는 경우 오류 처리 은 적절하게 처리하는 방법을 결정해야합니다.

오류 응답 : 모든 오류가 응답 할 수있는 것은 아닙니다. 일부는 스팸으로 인해 생성되므로 해당 주소로 메시지를 보내지 마십시오. 다른 시스템은 자동화 된 시스템 (사용자, 부재중 자동 응답 시스템, 다른 응용 프로그램 메일 시스템 등)에서 온 것이고 회신을 보내면 다른 메시지를 보내주기를 반복합니다.

클라이언트 특정 해킹 : 위와 마찬가지로 각 클라이언트는 코드를 복잡하게 만드는 약간의 차이점이 있습니다. 메시지의 구조를 탐색 할 때 언제나 이것을 명심하십시오.

발신자는 응답 및 루프 : 귀하의 상황에 따라, 당신은 다음 소스 중 일부에서 메일을받을 수 있습니다

  • 실제 사람, 아마도 외부 소스에서
  • 메일 링리스트
  • 을 자신 또는받는 사람 주소 중 하나
  • 다른 메일 서버 (반송, 실패 등)
  • 다른 시스템의 엔터티 (my- [email protected], 시스템 모니터 @ 로컬 호스트)
  • 별칭 이제

에 위의

  • 별칭 중 하나의 별명은, 첫 번째 본능은 자동화 시스템 아마도 "정확한 소스에서 온 메일 만 수락합니다!"라고 말하면서, 사람들이 가장 까다로운 것들을 응용 프로그램 메일 서버로 보낼 것이므로 두통이 많이 생길 것입니다. 모든 것을 받아들이고 명시 적으로 예외를 거부하는 것이 더 나은 것으로 나타났습니다.

    디버깅 :받은 메시지의 헤더 사본을 저장하십시오. 문제가 발생하면 언제든지 도움이 될 것입니다.

    --Edit--

    나는 rossfabricant 언급 확장 가능한 웹 사이트를 구축, 책을 샀다. 좋은 이메일 섹션이 있습니다. 무선 통신 사업자로부터 전자 메일을 처리하고 전자 메일을 인증하는 것에 관한 두 가지 중요한 점이 있습니다.

  • 2

    누군가가 '답장'을 누르면받는 사람 : 주소에 넣을 주소를 설정할 수 있습니다. 이를 고유하게 만들면 출처와 출처를 말할 수 있습니다.

    '뭔가를 여기'에 붙이면 - 메일에 답장하도록 초대하십시오. 필자는 전자 메일 캡처 기능을 사용하여 '회신하지 않는다'라는 주요 웹 응용 프로그램을 보았습니다.

    +0

    독특한 회신에 대한 접근 방식은 메일 서버 설치와 유연성의 공정한 금액을 가정 보인다. 어쩌면 다른 사람들은 메일 서버를 제한적으로 제어 할 수 있다면이 방법과 대안을 경험할 수 있습니다. 아니면이 접근법에 대한 요구 사항을 오해 할 수도 있습니다. – Larsenal

    +1

    당신은 약간의 통제가 필요합니다 - 적어도 적당한 메일 서버는 실행 중입니다. 예를 들어 Postfix는 '+ 주소 지정'을 허용하므로 [email protected]은 [email protected]과 동일한 계정으로 이동합니다. 도착할 POP3 계정을 읽는 것만으로도 고유 한 참조를 얻을 수 있습니다. –

    1

    편집 : 질문에 잘못 이해했습니다.

    전자 메일 서버를 포괄적으로 구성하고 고유 한 회신 주소를 생성 할 수 있습니다. 예 : [email protected]

    서버의 폴링 프로세스가받은 편지함을 읽고 해당 전자 메일에서 관련 부분을 파싱 할 수 있습니다. CS-2343434는 고객 지원 티켓 번호를 의미 할 수 있습니다. 2343434입니다.

    JavaMail API을 사용하여 구현했습니다.

    그냥 생각해보십시오.

    +0

    이것은 정확히 내가 말하고있는 유형이 아닙니다. 나는 Outlook에서 "답장"을 클릭하고 전자 메일 응답에 귀하의 응용 프로그램을 슬퍼시키는 것을 생각하고 있습니다. 귀하의 대답은 의미있는 특정 URL을 전자 메일 메시지에 포함시키는 아이디어를 보여줍니다. – Larsenal

    0

    보스는 이메일 자체에 대기열과 티켓 ID를 포함 꽤 좋은 시스템을 가지고 있습니다.

    내 회사는 제목에 기존 Case #을 가지고 있지만 사례를 만들 때 제목 줄에 특정 문자열 "New Case" "Tech Support Issue"가 있어야 스팸 필터를 통과 할 수 있습니다.

    이메일이 작성 또는 업데이트 의미론과 일치하지 않는 경우 자동 응답 기능을 통해 수신자에게 전자 메일을 올바르게 보내는 방법을 보여 주거나 포럼이나 웹 지원 사이트로 안내 할 수 있습니다.

    스팸 문제를 제거하는 데 도움이되지만 아직 이메일 의존도가 높은 광범위한 기술 잠재 고객이 계속 액세스 할 수 있습니다.

    0

    스팸은 약간 우려 될 것입니다. 그러나 대화를 시작한 이후 고유 한 식별자 ("Trouble ticket : 웹에 로그인 할 수 없습니다 ... [artf123456]"이라는 제목을 사용하는 것을 선호합니다)를 사용하여 스팸을 걸러 낼 수 있습니다. 회신 할 때 일부 사람들이 주제를 맹 글링하기 때문에 때때로 필터를 확인하십시오.

    0

    이메일은 잘못된 표준 및 깨진 고객의 폐물입니다. 거의 모든 것을 입력으로 받아 들일 준비가되어 있어야합니다. 어떤 유형의 입력이 용인되는 지에 대해 매우 용인해야합니다. 프로그램하기 쉬운 것은 사용자가 올바르게 사용할 수 없을 것입니다. 제목 줄에 명령을 입력해야하는 이전 메일 링리스트 프로그램을 고려하십시오. 오직 하드 코어 바보들이 효과적으로 그것을 사용할 수 있습니다. 그리고 언급 한 문제 티켓 CRM 중 일부는 사용자가 텍스트의 두 특정 텍스트 표시 자 사이에 회신하도록하는 등 기괴한 요구 사항을 가지고 있습니다. 그런 종류의 일은 사람들에게 혼란 스럽습니다.

    일반 텍스트 대신 형식이 지정된 텍스트를 보내는 이메일 클라이언트를 처리해야합니다. 일부 이메일 클라이언트는 여전히 HTML (기침 Gmail)을 제대로 처리하지 않으므로 회신도 적절하게 설계해야합니다. 사진이 이메일을 통해 "업로드"될 수있는 다양한 방법이 있습니다. 특히 휴대 전화가 관련되어있을 때 그렇습니다. 이러한 상황을 처리하려면 다양한 해킹 및 추론을 구현해야합니다.

    사용중인 이메일 파싱 라이브러리에서 유효하지만 사용할 수없는 이메일을받을 수도 있습니다. 이것이 자신을 돌릴만큼 중요한지 아닌지는 판결 요청이 될 것입니다.

    마지막으로 다른 사람들은 "대화"를 고유하게 식별하기 위해 특정 전자 메일 주소를 사용한다고 언급했습니다. 메일 내용이 클라이언트 왕복 여행에서 생존하지 못하는 경우가 많으므로이 방법이 가장 쉽습니다. 그러나 새 티켓을 여는 대신 이전 티켓에 회신하는 기존 고객의 구형 ID로 메일을 보내도록 준비하십시오. 응용 프로그램은 이전 ID가있는 전자 메일을 수동 또는 자동으로 새 사례에 푸시 할 수있는 방법이 필요할 것입니다. CRM 시스템의 경우 이미 사용자가 새 전자 메일로 새 전자 메일을 보낸 경우에도 사용자가 기존 전자 메일에 회신 할 가능성이 큽니다. [email protected]을 사용해야하는지 아니면 [email protected]을 사용해야하는지 여부에 관해서는 더하기 기호가 일부 이메일 클라이언트를 혼란스럽게하기 때문에 후자와 함께 가고 싶습니다. 귀하의 ID를 guid 또는 무언가를 확인하고 (CRC 또는 뭔가와 같은) 그 (것)들을 유효하게하는 어떤 방법이 있으십시오 당신은 더 적은 쓰레기를 얻을 것이다. 인간은 결코 GUID를 입력 할 필요가 없습니다. 단점은 스팸 필터링입니다. 사용자의 컴퓨터는 그러한 전자 메일 주소를 스팸으로 볼 수 있으며 쉽게 주소를 허용 할 수는 없습니다.

    나를 기억 나게한다. 요즘 이메일을 보내는데 함정이 가득하다. 많은 스팸 방지 기술로 인해 고객에게 전자 메일을 보내는 것이 매우 어렵습니다. 이 모든 것을 조사 할 필요가 있으며 중요한 전자 메일 공급자에게 연락 할 수 있도록주의 깊게 테스트하고 테스트해야합니다. Campaign Monitor 과 같은 웹 사이트는 이메일을 보내는 경우 도움이 될 수 있습니다.

    1

    메일 클라이언트 [pop3 또는 imap]처럼 작동하는 윈도우 서비스를 작성하는 것이 가장 좋은 방법입니다. 이 Windows 서비스는 메일 서버에 연결하고 이메일받은 편지함에서 사용할 수있는 읽지 않은 메시지가 있는지 서버를 폴링하는 타이머에 의해 트리거 된 시간 제한 조치를 실행해야합니다. 확인할 전자 메일 ID는 사용자가 입력을주고받는 전자 메일 ID입니다. Windows 서비스 클라이언트가 새 메일이 있음을 발견하면 전자 메일 본문을 다운로드 및 필터링하고 전자 메일의 사용자 입력을 기반으로 처리하도록 추가로 푸시해야합니다.동일한 윈도우 서비스에서 입력 처리를 호스팅 할 수는 있지만 그렇게하는 것은 바람직하지 않습니다. Windows 서비스는 주요 응용 프로그램이 전자 메일에서받은 사용자 입력을 읽고 필요에 따라 처리 할 수있는 특수 응용 프로그램 디렉토리 또는 데이터베이스에 입력을 넣을 수 있습니다.

    이렇게하려면 고성능 TCP/IP 클라이언트를 개발해야합니다. 성능 문제로 인해 기본 .Net 라이브러리를 사용하지 말고 kodart의 XF.Server와 같은 .Net 용으로 최상의 availabel 오픈 소스 TCP/IP 구현 중 하나를 사용하는 것이 좋습니다. 우리는 우리의 응용 프로그램에서 이것을 사용하여 현저한 결과를 얻었습니다. 이 도움이

    희망은 ..

    관련 문제