Подтвердить что ты не робот

Тестирование SMTP с помощью .net

Мне нужно настроить SMTP-сервер для тестирования моего веб-сайта, который отправляет электронные письма (для подтверждения регистрации и т.д.).

Я действительно не хочу, чтобы письмо отправлялось, я просто хочу убедиться, что мой код верен. Поэтому я хочу проверить, что электронная почта помещена в папку очереди, например.

Можно ли рекомендовать SMTP-сервер, который легко настроить?

4b9b3361

Ответ 1

Там также Papercut, который является SMTP-сервером, который будет получать сообщения, но не доставляет их в любом месте (позволяя вам убедиться, что они отправляется правильно). Полученные сообщения отображаются в небольшом графическом интерфейсе и также записываются в каталог.

Ответ 2

В .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

Ответ 3

Проект smtp4dev - еще один фиктивный SMTP-сервер. Мне это нравится, потому что у него есть простой, простой пользовательский интерфейс, который регистрирует сообщения и позволяет просматривать содержимое последних сообщений. Написан на С# с установщиком MSI. Исходный код доступен.

Ответ 4

Я думаю, что сообщение в блоге Простой SMTP-сервер Mock для .NET дает вам то, что вам нужно: SMTP-сервер mock

Макет SMTP-сервера в основном подделка SMTP-сервер, который может использоваться для блока тестирование приложений, которые отправляют сообщения электронной почты.

Кроме того, google search для smtp mock server предоставит вам выбор SMTP-серверов для тестирования. Как:

  • Dumbster - Java-поддельный SMTP-сервер
  • nDumbster - порт .NET Dumbster

Ответ 5

Для .NET ребята. Держать его просто.

Мы изучали это, а затем один из разработчиков вспомнил о настройке конфигурации, который позволяет переопределить способ отправки сообщений электронной почты.

Это создаст файл по электронной почте и оставит его в покое.

<system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <specifiedPickupDirectory pickupDirectoryLocation="\\SharedFolder\MailDrop\" />
      </smtp>      
    </mailSettings>
  </system.net>

Ответ 6

Альтернативный способ сделать это - создать оболочку вокруг SmtpClient, которая реализует один и тот же интерфейс. Затем вставьте и используйте обертку в своем классе. При выполнении модульного тестирования вы можете затем заменить макетную оболочку, которая имеет ожидания для вызовов и ответов метода.

РЕДАКТИРОВАТЬ. Требуется оболочка (для RhinoMocks, по крайней мере), потому что SmtpClient не выводится из интерфейса и не имеет виртуальных методов. Если вы используете фальшивую фреймворк, который может издеваться над классом без виртуальных методов напрямую, вы можете пропустить оболочку и сразу ввести макет 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();
}

Ответ 8

Я использую Antix SMTP Server для разработчиков, который так же просто, как открытие приложения. Он сохраняет сообщения в папке, и вы можете просматривать их с помощью пользовательского интерфейса. Довольно быстрое/простое решение. Я хотел упомянуть об этом здесь.

Смотрите также: сервер smtp разработки для Windows

Ответ 9

DevNull SMTP-сервер регистрирует все подробные сведения о связи между клиентом и SMTP-сервером. Похоже, было бы полезно, если бы вы пытались диагностировать, почему ваш код отправки не работал.

Он написан на Java и развертывается как исполняемый банкомат. Исходный код кажется недоступным.

Ответ 10

Если вы находитесь в Mac OS X, вы можете использовать MockSMTP.app

Ответ 12

есть и мой собственный http://ssfd.codeplex.com/, который является эмулятором SMTP с открытым исходным кодом. Получает электронную почту и отбрасывает их в папку, к которой можно получить доступ с помощью значка задачи

Ответ 13

Обратите внимание, что класс SmtpClientWrapper, предложенный tvanfosson, нуждается во всем важном ключевом слове "virtual" в его объявлении метода отправки, иначе вы вернетесь в ту же лодку, что и при попытке напрямую связать SmtpClient.

Ответ 14

В соответствии с многими другими предложениями бесплатный инструмент, который я использовал довольно много: http://www.toolheap.com/test-mail-server-tool/

Не для TDD, но полезно для ручного тестирования, так как он может всплывать в окне быстрого просмотра Outlook с каждым отправленным электронным письмом.

Ответ 15

Если у вас установлен Python, вы можете запустить следующий один лайнер для запуска отладочного smtp-сервера в консоли, который выведет сообщения в стандартный вывод:

sudo python -m smtpd -n -c ОтладкаServer localhost: 25

застрял отсюда: http://muffinresearch.co.uk/archives/2010/10/15/fake-smtp-server-with-python/

Ответ 16

Как отметил Шон Карпентер, Papercut является мощным решением для локального развития. Однако, если вы также запускаете сервер постановки или тестирования, mailtrap.io может быть более простым решением в целом, потому что вы можете использовать тот же подход для своего dev и промежуточных средах.