C # код для отправки электронной почты, не зная много о конфигурации сервера? - PullRequest
9 голосов
/ 21 января 2009

Есть ли способ, в коде C #, отправить электронное письмо, не зная конфигурации SMTP-сервера и т. Д. На сервере, или не настроив ничего подобного?

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

Ответы [ 7 ]

11 голосов
/ 21 января 2009

Добавьте это в ваш web.config ( Ссылка MSDN здесь ):

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="jdoe@example.com">
            <network host="localhost" port="25" />
        </smtp>
    </mailSettings>
</system.net>

При использовании SmtpClient без указания параметров конфигурации будут использоваться значения из файла web.config:

MailMessage msg = new MailMessage(...);
// build message contents
SmtpClient client = new SmtpClient();
client.Send(msg);
2 голосов
/ 21 января 2009

Я недавно ответил на вопрос, похожий на этот. Вы можете просмотреть его здесь . Используя papercut , вы можете протестировать свое приложение, не зная или не используя настоящий производственный SMTP-сервер.

Затем во время тестирования вы можете просто установить хост на свой локальный компьютер, на котором выполняется papercut, в app / web config. Поэтому его можно изменить после перехода к производству.

Papercut покажет вам отправленные электронные письма, а также их содержимое.

1 голос
/ 21 января 2009

Лучший ответ: если вы ничего не знаете до выхода в эфир, можете ли вы перенести все настройки в web.config? Это позволит настроить до последней минуты. Ниже приведен код, который нужно вставить в файл web.config. Я хотел бы спросить, почему у вас нет доступа к этой информации, хотя

<system.net>
    <mailSettings>
      <smtp from="you@yourdomain.com">
        <network host="SMTP SERVER ADDRESS" port="25"
         userName="USERNAME" password="PASSWORD">
      </smtp>
    </mailSettings>
  </system.net>
0 голосов
/ 21 февраля 2017

Да, вы можете использовать такие инструменты, как SMTP4Dev, чтобы «отправлять» электронные письма, не имея вообще сервера SMTP. Я часто использую это для тестирования, чтобы убедиться, что я не отправляю электронные письма реальным пользователям по ошибке.

Подробнее @ http://netdevtools.com/how-to-test-smtp-emails-without-a-mail-server-no-smtp-configuration-required-in-asp-net-c/

0 голосов
/ 07 августа 2012

Попробуйте это от Google

http://mailsystem.codeplex.com/

0 голосов
/ 21 января 2009

В качестве альтернативы: если вы не хотите полагаться на конфигурацию сервера и делать это программно, вы всегда можете сделать это:

MailMessage mail = new MailMessage() {
    To = "someone@somewhere",
    From = "someone@somewhere",
    Subject = "My Subject",
    Body = "My message"
};

SmtpClient client = new SmtpClient("SMTP Server Address");
    // Naturally you change the "SMTP Server Address" to the
    // actual SMTP server address
client.Send(mail);

Но я предлагаю вам вставить его в файл web.config (который также можно настроить с помощью инструмента веб-конфигурации ASP.NET).

0 голосов
/ 21 января 2009

Если ваша конфигурация SMTP правильная, просто сделайте это:

MailMessage mail = new MailMessage(); 

mail.To = "To"; 
mail.From = "From"; 
mail.Subject = "Subject";     
mail.Body = "Body"; 

SmtpMail.SmtpServer = "localhost"; 
SmtpMail.Send(mail); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...