2008-11-10 10 views
5

전자 메일을 보내는 서비스를 구현하기 위해 .NET 및 SQL 2005를 사용하는 몇 가지 아이디어가 있습니까? 전자 메일은 데이터 기반이어야합니다. 전자 메일을 보낼 날짜와 시간은 테이블의 필드입니다.전자 메일 알림 서비스

답변

1

트리거를 사용하여 UPDATE/DELETE/INSERT에서 이메일을 보낼 수 있습니다. 트리거는 .Net으로 구현할 수 있습니다. System.Net.Mail 네임 스페이스의 클래스를 사용하여 메일을 보내면됩니다.

다음은 좋은. article .Net에서 CLR (.Net) 트리거를 구현하는 방법입니다.

경량 SMPT 서버의 경우 지연을 최소화하려면 Kenny's answer에서 권장되는 것을 사용하십시오.

0

같은 과정을 회전. 그러나 SQL Server 2008에서 삭제 된 것으로 보입니다. 아마도 거기에 가고 싶지 않을 것입니다.

2

나는 과거에 데이터 기반 전자 메일을 보내는 데 사용되는 여러 개의 대량 전자 메일 알림 서비스를 구축했습니다. 몇 가지 권고 사항 : 이메일을 보내는 비즈니스에 중요한 경우 등 반송, 구독 취소, ISP 및 블랙리스트 관리, 관리를 전문으로하는 높은 품질의 이메일 서비스 공급자를 사용하여에

  • 봐,하지만 당신의 주요 사업을 그만한 가치가있을거야. 대부분은 템플릿 메시지, 클릭 추적, 개방 속도를 전송하기위한 API를 가지며 트리거 등을 제공합니다.
  • SQL Server Service Broker를보고 실제 메시지를 대기열에 넣으십시오. 그렇지 않으면 Microsoft Message Queuing Services를 고려할 수 있습니다. 자체 대기열 서비스를 작성할 필요가 없습니다. 이미 해결 된 인프라 스트럭처 코드를 처리하는 데 너무 많은 시간을 소비했습니다.
  • 비즈니스 계층에서 이러한 메시지를 트리거하고 비동기 적으로 대기열에 넣을 수있는 유연한 이벤트 집합을 개발하면 DB에서 폴링하거나 해킹하는 것과 달리 장기적으로 큰 불행을 줄일 수 있습니다. in 데이터베이스 트리거.
1

의견에 감사드립니다. 간단하게하기 위해 나는 전송할 미리 알림을 검색하고 sp_ send_ dbmail (SQL Database Mail)을 사용하여 전자 메일을 보내는 SP를 시작했습니다. 이것은 1 분마다 작업을 실행합니다. 미리 알림이 sp_ send_ dbmail에서 다시 전송 된 MailItemId와 함께 전송되었음을 나타내는 레코드를 업데이트합니다. 리마인더의 양은 하루에 10^2 범위에서 최악입니다.

저는 사람들이이 솔루션이 가지고 있다고 생각하는 모든 단점에 대한 의견을 듣고 싶습니다.

그런데 비스타가 로컬 SMTP 서버와 함께 제공되지 않는다고 나는 믿을 수 없다! 다행히도 Google은 더 관대하며 테스트를 위해 Gmail의 서버를 사용했습니다.