(Context context, EntityMessage message, EntityIdentity identity, Session isession, boolean send)
| 357 | } |
| 358 | |
| 359 | static MimeMessageEx from(Context context, EntityMessage message, EntityIdentity identity, Session isession, boolean send) |
| 360 | throws MessagingException, IOException { |
| 361 | DB db = DB.getInstance(context); |
| 362 | SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); |
| 363 | int receipt_type = prefs.getInt("receipt_type", 2); |
| 364 | boolean receipt_legacy = prefs.getBoolean("receipt_legacy", false); |
| 365 | boolean hide_timezone = prefs.getBoolean("hide_timezone", false); |
| 366 | boolean autocrypt = prefs.getBoolean("autocrypt", true); |
| 367 | boolean mutual = prefs.getBoolean("autocrypt_mutual", true); |
| 368 | boolean encrypt_subject = prefs.getBoolean("encrypt_subject", false); |
| 369 | boolean forward_new = prefs.getBoolean("forward_new", false); |
| 370 | |
| 371 | if (identity != null && identity.receipt_type != null) |
| 372 | receipt_type = identity.receipt_type; |
| 373 | |
| 374 | Map<String, String> c = new HashMap<>(); |
| 375 | c.put("id", message.id == null ? null : Long.toString(message.id)); |
| 376 | c.put("encrypt", message.encrypt + "/" + message.ui_encrypt); |
| 377 | Log.breadcrumb("Build message", c); |
| 378 | |
| 379 | MimeMessageEx imessage = new MimeMessageEx(isession, message.msgid); |
| 380 | |
| 381 | // Flags |
| 382 | imessage.setFlag(Flags.Flag.SEEN, message.seen); |
| 383 | imessage.setFlag(Flags.Flag.FLAGGED, message.flagged); |
| 384 | imessage.setFlag(Flags.Flag.ANSWERED, message.answered); |
| 385 | |
| 386 | // Priority |
| 387 | if (EntityMessage.PRIORITIY_LOW.equals(message.priority)) { |
| 388 | // Low |
| 389 | imessage.addHeader("Importance", "Low"); |
| 390 | imessage.addHeader("Priority", "Non-Urgent"); |
| 391 | imessage.addHeader("X-Priority", "5"); // Lowest |
| 392 | //imessage.addHeader("X-MSMail-Priority", "Low"); |
| 393 | // SpamAssassin Rule: MISSING_MIMEOLE |
| 394 | // Standard description: Message has X-MSMail-Priority, but no X-MimeOLE |
| 395 | // Explanation: The message is pretending to be generated by a Microsoft email program |
| 396 | // which uses the extension header X-MSMail-Priority, |
| 397 | // but is missing the extension header X-MimeOLE which is characteristic of Microsoft email. |
| 398 | // This suggests that the sender is using badly-written mailout software, |
| 399 | // rather than a genuine Microsoft email program. |
| 400 | } else if (EntityMessage.PRIORITIY_HIGH.equals(message.priority)) { |
| 401 | // High |
| 402 | imessage.addHeader("Importance", "High"); |
| 403 | imessage.addHeader("Priority", "Urgent"); |
| 404 | imessage.addHeader("X-Priority", "1"); // Highest |
| 405 | //imessage.addHeader("X-MSMail-Priority", "High"); |
| 406 | } |
| 407 | |
| 408 | // Sensitivity |
| 409 | // https://datatracker.ietf.org/doc/html/rfc4021#section-2.1.55 |
| 410 | if (EntityMessage.SENSITIVITY_PERSONAL.equals(message.sensitivity)) |
| 411 | imessage.addHeader("Sensitivity", "Personal"); |
| 412 | else if (EntityMessage.SENSITIVITY_PRIVATE.equals(message.sensitivity)) |
| 413 | imessage.addHeader("Sensitivity", "Private"); |
| 414 | else if (EntityMessage.SENSITIVITY_CONFIDENTIAL.equals(message.sensitivity)) |
| 415 | imessage.addHeader("Sensitivity", "Company-Confidential"); |
| 416 |
no test coverage detected