Greettings. Это мой первый пост здесь, так что несите меня.Полностью автоматическая отправка и ответ от Excel через Outlook
Я планировал разработать программное обеспечение базы данных, в настоящее время, в MS Access. Одной из функций, которые я планирую для этого программного обеспечения, является предоставление документов для утверждения. Идея состоит в том, чтобы из базы данных (отчета или формы) щелкнуть, чтобы отправить предварительно написанное электронное письмо с документом в приложении, но в том, что предварительно написанное электронное письмо будет иметь ссылку для отправки назад - писем по электронной почте, для быстрого автоматического ответа/ответа, но без ответа от Outlook. Цель состоит в том, чтобы люди отправляли из БД, другие принимали, читали документ, и, если они были одобрены, нажмите «автоответ», а Outlook будет просто «читающим» программным обеспечением со всей отправкой, выполненной в фоновом режиме.
Хотя я планирую приложение Access, я составил пример в Excel, для более быстрого тестирования (целевая поддержка используется для передачи строк, где когда-либо может содержать строку). Вот код до сих пор.
Private Function SendEmailWithOutlook(MessageTo As String, Subject As String, MessageBody As String, myAttachment As String)
' Define app variable and get Outlook using the "New" keyword
Dim olApp As New Outlook.Application
Dim olMailItem As Outlook.MailItem ' An Outlook Mail item
' Create a new email object
Set olMailItem = olApp.CreateItem(0)
' Add the To/Subject/Body to the message and display the message
With olMailItem
.to = MessageTo
.Subject = Subject
.BodyFormat = olFormatHTML
.HTMLBody = MessageBody
.Attachments.Add (myAttachment)
.Send ' Send the message immediately
End With
' Release all object variables
Set olMailItem = Nothing
Set olApp = Nothing
End Function
(С сайта MS)
функции для подготовки и отправки кода.
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim myMsg As String
If Target.TextToDisplay = "ASK APROVAL" Then
Set c = ActiveWorkbook.Sheets(1).Range("E:E").Find(Target.ScreenTip, LookIn:=xlValues)
If c Is Nothing Then
MsgBox "File Not Found"
Exit Sub
End If
'Retrieves the file name, stored in a cell to the right of the path
myFile = c.Offset(0, 1).Value
'Prepares the file for HTML reading
myFile = Replace(myFile, " ", "%20")
myMsg = "<HTML><BODY><SCRIPT type=""VBScript"">" & Chr(13)
myMsg = myMsg & "FUNCTION SendEmail()" & Chr(13)
myMsg = myMsg & "Dim olApp As New Outlook.Application" & Chr(13)
myMsg = myMsg & "Dim olMailItem As Outlook.MailItem" & Chr(13)
myMsg = myMsg & "Set olMailItem = olApp.CreateItem(0)" & Chr(13)
myMsg = myMsg & "With olMailItem" & Chr(13)
myMsg = myMsg & ".to = ""[email protected]""" & Chr(13)
myMsg = myMsg & ".Subject = ""Approval""" & Chr(13)
myMsg = myMsg & ".BodyFormat = olFormatHTML" & Chr(13)
myMsg = myMsg & ".HTMLBody = ""<HTML><BODY>The document metioned bellow is approved!<P>"
myMsg = myMsg & myFile
myMsg = myMsg & "<P>(Auto Response)</BODY></HTML>""" & Chr(13)
myMsg = myMsg & ".Send" & Chr(13)
myMsg = myMsg & "End With" & Chr(13)
myMsg = myMsg & "Set olMailItem = Nothing" & Chr(13)
myMsg = myMsg & "Set olApp = Nothing" & Chr(13)
myMsg = myMsg & "End Function" & Chr(13)
myMsg = myMsg & "</SCRIPT>Dear Boss<P>Attached to this e-mail is a document for your approval. Thanks.<P><BR><a href=""#"" onclick=""SendMail()"">Click for auto response.</a>"
myMsg = myMsg & "</BODY></HTML>"
SendEmailWithOutlook "[email protected]", "Approval of Document in Attachment", myMsg, Target.ScreenTip
Set c = Nothing
End If
End Sub
Электронная почта отправляется с Sucess, но ссылка для возврата электронной почты, хотя присутствует, ничего не на клик сделать. Это проблема.
От тестирования, отлаживаясь в непосредственном окне, полный HTML-код, который был отправлен, корректен, с каждой цитатой на месте.
Как и другие варианты кода, я ранее пробовал с помощью простой функции javascript с «windows.location.href: 'mailto: ...», но не имел никакого эффекта. Первое, что я попробовал, это отправить через HTML-код FORM, но кнопка отправки встречается как текст в скобках.
Я не знаю, возможно ли это или нет, или если моя линия мышления отключена. Итак, оцените некоторую помощь. Большое спасибо.
Оперативно говоря, это так. Я пытаюсь создать систему, из которой я НЕ являюсь ИТ-администратором, добавляя, что люди имеют некоторое сопротивление новым инструментам. Это приложение для использования в компании/фабрике. Главной идеей в качестве конечного приложения является то, что люди используют только программное обеспечение в Access, для всего (даже вложенность внешнего вида внутри Access через API). Но это я не могу сделать прямо сейчас, и я планировал распространить эту функцию на другие приложения. Подобным образом лента может не работать (или работать). Но спасибо за эту идею. Может пригодиться. – JDF