gpt4 book ai didi

java - 从 ImageHtmlEmail 获取电子邮件文本

转载 作者:太空宇宙 更新时间:2023-11-04 13:41:56 24 4
gpt4 key购买 nike

我们正在使用 apache commons 邮件,特别是 ImageHtmlEmail。我们真的很想记录每封发送的电子邮件 - 与将要发送的电子邮件完全一样 - 在完美的世界中,您可以将其粘贴到 sendmail 中 - 包含所有 header 和其他信息。

这主要是为了解决我们在将其显示为文本/纯文本而不是文本/html 时遇到的一些问题 - 但也因为将系统发送的准确记录存储在我们的日志中会很好。

本质上 - 梦想是一个函数,它将接受 ImageHtmlEmail 并返回一个字符串 - 因为它将被发送。我知道我可以自己将其渲染为字符串,但随后我会绕过库函数中正在执行的任何操作,这才是我们真正想要捕获的。我尝试了 BuildMimeMessage,然后尝试了 getMimeMessage,我认为这可能是正确的第一步 - 但这只给我留下了如何将 mimemessage 转换为字符串的问题。

最佳答案

我有一种解决方案 - 但希望有更好的解决方案:

/**
* add content of this type
*
* @param builder
* @param content
*/
private static void addContent(final StringBuilder builder, final Object content)
{
try
{
if (content instanceof MimeMultipart)
{
final MimeMultipart multi = (MimeMultipart) content;
for (int i = 0; i < multi.getCount(); i++)
{
addContent(builder, ((MimeMultipart) content).getBodyPart(i));
}
}
else if (content instanceof MimeBodyPart)
{

final MimeBodyPart message = (MimeBodyPart) content;
final Enumeration<?> headers = message.getAllHeaderLines();
while (headers.hasMoreElements())
{
final String line = (String) headers.nextElement();
builder.append(line).append("\n");
}
addContent(builder, message.getContent());
}
else if (content instanceof String)
{
builder.append((String) content).append("\n");
}
else
{
System.out.println(content.getClass().getName());
throw CommonException.notImplementedYet();
}
}
catch (final Exception theException)
{
throw CommonException.insteadOf(theException);
}

}

/**
* get a string from an email
*
* @param email
* @return
*/
public static String fromHtmlEmail(final ImageHtmlEmail email)
{
return fromMimeMessage(email.getMimeMessage());
}

/**
* @param message
* @return a string from a mime message
*/
private static String fromMimeMessage(final MimeMessage message)
{
try
{
message.saveChanges();
final StringBuilder output = new StringBuilder();
final Enumeration<?> headers = message.getAllHeaderLines();
while (headers.hasMoreElements())
{
final String line = (String) headers.nextElement();
output.append(line).append("\n");
}
addContent(output, message.getContent());
return output.toString();
}
catch (final Exception theException)
{
throw CommonException.insteadOf(theException);
}
}

}

关于java - 从 ImageHtmlEmail 获取电子邮件文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com