Как отправить письмо из приложения Windows Form с log4net - PullRequest
0 голосов
/ 13 октября 2009

Я настроил log4net в моем приложении на C # 3.5. Я ищу, как отправить электронную почту с клиентского компьютера с log4net. SMTPAppender требует знания SMTPHost, и примеры, которые я видел, относятся к веб-приложениям.

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

Я искал ответ, но у меня нет большого опыта программирования по электронной почте или через Интернет, чтобы узнать, что искать. Любые идеи, чтобы направить меня в правильном направлении?

1 Ответ

1 голос
/ 13 октября 2009

c # SmtpClient вполне подходит для ваших нужд. Вот пример кода (хост - это IP-адрес или имя хоста, а порт обычно 25, но не обязательно):

public static void SendMail(
                                    string host,
                                    int port,
                                    SmtpAuthentication authentication,
                                    string userName,
                                    string password,
                                    string from,
                                    string to,
                                    string cc,
                                    string subject,
                                    string body,
                                    string[] attachments)
        {
            // Create and configure the smtp client
            SmtpClient smtpClient = new SmtpClient();

            if (host != null && host.Length > 0)
            {
                smtpClient.Host = host;
            }

            smtpClient.Port = port;
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

            if (authentication == SmtpAuthentication.Basic)
            {
                // Perform basic authentication
                smtpClient.Credentials = new System.Net.NetworkCredential(userName, password);
            }
            else if (authentication == SmtpAuthentication.Ntlm)
            {
                // Perform integrated authentication (NTLM)
                smtpClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
            }

            MailMessage mailMessage = new MailMessage();

            mailMessage.Body = body;
            mailMessage.From = new MailAddress(from);
            mailMessage.To.Add(to);
            mailMessage.CC.Add(cc);

            foreach (string attachement in attachments)
            {
                mailMessage.Attachments.Add(new Attachment(attachement));
            }

            mailMessage.Subject = subject;
            mailMessage.Priority = MailPriority.Normal;

            smtpClient.Send(mailMessage);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...