Вставить форму в электронную почту Outlook и получить ответ - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь помочь людям делать свою работу.Таким образом, каждое утро пользователям должно отправляться электронное письмо со списком «Утвердить / Отклонить ...» Не хочу отправлять это электронное письмо, как предупреждение, в котором говорится, что они должны идти в приложение для выполнения своих обязанностей. В письме должна быть возможность перехватить ответ и соответствующим образом обновить базу данных.

вариант 1: Вставить все элементы в одно тело письма в виде формы, что-то вроде ...

Code - Description  - radiobutton - radio button 

111  ABC  o Accept  o Reject
222  DEF  o Accept  o Reject

Submit

При отправке необходимо вызвать приложение winforms и нужнопередать код и принять / отклонить статус.Я не смог найти ничего, чтобы придумать решение.Необходимо также подтвердить, убедившись, что все соответствующие переключатели были выбраны.Это вообще возможно?

Вариант 2: Я пытаюсь избежать маршрута голосования , где каждый элемент будет отправляться в виде отдельного электронного письма.когда пользователь примет / отклонит, ответ будет отправлен на электронную почту.Затем какой-то процесс будет отслеживать этот почтовый ящик и будет выбирать не прочитанные сообщения и соответственно обновлять БД.Использование MailItemClass в пространстве имен Microsoft.Office.Interop.Outlook.

var mailItem = (Outlook.MailItem)Application.CreateItem(Outlook.OlItemType.olMailItem);
mailItem.To = "some.address@server.com";
mailItem.Subject = "This is a test";
mailItem.Body = "This is the body of the message.";
mailItem.VotingOptions = "Accept; Reject;";
mailItem.Send();

1 Ответ

0 голосов
/ 25 мая 2018

Я считаю, что то, о чем вы просите, возможно, но для его реализации потребуется много усилий.

Для вашего подхода я предполагаю, что информация для этих электронных писем поступает из БД.Я написал бы макрос для опроса БД, а также создавал и отправлял каждое письмо соответствующему пользователю.

В системе каждого пользователя у меня было бы правило, которое распознало бы эти письма и вызывало макрос для их обработки.Макрос извлекает содержимое письма, копирует его в форму и передает управление пользователю.Кнопка «Отправить» будет проверять выбор пользователя и сохранять результаты в глобальных переменных, прежде чем вернуть управление макросу.При восстановлении управления макрос обновит базу данных.

Этот макрос будет большим, и я уверен, что он нуждается в обслуживании.Чтобы защитить себя от вредоносных программ, Outlook не предоставляет простого способа импорта макросов.Макрос и форма должны быть вручную импортированы в систему каждого пользователя, каждый раз, когда они изменяются.Если у вас нет технически способных пользователей, именно вы будете посещать каждую систему и обновлять ее.

Я бы отверг любой подход, который требовал кода в системах пользователя.

Чтобы проверить альтернативный подход,Я вручную создал это письмо:

Original email

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

Reply to original email

Текст Html для этого ответа полон информации о форматировании.Вы можете извлечь из него ответы, но я верю, что текстовое тело будет проще.Чтобы создать следующее, я начал с текстового тела, заменил каждый возврат каретки и перевод строки на [CR] и [LF], а затем добавил несколько новых строк, чтобы сделать его немного легче для чтения.

[CR][LF][CR][LF] [CR][LF][CR][LF]From: Tony Dallimore [mailto:a.j.dallimore@MyIsp.com] [CR][LF]Sent: 25 May 2018 14:22[CR][LF]To: 'Tony Dallimore' <a.j.dallimore@MyIsp.com>[CR][LF]Subject: Test email 2[CR][LF][CR][LF] [CR][LF][CR][LF]
Please:[CR][LF][CR][LF] [CR][LF][CR][LF]
1)      Click Reply within the Home tab.[CR][LF][CR][LF]
2)      You may find it helpful to click Pop Out.[CR][LF][CR][LF]
3)      Enter “A” in the Accept column or “R” in the Reject column of every row in the following table.[CR][LF][CR][LF]
4)      Click Send.[CR][LF][CR][LF] [CR][LF][CR][LF]Code[CR][LF][CR][LF]Description[CR][LF][CR][LF]Accept[CR][LF][CR][LF]Reject[CR][LF][CR][LF]
111[CR][LF][CR][LF]ABC[CR][LF][CR][LF]A[CR][LF][CR][LF][CR][LF][CR][LF]
222[CR][LF][CR][LF]DEF[CR][LF][CR][LF][CR][LF][CR][LF]R[CR][LF][CR][LF]
333[CR][LF][CR][LF]GHI[CR][LF][CR][LF]A[CR][LF][CR][LF][CR][LF][CR][LF]
444[CR][LF][CR][LF]JKL[CR][LF][CR][LF]A[CR][LF][CR][LF] [CR][LF][CR][LF]
 [CR][LF][CR][LF] [CR][LF]

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

Я не знаю, насколько сложно получить доступ к вашей БД из VBA.но я не верю, что что-то еще является особенно трудным.

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

...