📅  最后修改于: 2022-03-11 14:59:45.703000             🧑  作者: Mango
@Throws(IOException::class, MessagingException::class)
private fun getTextFromMessage(message: Message): String {
var result: String = ""
if (message.isMimeType("text/plain")) {
result = message.content.toString()
}
else if (message.isMimeType("multipart/*")) {
val mimeMultipart =
message.content as MimeMultipart
result = getTextFromMimeMultipart(mimeMultipart)
}
else if(message.isMimeType("text/html")){
result = message.content.toString()
}
return result
}
@Throws(IOException::class, MessagingException::class)
private fun getTextFromMimeMultipart(
mimeMultipart: MimeMultipart
): String {
val count = mimeMultipart.count
if (count == 0) throw MessagingException("Multipart with no body parts not supported.")
val multipartRelated = ContentType(mimeMultipart.contentType).match("multipart/related")
if(multipartRelated){
val part = mimeMultipart.getBodyPart(0)
val multipartAlt = ContentType(part.contentType).match("multipart/alternative")
if(multipartAlt) {
return getTextFromMimeMultipart(part.content as MimeMultipart)
}
}else{
val multipartAlt = ContentType(mimeMultipart.contentType).match("multipart/alternative")
if (multipartAlt) {
for (i in 0 until count) {
val part = mimeMultipart.getBodyPart(i)
if (part.isMimeType("text/html")) {
return getTextFromBodyPart(part)
}
}
}
}
var result: String = ""
for (i in 0 until count) {
val bodyPart = mimeMultipart.getBodyPart(i)
result += getTextFromBodyPart(bodyPart)
}
return result
}
@Throws(IOException::class, MessagingException::class)
private fun getTextFromBodyPart(
bodyPart: BodyPart
): String {
var result: String = ""
if (bodyPart.isMimeType("text/plain")) {
result = bodyPart.content as String
} else if (bodyPart.isMimeType("text/html")) {
val html = bodyPart.content as String
result = html
} else if (bodyPart.content is MimeMultipart) {
result =
getTextFromMimeMultipart(bodyPart.content as MimeMultipart)
}
return result
}