Вам необходимо удалить весь блок, содержащий это сообщение.
<div>
и </div>
подобны скобкам вокруг Html, которые указывают, что все между <div>
и </div>
должно быть рассматривается как блок. Автор Html может создать блок по любой из нескольких причин. Здесь автор хочет указать внешний вид блока. Поэтому <div style=xxxx>yyyy</div>
говорит, что применить стиль xxxx
к yyyy
.
Ваш вопрос не включает конечный </div>
. Если этот блок появляется в самом конце сообщения, человек, который кодировал это дополнение, мог пропустить </div
, хотя это не очень хорошая практика. Скорее всего, вы не понимали, что конечный <\div>
был важен.
Мой подход был бы:
- Используйте
InStr
для поиска «Это сообщение отправлено…» - Используйте
InStrRev
для поиска в обратном направлении <div
- Используйте
InStr
для поиска </div>
- Удалите все между
div
и <\div>
Если вам нужен код, чтобы сделать это, я отправлю себе электронное письмо с этим блоком, чтобы я мог проверить код. Я не люблю публиковать непроверенный код.
Редактировать
Я написал и частично протестировал код для подхода, который предпочел бы. Я не полностью протестировал свой код, потому что я не понимаю ваш подход.
Насколько я понимаю, ваш университет добавляет предупреждение к электронным письмам, полученным из-за пределов университета. Это происходит до того, как письмо будет выпущено. Я ожидаю, что вы используете событие добавления элемента, но вы используете событие отправки элемента. Я не понимаю, как это даст вам эффект, который вы ищете.
Я создал электронное письмо, содержащее предупреждение, используя учетную запись gmail, и отправил его в свою учетную запись Outlook. Это электронное письмо выглядит так:
Это не то же самое, что ваше предупреждающее сообщение, но оно достаточно близко для тестирования.
У меня есть подпрограмма диагностики c, которая выводит выбранные свойства выбранных электронных писем в Immediate Window или «все» свойства выбранных электронных писем в файл. Вывод для соответствующей части тела Html:
<di|
|v style='mso-element:para-border-div;border:solid windowtext 1.0pt;padding:1.0pt 4.0pt 1.0pt 4.0pt'>|
|<p class=MsoNormal align=center style='text-align:center;border:none;padding:0cm'><span style='font-|
|family:"inherit",serif;color:#303336;border:none windowtext 1.0pt;padding:0cm;background:aqua;mso-hi|
|ghlight:aqua;mso-fareast-language:EN-GB'>This email originated from outside the university.</span><o|
|:p></o:p></p></div>
Я удалил все из вывода, кроме блока DIV, содержащего предупреждение. Если вам нужна дополнительная информация о моей диагностике c, я с радостью ее предоставлю.
Код для обновления тела Html:
Sub RemoveWarning(ByRef ItemCrnt As MailItem)
Dim LcHtmlBody As String
Dim PosDivEnd As Long
Dim PosDivStart As Long
Dim PosMessage As Long
With ItemCrnt
' Check message contains warning
PosMessage = InStr(1, .HtmlBody, "This email originated from outside the university.")
If PosMessage = 0 Then
' No message found
Exit Sub
End If
' Find start and end div
LcHtmlBody = .HtmlBody ' Allow for "<DIV" and "<div"
PosDivStart = InStrRev(LcHtmlBody, "<div", PosMessage)
PosDivEnd = InStr(PosMessage, LcHtmlBody, "</div>")
If PosDivStart = 0 Or PosDivEnd = 0 Then
' Start div or end div or both not found
Exit Sub
End If
' Delete Div block from Html
.HtmlBody = Mid$(.HtmlBody, 1, PosDivStart - 1) & Mid$(.HtmlBody, PosDivEnd + 6)
End With
End Sub
Результат работает этот код:
Это удалило все предупреждение, включая цветной прямоугольник, но оставило пробел. Этот код не может оставить пробел в вашем предупреждающем сообщении. Если в вашем сообщении есть пробел, вам, вероятно, потребуется удалить пустой абзац, а также блок Div. Мне нужно было бы увидеть Html до вашего "