Как открыть окно нового почтового сообщения Outlook из VB.NET

У меня есть сценарий, в котором пользователь может сделать выбор из сетки (загрузив файлы в локальную папку), и когда пользователь нажимает «отправить», приложение должно открыть окно Outlook «Новое почтовое сообщение», выбрав файлы в качестве вложений (какой пользователь выбрал из сетки).

Любая помощь будет оценена.


person Adnan Badar    schedule 27.12.2010    source источник


Ответы (2)


Если вы хотите получить конкретное сообщение Outlook и вам нужны дополнительные параметры отправки (основной текст, вложения, скрытая копия и т. д.):

Dim Outl As Object
Outl = CreateObject("Outlook.Application")
If Outl IsNot Nothing Then
    Dim omsg As Object
    omsg = Outl.CreateItem(0) '=Outlook.OlItemType.olMailItem'
    'set message properties here...'
    omsg.Display(True) 'will display message to user
End If
person MarcelDevG    schedule 27.12.2010
comment
Уважаемый MarcelDevG, Большое спасибо, это именно то, что я хочу, и все работает нормально, единственная ненормальная вещь прямо сейчас, когда у меня есть 2 окна сообщений (с одинаковыми настройками, адресом, телом, сообщением), любая идея, что происходит. ЕЩЕ РАЗ СПАСИБО! - person Adnan Badar; 27.12.2010
comment
Я решил это, не отображая его как модальный. 'omsg.Display(False) Еще раз спасибо! - person Adnan Badar; 27.12.2010
comment
Теперь я становлюсь немного жадным :) в окне нового почтового сообщения я не получаю подпись пользователя по умолчанию, как эта проблема будет решена? - person Adnan Badar; 27.12.2010
comment
Вы действительно должны открыть новый вопрос, а также сначала найти существующий ответ. Вот что я нашел: outlookcode.com/codedetail.aspx?id=615 Это VBA, но вы должны уметь его переводить. - person MarcelDevG; 27.12.2010

Imports System.Diagnostics

Process.Start(String.Format("mailto:{0}", address))

' set all possible parameters: '

Process.Start(String.Format("mailto:{0}?subject={1}&cc={2}&bcc={3}&body={4}", address, subject, cc, bcc, body))

' also escape spaces: '

Process.Start(String.Format("mailto:{0}?subject=\"{1}\"&cc={2}&bcc={3}&body=\"{4}\"", address, subject, cc, bcc, body))

Используйте next, чтобы включить новые разрывы строк:

body = body.Replace(Environment.NewLine ,"%0A")

откроет почтовый клиент по умолчанию с диалоговым окном создания нового сообщения.

Если Outlook установлен как клиент по умолчанию, он будет открыт.


В любом случае, никогда не открывайте клиент явно не по умолчанию (электронная почта, браузер и т. д.) — это сломит волю клиентов и заставит их ненависти вас.

person abatishchev    schedule 27.12.2010
comment
И как вы добавляете вложения? - person MarcelDevG; 27.12.2010
comment
@MarcelDevG: если вам нужно отправить электронное письмо с вложениями, отправьте электронное письмо программно: SmtpClient .Отправить(ПочтовоеСообщение) - person abatishchev; 27.12.2010
comment
Это не сработает, если строка длиннее примерно 2000 символов или около того из-за ограничения Internet Explorer на длинные URL-адреса. - person nalply; 15.11.2012
comment
Да это странно. У меня есть приложение с внутренним отчетом об ошибках, и трассировки стека усекаются. Это действительно раздражающее ограничение. Я где-то читал об этом, что виноват IE. Не спрашивайте меня, почему. - person nalply; 15.11.2012
comment
@abatishchev Что-то не так в строке Process.Start(String.Format(mailto:{0}?subject=\{1}\&cc={2}&bcc={3}&body=\{4}\, address, тема, копия, скрытая копия, тело)). Это какая-то синтаксическая ошибка. Можете ли вы это исправить? - person tmighty; 26.08.2016