2009-05-31 2 views
5

어떤 방법 으로든 MVC에 이 있으면 Send Send 메서드 대신 System.Net.Mail SendAsync가 작동합니까?ASP.NET MVC : SendAsync (System.Net.Mail)를 사용하여 전자 메일 보내기

"비동기 작업을 시작한 페이지가 비동기 속성을 가져야합니다"라는 오류가 발생했습니다. @Page 지시문이있는 ASPX 페이지가 없기 때문에 분명히 해결할 수 없습니까? Async 속성을 추가 할 수있는 곳.

도움에 감사드립니다 :(당신이 Asynchronous support for ASP.NET MVC을 원하는처럼

답변

1

당신은으로 이메일을 넣어 고려할 수 있습니다 데이터베이스 테이블에 저장하고 대기열을 처리하여 전자 메일을 보내는 데몬을 가지고 있습니다.

a) if youre not sending billions of emails you can have a log of what you sent 
b) you can resend if something fails. 

은 이러한 이메일이 얼마나 중요한지에 달려 있지만 비즈니스 관점에서 중요하고 반드시 잃어 버리지 않아야한다면이 방법을 사용해야합니다.

+0

@downvoter :-(비동기하는 동안 변환 오랜 시간을 보낸 이후 이런 짓을 기억 물론 - URM 그래서 메일 서버가 다운되거나 액세스 할 수없는 것입니다 경우 당신은? 메일을 잃고 싶습니다. –

+0

+1 - Simon, 이것은 제가 성공적으로 연습 한 올바른 원칙입니다. 또한 SMTP 서버에 대한 단일 연결 및 관심사를 분리하는 데 도움이됩니다 (우리는 응용 프로그램 보안을 사용자 정의하여 허용 된 응용 프로그램을 필터링합니다 WCF 서비스 사용). – Russell

2

Gmail과 같은 타사 서비스를 사용하여 이메일을 보내고 SendEmail 또는 SendAsync에 의존하는 경우 자체 SMTP 서버를 설정하여 Gmail에 릴레이 할 수 있습니다. 이점은 SendEmail이 훨씬 빨리 돌아오고 전체 비동기 문제를 잊을 수 있다는 것입니다.

그런 이유로 gmail이 어떤 이유에서든 당신을 거절하면 이메일은 여전히 ​​로컬 대기열에 있습니다.

다소 안정적인 이메일 전송 설정을 얻는 빠르고 쉬운 방법입니다.

Instructions (not personally tested, but i did this years ago*) 또는 see this for Windows 7

* 난 단지 내가