vb.net отправляет электронную почту Outlook, используя smtp и outlook.CreateItemFromTemplate

Я хотел бы отправить электронное письмо, используя SMTP-сервер и шаблон Outlook в качестве почтового сообщения.

Dim application As New Outlook.Application
Dim path As String = "S:\TCM\Vendor.oft"

' Create a new MailItem and set the To, Subject, and Body properties.
Dim newMail As Outlook.MailItem = DirectCast(application.CreateItemFromTemplate(path), Outlook.MailItem)

Dim mail As MailMessage = DirectCast(newMail, MailMessage)

Я пытаюсь создать почтовый элемент из шаблона и привести его к MailMessage так что я могу использовать SMTP-сервер для отправки электронной почты. Однако я получаю следующую ошибку.

Невозможно привести объект COM типа "System.__ComObject" к типу класса "System.Net.Mail.MailMessage".

Экземпляры типов, которые представляют компоненты COM, не могут быть преобразованы в типы, которые не представляют компоненты COM; однако они могут быть преобразованы в интерфейсы, если базовый компонент COM поддерживает вызовы QueryInterface для IID интерфейса.

2 ответа

Решение

Там нет прямого преобразования между MailMessage из BCL и Outlook MailItem, Вы можете отправить MailItem из другой учетной записи в Outlook, установив свойство SendUsingAccount, которое позволяет установить объект Account, представляющий учетную запись, под которой должен отправляться MailItem.

Может оказаться полезной статья " Как: создать и отправить сообщение Outlook программным путем".

Outlook.MailItem очевидно, ничего не известно о System.Net.Mail.MailMessage объект.

Вы несете ответственность за преобразование сообщения Outlook в сообщение MIME и / или явное заполнение всех свойств MailMessage перед его отправкой.

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