Outlook: Как отправить выбранное сообщение на веб-сервер с помощью VBA? - PullRequest
2 голосов
/ 12 мая 2009

Цель: иметь на панели инструментов Outlook кнопку, которая при нажатии отправляет текущее сообщение целиком (возможно, в виде файла MSG) по почте на URL-адрес. В процессе должно быть открыто какое-то окно браузера, чтобы пользователь мог ввести данные для входа в приложение по URL-адресу (разве я не могу как-то обойти это, мысли?).

Я создал макрос VBA и вставил для него кнопку в Outlook 2007 (хотя мне нужно, чтобы это работало и в Outlook 2003, по крайней мере).

Я читал о методе VBA FollowHyperlink, но я не могу заставить небольшую макрос-среду VBA распознать его (Application.FollowHyperlink и несколько других попыток привели к ошибкам).

(я программист .Net, плохо знакомый с VBA, поэтому, если есть какой-то более простой способ в VB.NET или C #, непременно указывайте мне правильное направление).

Идеи

1 Ответ

4 голосов
/ 12 мая 2009

Вот схема того, как я думаю, что это должно работать.

  • Для связи используйте COM-объект "WinHttp.WinHttpRequest.5" (исследование FollowHyperlink() будет бессмысленным). Этот объект может выполнять любую форму HTTP-запроса. Ссылайтесь на него в проекте Outlook VBA, чтобы получить Intellisense и раннее связывание.
  • Для имени пользователя и пароля создайте крошечную пользовательскую форму с двумя текстовыми полями. Вы даже можете использовать эту форму для кэширования имени пользователя и пароля (вызовите «Скрыть», когда форма должна выйти из поля зрения - все переменные уровня формы будут сохранены, чтобы вы могли использовать их снова).
  • Для подготовки полезной нагрузки используйте этот метод ( KB240935 ), чтобы получить текущий выбранный элемент, проверьте его на тип (If TypeOf currentItem Is MailItem Then ...) и вызовите SaveAs(), чтобы сохранить его как .msg в временная папка. Прикрепите его к подготовленному запросу POST, и все готово.
  • Для пользовательского интерфейса поместите кнопку в пользовательский CommandBar (вы можете даже создать ее программно при запуске приложения). Свяжите кнопку с Public Sub в обычном модуле VBA. В этом Sub решите, нужно ли вам Show() ваше собственное диалоговое окно с именем пользователя / паролем или если существуют кэшированные учетные данные, и выполните необходимую обработку HTTP-запроса.

Удачи! Это не должно быть слишком сложно.

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