我正在尝试转换使用 Mailkit 从邮件服务器获得的电子邮件的 HtmlBody,看起来 iTextSharp 并不喜欢我传递的 html。
我的方法适用于“示例”html 代码,但我收到一条The document has no pages
错误消息,看起来好像是当 html 不再是 html 时抛出的错误消息。
public void GenerateHtmlFromBody(UniqueId uid)
{
var email = imap.Inbox.GetMessage(uid);
Byte[] bytes;
using (var ms = new MemoryStream())
{
using (var doc = new Document())
{
using (var writer = PdfWriter.GetInstance(doc, ms))
{
doc.Open();
//Sample HTML and CSS
var example_html = @"<p>This <em>is </em><span class=""headline"" style=""text-decoration: underline;"">some</span> <strong>sample <em> text</em></strong><span style=""color: red;"">!!!</span></p>";
var example_css = @".headline{font-size:200%}";
using (var srHtml = new StringReader(email.HtmlBody))
{
//Parse the HTML
iTextSharp.tool.xml.XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml);
}
doc.Close();
}
}
bytes = ms.ToArray();
}
var testFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "processedMailPdf.pdf");
System.IO.File.WriteAllBytes(testFile, bytes);
}
我正在访问MimeMessage.HtmlBody
和调试,看起来它实际上是 html。
这是用于检查 HtmlBody 的pastebin 的链接,MimeMessage
因为我在这里达到了字符限制。
我错过了什么?谢谢。
编辑:我尝试过使用 HTMLWorker(已弃用),但它不稳定。它适用于一封电子邮件,但不适用于其他电子邮件。当然这不是一个解决方案,但它最终从 Mailkit 生成了一个 pdf,这是“东西”。