1

亲爱的 Stackoverflow 的人们,

我想用手动换行符(^l)替换每封收到的电子邮件的段落标记(相信^pi,至少在Outlook查找和替换中)。
我无法通过谷歌找到解决方案,但我可能搜索错误。

我对每封传入的电子邮件都使用以下代码作为规则:(
仅供参考,此代码适用于文本)

Sub testing(MyMail As MailItem)
 MyMail.HTMLBody = Replace(MyMail.HTMLBody, "example", "changedtext")
 MyMail.Save
End Sub

现在我试图将第二行更改为:

MyMail.HTMLBody = Replace(MyMail.HTMLBody, "^p", "^l")

MyMail.HTMLBody = Replace(MyMail.HTMLBody, "chr(13)", "chr(10)")

但这些似乎不起作用。

不幸的是,我对 VBA 编码不是很熟悉。
我刚刚被告知我需要使用 chr() 但我不知道如何做到这一点。


一些背景信息:
我使用 2 条规则,1 条用 ^l 更改每个 ^p,另一条规则是将电子邮件从 HTML 转换为纯文本。
如果我只是在不先用 ^l 更改 ^p 的情况下转换它,它将有所有这些额外的空行。

示例:
HTML & 转换为纯文本时的示例 是否有人愿意帮助我解决这个问题?
我真的很感激!

问候,

克里斯

4

1 回答 1

1

有几种方法可以做到这一点,但都具有相同的副作用。如果用户 SHIFT + ENTER 2 次,他们也会产生 1 个新行

解决方案 1:'将 2 个换行符替换为 1 个换行符

'vbCrLf is actually Chr(13) & Chr(10)

mail.HTMLBody = Replace(mail.HTMLBody, vbCrLf & vbCrLf, vbCrLf)

解决方案2:'将任何额外的换行符替换为“”,最后会有一个额外的空白链接

tmp = Split(mail.HTMLBody, vbCrLf)
For Each Line In tmp
    If Line <> "" Then
        newBody = newBody  & Line & vbCrLf
    End If
Next
mail.HTMLBody = newBody
于 2012-12-20T05:42:38.073 回答