.net으로 SMTP 테스트
이메일 (등록 확인 등)을 보내는 내 웹 사이트를 테스트하기 위해 SMTP 서버를 구성해야합니다.
나는 실제로 이메일이 전송되는 것을 원하지 않으며 내 코드가 올바른지 확인하고 싶습니다. 예를 들어 이메일이 대기열 폴더에 있는지 확인할 수 있기를 원합니다.
누구나 구성하기 쉬운 SMTP 서버를 추천 할 수 있습니까?
또한 메시지를 수신하지만 어디에도 전달하지 않는 SMTP 서버 인 Papercut 도 있습니다 (올바르게 전송되고 있는지 확인할 수 있음). 수신 된 메시지는 작은 GUI에 표시되며 디렉토리에도 기록됩니다.
.NET에서 SmtpClient는 픽업 디렉터리에 배치하여 이메일을 보내도록 구성 할 수 있습니다.
SmtpClient의 기본 생성자는 app.config에서 설정을 가져 오므로 테스트 환경의 경우 다음과 같이 구성 할 수 있습니다.
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="specifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="path to a directory" />
</smtp>
</mailSettings>
</system.net>
</configuration>
MSDN 참조-app.config mailSettings 요소 http://msdn.microsoft.com/en-us/library/w355a94k.aspx
smtp4dev의 프로젝트는 또 다른 더미 SMTP 서버입니다. 메시지를 기록하고 최근 메시지의 내용을 볼 수있는 멋지고 간단한 UI가 있기 때문에 마음에 듭니다. MSI 설치 프로그램을 사용하여 C #으로 작성되었습니다. 소스 코드를 사용할 수 있습니다.
.NET 사람들을 위해. 간단하게.
우리는 이것을 조사하고 있었고 개발자 중 한 명이 이메일 전송 방법을 재정의 할 수있는 구성 설정에 대해 기억했습니다.
이렇게하면 이메일별로 파일이 생성되고 그대로 둡니다.
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="\\SharedFolder\MailDrop\" />
</smtp>
</mailSettings>
</system.net>
블로그 게시물 A Simple SMTP Server Mock for .NET에서 필요한 것을 제공한다고 생각합니다. SMTP 서버 모의
SMTP 서버 모의는 기본적으로 이메일 메시지를 보내는 애플리케이션의 단위 테스트에 사용할 수있는 가짜 SMTP 서버입니다.
또한 smtp 모의 서버에 대한 Google 검색 은 테스트 목적으로 SMTP 서버 선택을 제공합니다. 처럼:
이를 수행하는 또 다른 방법은 동일한 인터페이스를 구현하는 SmtpClient 주위에 래퍼를 만드는 것입니다. 그런 다음 클래스에 래퍼를 주입하고 사용하십시오. 단위 테스트를 수행 할 때 메서드 호출 및 응답을 기대하는 모의 래퍼로 대체 할 수 있습니다.
편집 : SmtpClient가 인터페이스에서 파생되지 않고 가상 메서드가 없기 때문에 래퍼가 필요합니다 (적어도 RhinoMocks의 경우). 가상 메서드없이 클래스를 직접 모의 할 수있는 모의 프레임 워크를 사용하는 경우 래퍼를 건너 뛰고 SmtpClient 모의를 직접 삽입 할 수 있습니다.
public class SmtpClientWrapper
{
private SmtpClient Client { get; set; }
public SmtpClientWrapper( SmtpClient client )
{
this.Client = client;
}
public virtual void Send( MailMessage msg )
{
this.Client.Send( msg );
}
...
}
public class MyClass
{
private SmtpClientWrapper Client { get; set; }
public MyClass( SmtpClientWrapper client )
{
this.Client = client;
}
public void DoSomethingAndNotify()
{
...
this.Client.Send( msg );
}
}
테스트 (RhinoMocks 사용) :
public void DoSomethingAndNotifySendsAMessageTest()
{
SmtpClientWrapper client = MockRepository.GenerateMock<SmtpClientWrapper>();
client.Expect( c => c.Send( new MailMessage() ) ).IgnoreArguments();
MyClass klass = new MyClass( client );
klass.DoSomethingAndNotify();
client.VerifyAllExpectations();
}
-이 발견 http://improve.dk/archive/2010/07/01/papercut-vs-smtp4dev-testing-mail-sending-locally.aspx을 모두 좋은 도구는 종이 공예와 smtp4dev을 사용하는 방법을 설명하는이
응용 프로그램을 여는 것만 큼 쉬운 개발자 용 Antix SMTP 서버를 사용 합니다. 메시지를 폴더에 저장하고 UI로 볼 수 있습니다. 매우 빠르고 쉬운 솔루션입니다. 여기서 언급하고 싶었습니다.
See also: development smtp server for windows
The DevNull SMTP server logs all the gory details about communication between the client and the SMTP server. Looks like it would be useful if you were trying to diagnose why your sending code wasn't working.
It's written in Java and deploys as an executable jar. Source code doesn't seem to be available.
If you are on Mac OS X you can use MockSMTP.app
You can also use netDumbster.
http://netdumbster.codeplex.com/
there's also my very own http://ssfd.codeplex.com/ which is an open source SMTP emulator. Receives e-mail and drops them in a folder which can be accessed by a task icon
Note that the SmtpClientWrapper class proposed by tvanfosson needs the all-important "virtual" keyword in its declaration of the Send method, otherwise you are back in the same boat as trying to Mock the SmtpClient directly.
As per many of the other suggestions a free tool I've used quite a lot: http://www.toolheap.com/test-mail-server-tool/
Not really for TDD but useful in manual testing as it can pop up an outlook express window with each email that would be sent.
If you've got Python installed, you can run the following one liner to run a debug smtp server in the console that'll dump messages to stdout:
sudo python -m smtpd -n -c DebuggingServer localhost:25
snagged from here: http://muffinresearch.co.uk/archives/2010/10/15/fake-smtp-server-with-python/
As noted by Sean Carpenter, Papercut is a powerful solution for local development. If you also run a staging or testing server, however, mailtrap.io may be a simpler solution overall, because you can use the same approach for your dev and staging environments.
ReferenceURL : https://stackoverflow.com/questions/550887/testing-smtp-with-net
'programing' 카테고리의 다른 글
Jenkinsfile에서 빌드 실패 (0) | 2021.01.18 |
---|---|
.NET에서 'obj'디렉토리는 무엇입니까? (0) | 2021.01.18 |
WCF 응용 프로그램 시작 이벤트 (0) | 2021.01.18 |
모든 사용자 및 그룹 목록 (0) | 2021.01.18 |
Django, ModelChoiceField () 및 초기 값 (0) | 2021.01.18 |