SOGO Mailer UI ============== - own (Thunderbird styled) frame - component for tree TODO ==== - a lot ;-> - SOPE: does not recognize ! Components ========== UIxMailAccountView.wox UIxMailAccountsView.wox UIxMailEditor.wox UIxMailToSelection.wox UIxMailListView.wox UIxMailMainFrame.wox UIxMailTree.wox UIxMailView.wox Defaults ======== SOGoShowInternetMarker - bool - show a marker in the editor that the request is from the outside SOGoInternetDetectQualifier - string - an EOQualifier to detect whether a set of HTTP headers is from the outside, eg: "NOT (minequprovenance = 'intranet')" -SOGoInternetDetectQualifier '"NOT (minequprovenance = \"intranet\")"' Note: all header field names are lowercase SOGoInternetMailHeaders - dictionary - if a request was detected as coming from the Internet, add the mail headers specified in this default eg: { received = "sogo depuis internet"; } -SOGoInternetMailHeaders "{received=\"sogo depuis internet\"; }" SOGoMailEditorKeepTmpFile - for debugging, if a mail was send, keep the file containing the MIME in the temporary directory for review instead of deleting it Notes ===== - we might want to bind the content viewers as SOPE methods to the mail class? eg "viewTextPlain" - this would not return a WOComponent, but a SoPageInvocation - caching might be more difficult - some 'reuse component' support in SoPageInvocation for stateless components? - watch nested calls - for this we would need to add support for embedded calling of SOPE methods ? Bodystructures ============== Multiparts: multipart/MIXED, multipart/SIGNED Feature: we fetch all plain/text bodies in a single run by traversing the body structure. Sample Bodystructure (GPG): ---snip--- { parts = ( { bodyId = ""; description = ""; encoding = "QUOTED-PRINTABLE"; lines = 22; parameterList = {}; size = 731; subtype = PLAIN; type = text; }, { bodyId = ""; description = "Esta parte del mensaje"; encoding = 7BIT; parameterList = {name = "signature.asc"; }; size = 196; subtype = "PGP-SIGNATURE"; type = application; } ); subtype = SIGNED; type = multipart; } ---snap--- Sample Body Structure (Image): ---snip--- { parts = ( { bodyId = ""; description = ""; encoding = BASE64; parameterList = {name = "PoseChau.jpg"; "x-unix-mode" = 0644; }; size = 58370; subtype = JPEG; type = image; }, { bodyId = ""; description = ""; encoding = 7BIT; lines = 2; parameterList = {charset = "US-ASCII"; format = flowed; }; size = 57; subtype = PLAIN; type = text; } ); subtype = MIXED; type = multipart; } ---snap---