Следующий код создает и отправляет простое электронное письмо. После отправки сообщения он заменяет строку в элементе электронной почты.Заменить строку в отправленном письме
Мой код работает, когда я использую одношаговую функцию отладчика для выполнения кода. Он также работает, когда я добавляю инструкцию MsgBox с кнопкой «нажмите, чтобы продолжить» после команды objMsg.Send
. Это не работает, когда я выполняю макрос без перерыва, но сообщает мне, что Outlook не может сохранить письмо в папку при запуске макроса.
Sub CreateNewMessage()
objMsg As MailItem
Set objMsg = Application.CreateItem(olMailItem)
With objMsg
.To = "[email protected]"
.subject = "This is the subject"
.BodyFormat = olFormatHTML
.Body = "How are you doing?"
End With
objMsg.Send
' The following code replaces in the email body the string "you" with "they"
' Because I could not find how to open the "last sent" email,
' I used the "Sent Items" folder email count as as the pointer
' to the last email.
Dim myNameSpace As Outlook.NameSpace
Dim myFolder As Outlook.Folder
Dim myItem As Object
Set myNameSpace = Application.GetNamespace("MAPI")
Set myFolder = _
myNameSpace.GetDefaultFolder(olFolderSentMail)
Dim EmailCount As Integer
EmailCount = myFolder.Items.Count
Set myItem = myFolder.Items(EmailCount)
myItem.HTMLBody = replace(myItem.HTMLBody, "you", "they")
myItem.Save
End Sub
Вы также не должны предполагать, что MAPIFolder.Items.Item (Items.Count) предоставит вам последнее сообщение. Заказ не определен, если вы явно не сортируете коллекцию Items. –
Спасибо, Дмитрий. Когда я добавил задержки, это не помогло. В моем приложении я не могу добавить MSgBOX или другие ручные задержки. Он должен работать автоматически. Можете ли вы объяснить мне или предложить код, как я могу обнаружить, что сообщение было сохранено в папке «Отправленные». Не так ясно, как ItemAdd выполнит эту работу. Мне кажется, что если макрос не будет завершен или остановлен, система никогда не сохранит отправленное сообщение в папке «Отправленные». Еще раз спасибо за вашу помощь. – Menachem
Обратите внимание, что мне нужно искать и заменять строку для каждого отправляемого сообщения. – Menachem