Я использую.NET 3.5, и я хочу автоматически отправить почту. Я в настоящее время использую следующее:
Microsoft.Office.Interop.Outlook.MailItem mailMsg =
(Microsoft.Office.Interop.Outlook.MailItem)outlookApplication.CreateItem(
Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
mailMsg.To = recipient;
mailMsg.Subject = subject;
mailMsg.Body = body;
mailMsg.Send();
Однако я нашел несколько статей, которые, кажется, подразумевают, что я должен использовать следующий метод:
System.Net.Mail.MailMessage mailMsg = new System.Net.Mail.MailMessage();
mailmsg.To = recipient;
mailmsg.Subject = subject;
mailmsg.Body = body;
Кто-либо может сказать мне, что различие между двумя пространствами имен, если, и почему Вы могли бы хотеть использовать один по другому?
Во втором примере требуется SMTP-сервер, чтобы установить прямое соединение, и он использует этот SMTP-сервер. отправить электронное письмо. У него низкие накладные расходы, нормально работает.
Если вам нужно составить и отправить электронное письмо о поведении текущего пользователя, вы можете использовать Outlook.
Пока я видел только ответы с недостатками для перспективы. Но у этого есть несколько преимуществ:
Изменить: Я использую метод SMTP для отправки технических писем (например, файлов журналов и сообщений об ошибках) в нашу службу поддержки, эти письма отправляются быстро и незаметно.
Метод Outlook, который я использую для отправки писем другим людям о поведении моего пользователя. Эти письма медленные, но их можно отслеживать и т. Д.
Как уже упоминалось, первый использует Outlook для отправки электронной почты. Недостатком является то, что у пользователя должен быть установлен Outlook; Преимущество состоит в том, что это будет выглядеть так, как будто его отправляет Outlook.
Второй метод пытается отправить почту напрямую. Преимущество в том, что он не требует установки Outlook и требует гораздо меньше накладных расходов. Недостатком этого варианта является то, что в настоящее время большинство предприятий блокируют порт 25, поэтому при попытке отправить сообщение оно не удастся.
Первый метод использует interop, создавая экземпляр Outlook (outlookApplication
) и заставляя этот экземпляр Outlook отправлять электронную почту.
Второй способ используется для отправки электронной почты по обычному старому SMTP и вообще не требует outlook.
Если у вас нет особых потребностей во взаимодействии, нет необходимости отправлять электронное письмо с помощью outlook (и ваш код не будет работать на любой машине, на которой не установлен outlook).
Первый использует COM-взаимодействие и использует Outlook в качестве своей основы. Необходимо настроить внешний вид. Второй - с помощью SMTP-клиента. Взаимодействие может столкнуть вас с проблемами, связанными с перспективами, но позволит использовать некоторые интересные функции, такие как открытие почтового окна (но обычно это того не стоит). Второй будет отправлять тихую почту, хотя вы можете показать какое-то собственное окно, но все же это не позволит гибкости Outlook Automation. Мой выбор - System.Net.Mail. *.
Они разные. MailItem представляет собой элемент сообщения в Outlook. MailMessage представляет собой сообщение электронной почты, которое можно отправить с помощью класса SmtpClient.
Проверьте MailItem и MailMessage .
В первом случае используется MS Office, который вы не хотите публиковать, а System.Net.Mail доступен, когда установлен .Net framework.
Microsoft.Office использует Microsoft Outlook для отправки электронной почты. Он требует установки Outlook и (по крайней мере, в последний раз, когда я пытался отправить почту таким способом) более склонен к трудностям. (Например, он запрашивает пользователя, чтобы сообщить ему, что программа пытается отправить почту от его имени и т.д.)
System.Net.Mail просто использует чистый .NET и указанный SMTP-сервер для отправки почты. Поверьте мне. Избегайте использования Office, если нет необходимости.
В первом примере используются библиотеки, установленные при загрузке Office Interop Assemblies.
Во втором примере используются библиотеки, установленные по умолчанию с фреймворком .NET, System.Net.
В первом примере используются библиотеки Microsoft Interop Libraries. Я бы выбрал второй пример, поскольку он является частью стандартной установки .NET. Библиотеки Interop будут иметь больше накладных расходов, которые также не требуются.
Второй вариант нужно использовать в любой день. Это чистый .NET.
Если вы используете первый вариант, думаю, на этом компьютере должен был быть установлен Outlook. При развертывании у вас будут проблемы, если на сервере не установлен MS Office.
Первый, как я полагаю, требовал, чтобы на компьютере был установлен Outlook, чтобы были установлены сборки взаимодействия с Office. Второй - это чистый фреймворк .Net.
Первый использует COM-взаимодействие, которое не требует дополнительных затрат. Во-вторых, это чистый домен .net со всеми его функциями. Плюс он более гибкий.