///|
pub struct MailStats {
messages : Int
parts : Int
attachments : Int
with_html : Int
with_plain : Int
with_authentication_results : Int
} derive(Eq, Debug)
///|
pub fn compute_stats(messages : Array[MailMessage]) -> MailStats {
let mut parts = 0
let mut attachments = 0
let mut with_html = 0
let mut with_plain = 0
let mut with_auth = 0
for message in messages {
parts = parts + part_count(message)
attachments = attachments + attachment_count(message)
if html_text(message) != "" {
with_html = with_html + 1
}
if plain_text(message) != "" {
with_plain = with_plain + 1
}
if authentication_results_from_message(message).length() > 0 {
with_auth = with_auth + 1
}
}
{
messages: messages.length(),
parts,
attachments,
with_html,
with_plain,
with_authentication_results: with_auth,
}
}
///|
pub fn stats_summary(stats : MailStats) -> String {
"messages=" +
stats.messages.to_string() +
" parts=" +
stats.parts.to_string() +
" attachments=" +
stats.attachments.to_string() +
" html=" +
stats.with_html.to_string() +
" plain=" +
stats.with_plain.to_string() +
" auth=" +
stats.with_authentication_results.to_string()
}
///|
pub fn messages_with_attachments(
messages : Array[MailMessage],
) -> Array[MailMessage] {
let out : Array[MailMessage] = []
for message in messages {
if attachment_count(message) > 0 {
out.push(message)
}
}
out
}
///|
pub fn messages_with_lint_errors(
messages : Array[MailMessage],
) -> Array[MailMessage] {
let out : Array[MailMessage] = []
for message in messages {
if error_count(lint_message(message)) > 0 {
out.push(message)
}
}
out
}