仅从电子邮件 html 正文中获取文本

Posted

技术标签:

【中文标题】仅从电子邮件 html 正文中获取文本【英文标题】:Fetch only text from email html body 【发布时间】:2016-02-15 14:09:48 【问题描述】:

我在 c# 中使用 Exchange 服务来接收电子邮件。

我正在使用以下代码:

var service = new ExchangeService
    
        Credentials = new WebCredentials("somename", "somepass"),
        Url = new Uri("someurl")
    ;
FindItemsResults <Item> findResults = service.FindItems(WellKnownFolderName.Inbox,new ItemView(1));
var item = findResults.Items[0];
item.Load();
return item.Body.Text;

它以 html 格式返回正文。有什么方法可以让我只获取文本而不是 html,我不需要 html 标签。还是我应该解析它?

感谢您的任何意见。

【问题讨论】:

如果没有原生解决方案,请参阅***.com/questions/19523913/… 我希望有一个 Exchange 解决方案,我以为我缺少一些参数。不过还是谢谢 【参考方案1】:

"在您的项目的 PropertySet 中,您需要将 RequestedBodyType 设置为 BodyType.Text。这是一个示例:"

PropertySet itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties);
itempropertyset.RequestedBodyType = BodyType.Text;
ItemView itemview = new ItemView(1000);
itemview.PropertySet = itempropertyset;

FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, "subject:TODO", itemview);
Item item = findResults.FirstOrDefault();
item.Load(itempropertyset);
Console.WriteLine(item.Body);

引用自this 答案。

【讨论】:

看来我们使用了相同的来源:) 你打败了我。呵呵【参考方案2】:

这对我有用。

var service = new ExchangeService

    Credentials = new WebCredentials("somename", "somepass"),
    Url = new Uri("someurl")
;

var itempropertyset = new PropertySet(BasePropertySet.FirstClassProperties)

    RequestedBodyType = BodyType.Text
;

var itemview = new ItemView(1) PropertySet = itempropertyset;
var findResults = service.FindItems(WellKnownFolderName.Inbox, itemview);
var item = findResults.FirstOrDefault();
item.Load(itempropertyset);
Console.WriteLine(item.Body);

【讨论】:

谢谢大家,我会接受这个,因为它不是一个示例,但可以立即使用。

以上是关于仅从电子邮件 html 正文中获取文本的主要内容,如果未能解决你的问题,请参考以下文章

EWS 正文纯文本

Rails - 邮件,将正文作为纯文本获取

使用 Python 根据磁盘使用情况在 HTML 表格电子邮件正文中添加标题和文本颜色

如何从 Node.js IMAP 模块中的正文获取纯文本

仅发送纯文本电子邮件,正文中包含 Rails mime 部分

flask 电子邮件进阶实践-用模板发送163邮件