Код C# для отправки электронной почты, не зная ничего о конфигурации сервера?

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
0
12 671
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

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

<system.net>
    <mailSettings>
      <smtp from = "[email protected]">
        <network host = "SMTP SERVER ADDRESS" port = "25"
         userName = "USERNAME" password = "PASSWORD">
      </smtp>
    </mailSettings>
  </system.net>

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

MailMessage mail = new MailMessage(); 

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

SmtpMail.SmtpServer = "localhost"; 
SmtpMail.Send(mail); 

To is "get" свойства, вы не можете установить его таким образом.

Tarik 20.07.2009 04:13

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

<system.net>
    <mailSettings>
        <smtp deliveryMethod = "Network" from = "[email protected]">
            <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);

Я недавно ответил на подобный вопрос. Вы можете просмотреть это здесь. Используя вырезка из бумаги, вы можете протестировать свое приложение, не зная и не используя фактический производственный сервер smtp.

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

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

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

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

Это не сработает. Я получаю исключение .NET: «Ошибка отправки почты». Внутреннее исключение говорит: "{" Удаленное имя не может быть разрешено: 'Адрес SMTP-сервера' "}"

Jonathan 21.01.2009 01:01

@johnathanconway: Ну ... вы должны указать адрес SMTP-сервера в строке "Адрес SMTP-сервера".

Spoike 21.01.2009 15:24

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

http://mailsystem.codeplex.com/

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

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

Другие вопросы по теме