<!DOCTYPE html> <html class="rl-started-trigger"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="google" content="notranslate"> <meta name="robots" content="noindex,nofollow,noodp"> <meta name="theme-color" content="black"> <title></title> <style id="app-boot-css">:root{--fontSans:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--fontSerif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--fontMono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}#rl-app.fontArial{--fontSans:"Nimbus Sans L","Liberation sans","Arial Unicode MS",Arial,Helvetica,Garuda,Utkal,FreeSans,sans-serif}#rl-app.fontTahoma{--fontSans:"Luxi Sans",Tahoma,Loma,Geneva,Meera,sans-serif}#rl-app.fontTrebuchet{--fontSans:"DejaVu Sans Condensed",Trebuchet,"Trebuchet MS",sans-serif}#rl-app.fontLucida{--fontSans:"Lucida Sans Unicode","Lucida Sans","DejaVu Sans","Bitstream Vera Sans","DejaVu LGC Sans",sans-serif}#rl-app.fontVerdana{--fontSans:"DejaVu Sans",Verdana,Geneva,"Bitstream Vera Sans","DejaVu LGC Sans",sans-serif}#rl-app.fontMonoCourier{--fontMono:"Liberation Mono","Courier New",FreeMono,Courier,monospace}#rl-app.fontMonoLucida{--fontMono:"DejaVu Sans Mono","DejaVu LGC Sans Mono","Bitstream Vera Sans Mono","Lucida Console",Monaco,monospace}#rl-app.fontSerifTimes{--fontSerif:"Nimbus Roman No9 L","Times New Roman",Times,FreeSerif,serif}#rl-app.fontSerifPalatino{--fontSerif:"Bitstream Charter","Palatino Linotype",Palatino,Palladio,"URW Palladio L","Book Antiqua",Times,serif}#rl-app.fontSerifGeorgia{--fontSerif:"URW Palladio L",Georgia,Times,serif}body,html{margin:0;padding:0;-webkit-text-size-adjust:100%}#rl-app *,#rl-app ::after,#rl-app ::before{box-sizing:border-box}#rl-app{background-color:var(--main-bg-color,#aaa);color:var(--main-color,#333);font-family:var(--fontSans);-webkit-touch-callout:none;font-size:var(--main-font-size,14px);line-height:1.25;position:relative}body#rl-app{height:100vh;height:100dvh;width:100vw}#rl-BadBrowser,#rl-NoCookie,#rl-loading,#rl-loading-error{color:var(--loading-color,#000);text-shadow:var(--loading-text-shadow);font-size:214%;line-height:130%;position:fixed;text-align:center;top:50%;transform:translateY(-50%);width:100%}#rl-loading .icon-spinner{height:1em;width:1em}
</style> <link type="text/css" rel="stylesheet" href="/snappymail/v/2.38.2/static/css/app.min.css"> <link rel="manifest" href="/snappymail/v/2.38.2/static/manifest.json"> <link rel="icon" href="/snappymail/v/2.38.2/static/favicon.svg" type="image/svg+xml"> <style id="app-theme-style" data-name="Default">:root{color-scheme:light;/* MAIN */
	--main-color:#333;--main-bg-color:#48525C;--main-bg-image:url("/snappymail/v/2.38.2/themes/Default/images/background.jpg");/* LOADING */
	--loading-color:#ddd;--loading-text-shadow:0px 1px 0px rgba(0,0,0,0.5);/* LOGIN */
	--login-color:#eee;--login-bg-color:rgba(0,0,0,0.5);--login-box-shadow:0px 2px 10px rgba(0,0,0,0.5);--login-border:none;--login-border-radius:7px;/* MENU */
	--dropdown-menu-color:#333;--dropdown-menu-bg-color:#fff;--dropdown-menu-hover-bg-color:#48525C;--dropdown-menu-hover-color:#eee;--dropdown-menu-disable-color:#999;/* FOLDERS */
	--folders-color:#fff;--folders-disabled-color:#aaa;--folders-selected-color:#fff;--folders-selected-bg-color:rgba(0,0,0,0.5);--folders-focused-color:#fff;--folders-focused-bg-color:rgba(0,0,0,0.7);--folders-hover-color:#fff;--folders-hover-bg-color:rgba(0,0,0,0.5);--folders-drop-color:#fff;--folders-drop-bg-color:rgba(0,0,0,0.5);/* SETTINGS */
	--settings-menu-color:#fff;--settings-menu-selected-color:#fff;--settings-menu-selected-bg-color:rgba(0,0,0,0.5);--settings-menu-hover-color:#fff;--settings-menu-hover-bg-color:rgba(0,0,0,0.5);/* MESSAGE LIST */
	--message-list-toolbar-bg-color:#eee;}.thm-message-list-top-toolbar,.thm-message-list-bottom-toolbar{background-image:linear-gradient(to bottom,#f4f4f4,#dfdfdf) !important;background-repeat:repeat-x !important;}</style> <link type="image/png" rel="shortcut icon" href="/snappymail/v/2.38.2/static/apple-touch-icon.png"> <link type="image/png" rel="apple-touch-icon" href="/snappymail/v/2.38.2/static/apple-touch-icon.png"> </head> <body id="rl-app" data-admin='0' spellcheck="false"> <div id="rl-loading"> <div id="rl-loading-desc">hộp thư cá nhân</div> <i class="icon-spinner"></i> <noscript><div class="error-desc">此应用需要 JavaScript 支持！<br />
您的浏览器不支持 JavaScript。<br />
请启用浏览器的 JavaScript 并重试。<br />
</div></noscript> </div> <div id="rl-loading-error" hidden="">An error occurred.<br>Please refresh the page and try again.<br></div> <div id="rl-BadBrowser" hidden=""> <h1>您的浏览器过时了。</h1> <div class="error-desc">为了使用所有特性，<br />
下载并安装其中一款浏览器：<br />
</div> </div> <div id="rl-NoCookie" hidden=""> <h1>此应用需要 Cookies 支持！</h1> <div class="error-desc">您的浏览器不支持 Cookies。
请启用浏览器的 Cookies 并重试。
</div> </div> <div id="rl-content" hidden=""> <div id="rl-left"></div> <div id="rl-right"></div> </div> <div id="rl-popups"></div> <template id="CheckboxComponent"><label class="e-component e-checkbox material-design" data-bind="css: { 'disabled': !enable() }"> <div> <input type="checkbox" value="1" data-bind="checked: value, enable: enable, attr: {name: name}"> <div role="checkbox"></div> </div> <!-- ko if: label --> <span data-bind="attr: {'data-i18n': label}"></span> <!-- /ko --> </label> </template><template id="SelectComponent"><div class="e-component"> <select data-bind="options: options, value: value, optionsText: optionsText, optionsValue: optionsValue, css: className, optionsAfterRender: defaultOptionsAfterRender"></select> <!-- ko if: label --> <span data-bind="attr: {'data-i18n': label}"></span> <!-- /ko --> <!-- ko if: trigger --> <span data-bind="saveTrigger: trigger"></span> <!-- /ko --> </div> </template><template id="Login"><div class="descWrapper" data-bind="visible: '' !== loadingDesc, text: loadingDesc"></div> <div class="alert" data-bind="hidden: !submitError()" hidden=""> <a href="#" class="close" data-bind="click: hideError">×</a> <span data-bind="text: submitError"></span> <p data-bind="visible: '' !== submitErrorAdditional()"> <span data-i18n="GLOBAL/SERVER_MESSAGE"></span>: <!-- ko text: submitErrorAdditional --><!-- /ko --> </p> </div> <form action="#/"  spellcheck="false" method="POST" data-bind="submit: submitForm, css: {'errorAnimated': formError, 'submitting': submitRequest()}"> <div class="controls" data-bind="css: {'error': emailError}"> <span class="fontastic">✉</span> <input name="Email" required="" type="text" class="input-block-level" pattern="[^@\s]+(@[^\s]+)?" inputmode="email" autofocus="" autocomplete="email" autocorrect="off" autocapitalize="off" data-bind="textInput: email, disable: submitRequest" data-i18n="[placeholder]GLOBAL/EMAIL"> </div> <div class="controls" data-bind="css: {'error': passwordError}"> <span class="fontastic">🔑</span> <input name="Password" required="" type="password" class="input-block-level" autocomplete="current-password" autocorrect="off" autocapitalize="off" data-bind="textInput: password, disable: submitRequest" data-i18n="[placeholder]GLOBAL/PASSWORD"> </div> <div id="plugin-Login-BottomControlGroup"></div> <div class="controls" style="display: flex"> <div class="e-checkbox" tabindex="0" data-bind="toggle: signMe"> <i role="checkbox" class="fontastic" data-bind="text: signMe() ? '☑' : '☐'"></i> <span data-i18n="LOGIN/LABEL_SIGN_ME"></span> </div> <div class="language-buttons"> <a href="#" class="language-button fontastic" data-bind="visible: allowLanguagesOnLogin, click: selectLanguage, css: { 'icon-spinner' : langRequest }" data-i18n="[title]POPUPS_LANGUAGES/TITLE_LANGUAGES"> 🌍 </a> </div> </div> <div> <button class="btn btn-large buttonLogin" data-bind="command: submitCommand" data-i18n="LOGIN/BUTTON_SIGN_IN"></button> </div> </form> </template><template id="MailFolderList"><div class="b-folders g-ui-user-select-none"> <div class="b-toolbar btn-toolbar"> <a class="btn buttonCompose" data-bind="click: composeClick, css: {'btn-warning': composeInEdit, 'btn-success': !composeInEdit()}" data-i18n="[title]FOLDER_LIST/BUTTON_NEW_MESSAGE"> <i class="icon-paper-plane"></i> <span class="buttonComposeText" data-i18n="FOLDER_LIST/BUTTON_NEW_MESSAGE"></span> </a> <a class="btn buttonContacts fontastic" data-bind="visible: allowContacts, click: contactsClick" data-i18n="[title]GLOBAL/CONTACTS">📇</a> </div> <div class="b-content"> <ul class="b-folders-system" data-bind="foreach: systemFolders"> <li> <a data-bind="dropmessages: $data, css: { 'selected': selected, 'selectable': selectable, 'anim-action-class': actionBlink, 'is-flagged': isFlagged }, attr: { 'data-icon': icon, 'data-unread': unreadCount }"> <!-- ko text: localName --><!-- /ko --> <!-- ko if: isInbox --> <span class="flag-icon fontastic"></span> <!-- /ko --> </a> </li> </ul> <hr> <div class="search-input-wrp" data-bind="visible: foldersFilterVisible"> <input type="search" id="folderSearchInput" data-bind="textInput: foldersFilter" data-i18n="[placeholder]GLOBAL/SEARCH"> <a data-bind="click: clearFolderSearch, visible: foldersFilter">✕</a> </div> <div class="e-checkbox" tabindex="0" data-bind="toggle: filterUnseen"> <i role="checkbox" class="fontastic" data-bind="text: filterUnseen() ? '☑' : '☐'"></i> <span data-i18n="SEARCH/UNSEEN"></span> </div> <ul class="b-folders-user" data-bind="css: {unreadOnly: filterUnseen}, template: { name: 'MailFolderListItem', foreach: folderListVisible }"></ul> <div class="move-action-content-wrapper" data-bind="visible: moveAction"></div> </div> <div class="b-footer btn-toolbar"> <div class="btn-group"> <a class="btn fontastic toggleLeft" data-bind="click: toggleLeftPanel"></a> </div> <div class="btn-group hide-on-panel-disabled"> <a class="btn icon-folder-add" data-bind="click: createFolder" data-i18n="[title]POPUPS_CREATE_FOLDER/TITLE_CREATE_FOLDER"></a> <a class="btn fontastic" data-bind="click: configureFolders" data-i18n="[title]SETTINGS_LABELS/FOLDERS">⚙</a> </div> </div> </div> </template><template id="MailFolderListItem"><li> <a data-bind="dropmessages: $data,    css: { 'selected': selected() && !isSystemFolder(), 'system': isSystemFolder, 'selectable': canBeSelected, 'unread-sub': hasUnreadInSub, 'anim-action-class': actionBlink },    attr: { 'data-unread': unreadCount, href: href }"> <i data-bind="css: collapsedCss()"></i> <!-- ko text: name --><!-- /ko --> </a> <!-- ko if: hasVisibleSubfolders --> <ul data-bind="template: { name: 'MailFolderListItem', foreach: visibleSubfolders }, css: { 'collapsed': collapsed() }"></ul> <!-- /ko --> </li> </template><template id="MailMessageList"><div class="btn-toolbar" data-bind="css: {'hasChecked':checkAll}"> <a class="btn btn-thin fontastic toggleLeft"></a> <a class="btn buttonCompose onCheckedHide" data-bind="click: composeClick, css: {'btn-warning': composeInEdit, 'btn-success': !composeInEdit()}" data-i18n="[title]FOLDER_LIST/BUTTON_NEW_MESSAGE"> <i class="icon-paper-plane"></i> </a> <a class="btn onCheckedHide" data-bind="click: reload" data-i18n="[title]MESSAGE_LIST/BUTTON_RELOAD"> <i class="icon-spinner not-animated"></i> </a> <a href="#" tabindex="-1" class="btn onCheckedShow" data-bind="command: moveCommand" data-i18n="[title]GLOBAL/MOVE_TO"> <i class="icon-copy visible-on-ctrl-btn"></i> <i class="fontastic hidden-on-ctrl-btn">📁</i> </a> <div class="btn-group onCheckedShow"> <a class="btn fontastic" data-bind="visible: archiveAllowed, command: archiveCommand" data-i18n="[title]GLOBAL/TO_ARCHIVE">🗄</a> <a class="btn fontastic" data-bind="visible: canMarkAsSpam, command: spamCommand" data-i18n="[title]GLOBAL/TO_SPAM">⚠</a> <a class="btn" data-bind="visible: isSpamFolder, command: notSpamCommand" data-i18n="[title]GLOBAL/NOT_SPAM"> <i class="icon-check-mark-circle-two"></i> </a> <a class="btn fontastic" data-bind="command: deleteCommand" data-i18n="[title]GLOBAL/DELETE">🗑</a> <!-- <a class="btn fontastic" data-bind="command: undeleteCommand, hidden: hideDeleted" data-i18n="[title]GLOBAL/UNDELETE" style="transform:rotate(-180deg)">🗑</a> --> </div> <div class="btn-group dropdown" data-bind="registerBootstrapDropdown: true"> <a id="more-list-dropdown-id" class="btn dropdown-toggle fontastic" href="#" tabindex="-1" data-i18n="[title]GLOBAL/MORE">☰</a> <menu class="dropdown-menu" role="menu" aria-labelledby="more-list-dropdown-id"> <li role="presentation" data-bind="click: listUnsetSeen, css: {'disabled': !messageList.hasCheckedOrSelected()}"> <a href="#" tabindex="-1" data-icon="" data-i18n="MESSAGE_LIST/MENU_UNSET_SEEN"></a> </li> <li role="presentation" data-bind="click: listSetSeen, css: {'disabled': !messageList.hasCheckedOrSelected()}"> <a href="#" tabindex="-1" data-icon="" data-i18n="MESSAGE_LIST/MENU_SET_SEEN"></a> </li> <li role="presentation" data-bind="click: listSetFlags, css: {'disabled': !messageList.hasCheckedOrSelected()}"> <a href="#" tabindex="-1" data-icon="★" data-i18n="MESSAGE_LIST/MENU_SET_FLAG"></a> </li> <li role="presentation" data-bind="click: listUnsetFlags, css: {'disabled': !messageList.hasCheckedOrSelected()}"> <a href="#" tabindex="-1" data-icon="☆" data-i18n="MESSAGE_LIST/MENU_UNSET_FLAG"></a> </li> <li role="presentation" data-bind="click: listSetAllSeen, css: {'disabled': !messageList().length}"> <a href="#" tabindex="-1" data-icon="" data-i18n="MESSAGE_LIST/MENU_SET_ALL_SEEN"></a> </li> <li class="dividerbar" role="presentation" data-bind="command: forwardCommand"> <a href="#" tabindex="-1" data-icon="↞" data-i18n="MESSAGE_LIST/BUTTON_MULTY_FORWARD"></a> </li> <li role="presentation" data-bind="command: downloadAttachCommand, visible: downloadAsZipAllowed"> <a href="#" tabindex="-1" data-icon="📦" data-i18n="MESSAGE_LIST/DOWNLOAD_ALL_ATTACHMENTS"></a> </li> <li role="presentation" data-bind="command: downloadZipCommand, visible: downloadAsZipAllowed"> <a href="#" tabindex="-1" data-icon="💾" data-i18n="MESSAGE/LINK_DOWNLOAD_AS_ZIP"></a> </li> <li class="dividerbar" role="presentation" data-bind="command: moveCommand"> <a href="#" tabindex="-1" data-icon="📁" data-i18n="GLOBAL/MOVE_TO"></a> </li> <li class="presentation" role="presentation" data-bind="command: copyCommand"> <a href="#" tabindex="-1" data-icon="&#xE068;" data-i18n="GLOBAL/COPY_TO"></a> </li> <li role="presentation" data-bind="visible: archiveAllowed, command: archiveCommand"> <a href="#" tabindex="-1" data-icon="🗄" data-i18n="GLOBAL/TO_ARCHIVE">🗄</a> </li> <li role="presentation" data-bind="visible: canMarkAsSpam, command: spamCommand"> <a href="#" tabindex="-1" data-icon="⚠" data-i18n="GLOBAL/SPAM"></a> </li> <li role="presentation" data-bind="visible: isSpamFolder, command: notSpamCommand"> <a href="#" tabindex="-1" data-icon="" data-i18n="GLOBAL/NOT_SPAM"></a> </li> <li role="presentation" data-bind="command: deleteCommand"> <a href="#" tabindex="-1" data-icon="🗑" data-i18n="GLOBAL/DELETE"></a> </li> <li role="presentation" data-bind="command: undeleteCommand, hidden: hideDeleted"> <a href="#" tabindex="-1" data-icon="🗑" data-i18n="GLOBAL/UNDELETE" class="rotate"></a> </li> <li role="presentation" data-bind="visible: allowDangerousActions, command: deleteWithoutMoveCommand"> <a href="#" tabindex="-1" data-icon="🗑" data-i18n="MESSAGE_LIST/BUTTON_DELETE_WITHOUT_MOVE"></a> </li> <li role="presentation" data-bind="visible: allowDangerousActions, click: clear"> <a href="#" tabindex="-1" data-icon="🔥" data-i18n="MESSAGE_LIST/BUTTON_EMPTY_FOLDER"></a> </li> </menu> </div> <div class="btn-group dropdown onCheckedHide" data-bind="visible: !sortSupported()"> <div id="no-sort-list" class="btn fontastic" data-i18n="[title]MESSAGE_LIST/NO_SORT">✖⬇</div> </div> <div class="btn-group dropdown onCheckedHide" data-bind="visible: sortSupported(), registerBootstrapDropdown: true"> <a id="sort-list-dropdown-id" class="btn dropdown-toggle fontastic" href="#" tabindex="-1" data-i18n="[title]MESSAGE_LIST/SORT" data-bind="text: sortText">⬇</a> <menu class="dropdown-menu" role="menu" aria-labelledby="sort-list-dropdown-id"> <li role="presentation" data-sort="" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="📅⬇" data-i18n="MESSAGE_LIST/SORT_DATE_DESC"></a> </li> <li role="presentation" data-sort="DATE" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="📅⬆" data-i18n="MESSAGE_LIST/SORT_DATE_ASC"></a> </li> <li class="dividerbar" role="presentation" data-sort="FROM" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="@⬇" data-i18n="MESSAGE_LIST/SORT_FROM_ASC"></a> </li> <li role="presentation" data-sort="REVERSE FROM" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="@⬆" data-i18n="MESSAGE_LIST/SORT_FROM_DESC"></a> </li> <li class="dividerbar" role="presentation" data-sort="REVERSE SIZE" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="✉⬇" data-i18n="MESSAGE_LIST/SORT_SIZE_DESC"></a> </li> <li role="presentation" data-sort="SIZE" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="✉⬆" data-i18n="MESSAGE_LIST/SORT_SIZE_ASC"></a> </li> <li class="dividerbar" role="presentation" data-sort="SUBJECT" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="𝐒⬇" data-i18n="MESSAGE_LIST/SORT_SUBJECT_ASC"></a> </li> <li role="presentation" data-sort="REVERSE SUBJECT" data-bind="click: changeSort"> <a href="#" tabindex="-1" data-icon="𝐒⬆" data-i18n="MESSAGE_LIST/SORT_SUBJECT_DESC"></a> </li> </menu> </div> </div> <div class="messageList g-ui-user-select-none" data-bind="css: {'hideMessageListCheckbox': !useCheckboxesInList() }"> <div class="second-toolbar thm-message-list-top-toolbar"> <i class="checkboxCheckAll fontastic" data-bind="text: checkAll() ? (isIncompleteChecked() ? '▣' : '☑') : '☐'"></i> <div class="search-input-wrp"> <input type="search" class="inputSearch" tabindex="-1" placeholder="Search" autocorrect="off" autocapitalize="off" data-i18n="[placeholder]GLOBAL/SEARCH" data-bind="textInput: inputSearch, hasfocus: focusSearch"> <a class="closeSearch" data-bind="click: cancelSearch, visible: messageListSearchDesc()">×</a> </div> <a class="btn buttonMoreSearch" data-bind="click: advancedSearchClick">▼</a> </div> <div class="b-content"> <div class="listThreadUidDesc" data-bind="visible: messageList.threadUid(), click: cancelThreadUid" data-icon="⬅" data-i18n="MESSAGE_LIST/BACK_TO_MESSAGE_LIST"></div> <div class="listSearchDesc" data-bind="visible: messageListSearchDesc(), text: messageListSearchDesc"></div> <div class="listDragOver" data-bind="css: {'viewAppendArea': dragOver() && !messageList.error() && !popupVisibility(), 'dragOverEnter': dragOverEnter }" data-icon="⬇" data-i18n="MESSAGE_LIST/PUT_MESSAGE_HERE"></div> <div class="listClear" data-bind="visible: clearListIsVisible()"> <a href="#" class="g-ui-link" data-i18n="MESSAGE_LIST/BUTTON_EMPTY_FOLDER" data-bind="click: clear"></a> </div> <div class="listError error" data-bind="visible: !dragOver() && messageList.error(), text: messageList.error"></div> <div class="listEmptyMessage" data-bind="visible: listEmptyMessage(), text: listEmptyMessage()"></div> <div class="listLoading" data-bind="visible: !dragOver() && !messageList().length && messageList.isLoading() && !messageList.error()"> <i class="icon-spinner"></i> <span data-i18n="GLOBAL/LOADING"></span> </div> <!-- ko if: listGrouped --> <div class="messageListPlace" data-bind="dragmessages: 1, i18nUpdate: groupedList, foreach: groupedList" draggable="true"> <div class="groupLabel" data-bind="text: label, click: $root.groupSearch" data-i18n="[title]GLOBAL/SEARCH"></div> <!-- ko foreach: messages --> <div class="messageListItem" data-bind="css: lineAsCss(), attr: {title: preview}"> <div class="messageCheckbox"> <div class="checkboxMessage fontastic" data-bind="text: checked() ? '☑' : '☐'"></div> </div><div> <div class="flagParent fontastic"></div> <div class="senderParent" data-bind="attr: {title: senderClearEmailsString}, text: senderEmailsString"></div> <div class="subjectParent" data-bind="text: subject"></div> <div class="threads-len" data-bind="visible: 1 < threadsLen(), text: threadsLenText(), attr: {'data-unseen': threadUnseenLen() || null}"></div> <div class="attachmentParent"> <i data-bind="css: attachmentIconClass"></i> </div> <div class="sizeParent" data-bind="text: friendlySize()"></div> <time data-bind="attr:{'data-time-format':$root.timeFormat()}, time: dateTimestamp"></time> </div> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: listGrouped --> <div class="messageListPlace" data-bind="dragmessages: 1, foreach: messageList" draggable="true"> <div class="messageListItem" data-bind="css: lineAsCss(), attr:{title:preview}"> <div class="messageCheckbox"> <div class="checkboxMessage fontastic" data-bind="text: checked() ? '☑' : '☐'"></div> </div><div data-bind="attr:{style:indent()}, css:{reply:indent()}"> <div class="flagParent fontastic"></div> <div class="senderParent" data-bind="attr: {title: senderClearEmailsString}, text: senderEmailsString"></div> <div class="subjectParent" data-bind="text: subject"></div> <div class="threads-len" data-bind="visible: 1 < threadsLen(), text: threadsLenText(), attr: {'data-unseen': threadUnseenLen() || null}"></div> <div class="attachmentParent"> <i data-bind="css: attachmentIconClass"></i> </div> <div class="sizeParent" data-bind="text: friendlySize()"></div> <time data-time-format="AUTO" data-bind="time: dateTimestamp"></time> </div> </div> </div> <!-- /ko --> <div id="messagesDragImage"><span class="text"></span> <span class="fontastic">✉</span></div> </div> <div class="b-footer thm-message-list-bottom-toolbar"> <!-- ko if: userUsageProc() --> <span data-bind="attr: { title: quotaTooltip() }" class="e-quota"> <!-- ko text: userUsageProc --><!-- /ko -->% </span> <!-- /ko --> <!-- ko template: { name: 'Paginator', data: messageListPaginator } --><!-- /ko --> </div> </div> </template><template id="MailMessageView"><div class="top-toolbar g-ui-user-select-none btn-toolbar"> <div class="btn-group" data-i18n="[title]GLOBAL/CLOSE"> <a class="btn buttonClose fontastic" data-bind="click: closeMessage">✖</a> </div> <div class="btn-group" data-bind="visible: isDraftFolder()" data-i18n="[title]MESSAGE/BUTTON_EDIT"> <a class="btn btn-success buttonEdit fontastic" data-bind="command: editCommand">🖉</a> </div> <div class="btn-group"> <a class="btn fontastic" data-bind="visible: archiveAllowed, command: archiveCommand" data-i18n="[title]GLOBAL/TO_ARCHIVE">🗄</a> <a class="btn fontastic" data-bind="visible: canMarkAsSpam , command: spamCommand" data-i18n="[title]GLOBAL/TO_SPAM">⚠</a> <a class="btn" data-bind="visible: isSpamFolder, command: notSpamCommand" data-i18n="[title]GLOBAL/NOT_SPAM"> <i class="icon-check-mark-circle-two"></i> </a> <a class="btn fontastic" data-bind="visible: !canBeUndeleted(), command: deleteCommand" data-i18n="[title]GLOBAL/DELETE">🗑</a> <a class="btn fontastic" data-bind="visible: canBeUndeleted, command: undeleteCommand" data-i18n="[title]GLOBAL/UNDELETE"><div class=btn-rotate>🗑</div></a> </div> <div class="btn-group"> <a class="btn btn-thin buttonUp fontastic" data-bind="command: goUpCommand">❮</a> <a class="btn btn-thin buttonDown fontastic" data-bind="command: goDownCommand">❯</a> </div> </div> <div class="messageView"> <div class="b-message-view-backdrop" data-bind="visible: moveAction"> <div class="backdrop-message" data-icon="📁" data-i18n="MESSAGE/MESSAGE_VIEW_MOVE_DESC"></div> </div> <div class="b-message-view-checked-helper" data-bind="visible: !message() && '' === messageError() && hasCheckedMessages(), text: printableCheckedMessageCount()"></div> <div class="b-message-view-desc error" data-bind="visible: !message() && '' !== messageError() && !hasCheckedMessages(), text: messageError()"> </div> <div class="b-message-view-desc" data-i18n="MESSAGE/MESSAGE_VIEW_DESC" data-bind="visible: !message() && '' === messageError() && !hasCheckedMessages()"> </div> <div class="b-message" data-bind="visible: message, i18nUpdate: message, css: message()?.lineAsCss(0)"> <div class="message-fixed-button-toolbar"> <a class="btn btn-success buttonEdit fontastic hide-mobile" data-bind="visible: isDraftFolder(), command: editCommand">🖉</a> <div class="btn-group" style="margin-right: -8px; display: inline;"> <span data-bind="visible: canBeRepliedOrForwarded"> <a class="btn btn-thin btn-transparent buttonReply fontastic" data-bind="visible: 1 == msgDefaultAction(), command: replyCommand" data-i18n="[title]MESSAGE/BUTTON_REPLY">←</a> <a class="btn btn-thin btn-transparent buttonReplyAll fontastic" data-bind="visible: 2 == msgDefaultAction(), command: replyAllCommand" data-i18n="[title]MESSAGE/BUTTON_REPLY_ALL">↞</a> </span> <div class="btn-group" data-bind="registerBootstrapDropdown: true, initDom: actionsMenu" style="display: inline-block"> <a class="btn btn-thin btn-transparent dropdown-toggle fontastic" id="more-view-dropdown-id" href="#" tabindex="-1">☰</a> <menu class="dropdown-menu right-edge" role="menu" aria-labelledby="more-view-dropdown-id"> <div data-bind="visible: !isDraftFolder()"> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: replyCommand" data-icon="←" data-i18n="MESSAGE/BUTTON_REPLY"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: replyAllCommand" data-icon="↞" data-i18n="MESSAGE/BUTTON_REPLY_ALL"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: forwardCommand" data-icon="→" data-i18n="MESSAGE/BUTTON_FORWARD"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: forwardAsAttachmentCommand" data-icon="⥅" data-i18n="MESSAGE/BUTTON_FORWARD_AS_ATTACHMENT"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: editAsNewCommand" data-icon="🖉" data-i18n="MESSAGE/BUTTON_EDIT_AS_NEW"></a> </li> </div> <div class="dividerbar"> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: setUnseen" data-icon=" " data-i18n="MESSAGE_LIST/MENU_UNSET_SEEN"></a> </li> <li role="presentation" data-bind="visible: archiveAllowed"> <a href="#" tabindex="-1" data-bind="command: archiveCommand" data-icon="🗄" data-i18n="GLOBAL/TO_ARCHIVE"></a> </li> <li role="presentation" data-bind="visible: canMarkAsSpam"> <a href="#" tabindex="-1" data-bind="command: spamCommand" data-icon="⚠" data-i18n="GLOBAL/TO_SPAM"></a> </li> <li role="presentation" data-bind="visible: isSpamFolder"> <a href="#" tabindex="-1" data-bind="command: notSpamCommand"> <i class="icon-check-mark-circle-two"></i> <span data-i18n="GLOBAL/NOT_SPAM"></span> </a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: moveCommand" data-icon="📁" data-i18n="GLOBAL/MOVE_TO"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: copyCommand" data-icon="&#xE068;" data-i18n="GLOBAL/COPY_TO"></a> </li> <li role="presentation" data-bind="visible: !canBeUndeleted()"> <a href="#" tabindex="-1" data-bind="command: deleteCommand" data-icon="🗑" data-i18n="GLOBAL/DELETE"></a> </li> <li role="presentation" data-bind="visible: canBeUndeleted"> <a href="#" tabindex="-1" data-bind="command: undeleteCommand" data-icon="🗑" data-i18n="GLOBAL/UNDELETE" class="rotate"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="command: deleteWithoutMoveCommand" data-icon="🗑" data-i18n="MESSAGE_LIST/BUTTON_DELETE_WITHOUT_MOVE"></a> </li> <li class="dividerbar" role="presentation" data-bind="visible: firstUnsubsribeLink"> <a target="_blank" href="#" tabindex="-1" data-bind="attr: { href: firstUnsubsribeLink }" data-icon="✖" data-i18n="MESSAGE/BUTTON_UNSUBSCRIBE"></a> </li> </div> <div data-bind="with: message" class="dividerbar"> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: printMessage" data-icon="🖨" data-i18n="MESSAGE/MENU_PRINT"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: $root.toggleFullScreen"> <i data-bind="css: { 'icon-arrows-out': !$root.fullScreenMode(), 'icon-arrows-in': $root.fullScreenMode }"></i> <span data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_TOGGLE"></span> </a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: popupMessage" data-icon="⧉" data-i18n="MESSAGE/BUTTON_IN_NEW_WINDOW"></a> </li> <li role="presentation" data-bind="visible: html() && !isHtml()"> <a href="#" tabindex="-1" data-bind="click: viewHtml" data-icon="👁" data-i18n="MESSAGE/HTML_VIEW"></a> </li> <li role="presentation" data-bind="visible: isHtml()"> <a href="#" tabindex="-1" data-bind="click: viewPlain" data-icon="👁" data-i18n="MESSAGE/PLAIN_VIEW"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: swapColors" data-icon="🎨" data-i18n="MESSAGE/SWAP_COLORS"></a> </li> <li class="dividerbar" role="presentation"> <a target="_blank" href="#" tabindex="-1" data-bind="attr: { href: viewRaw() }"> <i class="icon-file-code"></i> <span data-i18n="MESSAGE/MENU_VIEW_ORIGINAL"></span> </a> </li> <li role="presentation"> <a target="_blank" href="#" tabindex="-1" data-bind="attr: { href: downloadLink() }" data-icon="📥" data-i18n="MESSAGE/MENU_DOWNLOAD_ORIGINAL"></a> </li> </div> </menu> </div> </div> </div> <div class="messageItemHeader" data-bind="if: message, i18nUpdate: message"> <div class="subjectParent"> <span class="infoParent g-ui-user-select-none fontastic" data-bind="click: toggleFullInfo">ℹ</span> <span class="flagParent g-ui-user-select-none flagOff fontastic" data-bind="text: message().isFlagged() ? '★' : '☆', css: {flagOn: message().isFlagged(), flagOff: !message().isFlagged()}"></span> <span class="subject" data-bind="text: message().subject"></span> <a href="#" class="close" data-bind="click: closeMessage" style="margin-top: -8px;">×</a> </div> <div class="informationShort"> <span class="from" data-bind="html: viewFromShort, attr:{ title: message().from }"></span> <i class="fontastic" data-bind="text: dkimIcon, css: dkimIconClass, attr:{ title: dkimTitle }"></i> </div> </div> <div id="messageItem"> <div class="messageItemHeader" data-bind="if: message, i18nUpdate: message"> <div data-bind="hidden: showFullInfo"> <time class="date" data-time-format="FULL" data-bind="visible: 0 < message().dateTimestamp(), time: message().dateTimestamp()"></time> <div class="informationShortWrp"> <div class="informationShort" data-bind="visible: message().to.length"> <span data-i18n="GLOBAL/TO"></span>: <span data-bind="text: message().to"></span> </div> <div class="informationShort" data-bind="visible: message().cc.length"> <span data-i18n="GLOBAL/CC"></span>: <span data-bind="text: message().cc"></span> </div> </div> <div class="informationShort" data-bind="visible: message().spamResult"> <span data-i18n="MESSAGE/SPAM_SCORE"></span>: <meter min="0" max="100" optimum="0" low="33" high="66" data-bind="value: message().spamScore, attr:{ title: message().spamStatus() }"></meter> </div> </div> <div class="informationFull" data-bind="visible: showFullInfo, with: message"> <table> <tr data-bind="visible: from.length"> <td data-i18n="GLOBAL/FROM"></td> <td data-bind="text: from"></td> </tr> <tr data-bind="visible: to.length"> <td data-i18n="GLOBAL/TO"></td> <td data-bind="text: to"></td> </tr> <tr data-bind="visible: cc.length"> <td data-i18n="GLOBAL/CC"></td> <td data-bind="text: cc"></td> </tr> <tr data-bind="visible: bcc.length"> <td data-i18n="GLOBAL/BCC"></td> <td data-bind="text: bcc"></td> </tr> <tr data-bind="visible: replyTo.length"> <td data-i18n="GLOBAL/REPLY_TO"></td> <td data-bind="text: replyTo"></td> </tr> <tr data-bind="visible: dateTimestamp"> <td data-i18n="MESSAGE/LABEL_DATE"></td> <td> <time data-time-format="FULL" data-bind="time: dateTimestamp"></time>   (<time data-time-format="FROMNOW" data-bind="time: dateTimestamp"></time>) </td> </tr> <tr data-bind="visible: spamResult"> <td data-i18n="GLOBAL/SPAM"></td> <td data-bind="text: spamStatus()"></td> </tr> <tr data-bind="visible: friendlySize()"> <td data-i18n="POPUPS_FILTER/SELECT_FIELD_SIZE"></td> <td class="size" data-bind="text: friendlySize()"></td> </tr> </table> </div> <div class="hasVirus" data-bind="visible: message().hasVirus" data-i18n="MESSAGE/HAS_VIRUS_WARNING"></div> <!-- ko if: tagsAllowed --> <div class="messageTags"> <span data-i18n="MESSAGE/TAGS"></span>: <span class="messageAssignedTags" data-bind="html: tagsToHTML"></span> <div class="btn-group" data-bind="registerBootstrapDropdown: true" style="display: inline-block"> <a class="btn btn-thin btn-transparent dropdown-toggle fontastic" id="tags-dropdown-id" href="#" tabindex="-1">🏷</a> <menu class="dropdown-menu right-edge" role="menu" aria-labelledby="tags-dropdown-id"> <div data-bind="foreach: message().tagOptions()"> <li role="presentation"> <a href="#" tabindex="-1" data-icon="☐" data-bind="click: toggle, text: label, attr:{ title: value, class: css, 'data-icon': checked ? '☑' : '☐' }"></a> </li> </div> <li role="presentation" class="dividerbar"> <a href="#" tabindex="-1" data-icon="✚" data-bind="click: newTag" data-i18n="MESSAGE/NEW_TAG"></a> </li> </menu> </div> </div> <!-- /ko --> </div> <div tabindex="0" data-bind="hasfocus: messageDomFocused"> <div class="loading" data-bind="visible: messageLoadingThrottle"> <i class="icon-spinner"></i> <span data-i18n="GLOBAL/LOADING"></span> </div> <div data-bind="hidden: messageLoadingThrottle"> <div class="bodySubHeader" data-bind="if: message, i18nUpdate: message"> <div class="readReceipt" data-bind="visible: askReadReceipt, click: readReceipt" data-icon="✉" data-i18n="MESSAGE/BUTTON_NOTIFY_READ_RECEIPT"></div> <details class="attachmentsPlace" data-bind="visible: hasAttachments, css: {'selection-mode' : showAttachmentControls}, attr: { open: hasAttachments }"> <summary data-i18n="MESSAGE/PRINT_LABEL_ATTACHMENTS"></summary> <!-- ko ifnot: simpleAttachmentsList --> <ul class="attachmentList" data-bind="foreach: listAttachments"> <li class="attachmentItem" draggable="true" data-bind="event: { dragstart: eventDragStart }, attr: { title: fileName }, css: {checked: checked}"> <div class="attachmentIcon" data-bind="css: { hasPreview: hasPreview(), hasPreplay: hasPreplay(), isImage: isImage() }, attr: { style: thumbnailStyle() }"> <i class="hidePreview iconMain" data-bind="css: iconClass()"></i> <div class="showPreview"> <a data-bind="css: {attachmentImagePreview: isImage()}, attr: { title: fileName, href: linkPreviewMain() }" target="_blank"> <i class="iconMain" data-bind="visible: !hasThumbnail(), css: iconClass()"></i> <div class="iconPreview fontastic">👁</div> </a> </div> </div> <div class="attachmentNameParent"> <div class="attachmentName" data-bind="text: fileName"></div> <div class="attachmentSize" data-bind="text: friendlySize()"></div> </div> <div class="checkboxAttachment fontastic" data-bind="visible: download, text: checked() ? '☑' : '☐', click: toggleChecked"></div> </li> </ul> <!-- /ko --> <!-- ko if: simpleAttachmentsList --> <ul class="attachmentListSimple" data-bind="foreach: listAttachments"> <li class="attachmentItem" data-bind="attr: { title: fileName }, css: {checked: checked}"> <span class="attachmentName" data-bind="text: fileName"></span> <i class="checkboxAttachment fontastic" data-bind="visible: download, text: checked() ? '☑' : '☐', click: toggleChecked"></i> </li> </ul> <!-- /ko --> <i class="fontastic controls-handle" data-bind="visible: allowAttachmentControls, click: toggleAttachmentControls">⚙</i> <div class="attachmentsControls" data-bind="visible: showAttachmentControls"> <span data-bind="visible: downloadAsZipAllowed"> <i class="fontastic iconcolor-red" data-bind="visible: downloadAsZipError">✖</i> <i class="icon-file-archive" data-bind="visible: !downloadAsZipError(), css: {'icon-file-archive': !downloadAsZipLoading(), 'icon-spinner': downloadAsZipLoading()}"></i> <span class="g-ui-link" data-bind="click: downloadAsZip" data-i18n="MESSAGE/LINK_DOWNLOAD_AS_ZIP"></span> </span> </div> </details> <div class="btn-toolbar showImages" data-bind="visible: message().hasImages()"> <div class="btn" data-bind="click: showImages" data-icon="🖼" data-i18n="MESSAGE/BUTTON_SHOW_IMAGES"></div> <div class="btn-group dropdown" data-bind="registerBootstrapDropdown: true, visible: showWhitelistOptions" style="display: inline-block"> <a class="btn dropdown-toggle" id="whitelist-dropdown-id" data-icon="🖼" href="#" tabindex="-1"><span data-i18n="SETTINGS_GENERAL/IMAGES_WHITELIST"></span> ▼</a> <menu class="dropdown-menu" role="menu" aria-labelledby="whitelist-dropdown-id"> <!-- ko foreach: message().whitelistOptions() --> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: $root.whitelistText, text: $data"></a> </li> <!-- /ko --> </menu> </div> </div> <div class="btn-toolbar" data-bind="visible: message().hasTracking()"> <div class="btn" data-bind="visible: !nowTracking(), click: showTracking" data-icon="🔗" data-i18n="MESSAGE/ENABLE_TRACKING_LINKS"></div> <div class="alert" data-bind="visible: nowTracking" data-i18n="MESSAGE/TRACKING_ENABLED" style="margin:0"></div> </div> <div data-bind="visible: message().pgpEncrypted()"> <div class="crypto-control encrypted" data-bind="css: {success: message().pgpDecrypted()}"> <span data-icon="🔒" data-i18n="OPENPGP/ENCRYPTED_MESSAGE"></span> <button class="btn" data-bind="visible: pgpSupported, click: pgpDecrypt" data-i18n="CRYPTO/DECRYPT"></button> <div class="alert-error" data-icon="⚠" data-bind="visible: message().pgpEncrypted()?.error, text: message().pgpEncrypted()?.error"></div> </div> </div> <div data-bind="visible: message().pgpSigned()"> <div class="crypto-control signed" data-bind="css: {success: true === message().pgpSigned()?.success, error: false === message().pgpSigned()?.success}"> <span data-icon="✍" data-i18n="OPENPGP/SIGNED_MESSAGE"></span> <button class="btn" data-bind="visible: pgpSupported, click: pgpVerify" data-i18n="CRYPTO/VERIFY"></button> <div data-icon="⚠" data-bind="visible: message().pgpSigned()?.error, text: message().pgpSigned()?.error"></div> </div> </div> <div data-bind="visible: message().smimeEncrypted()"> <div class="crypto-control encrypted" data-bind="css: {success: message().smimeDecrypted()}"> <span data-icon="🔒" data-i18n="SMIME/ENCRYPTED_MESSAGE"></span> <button class="btn" data-bind="click: smimeDecrypt" data-i18n="CRYPTO/DECRYPT"></button> <div class="alert-error" data-icon="⚠" data-bind="visible: message().smimeEncrypted()?.error, text: message().smimeEncrypted()?.error"></div> </div> </div> <div data-bind="visible: message().smimeSigned()"> <div class="crypto-control signed" data-bind="css: {success: true === message().smimeSigned()?.success, error: false === message().smimeSigned()?.success}"> <span data-icon="✍" data-i18n="SMIME/SIGNED_MESSAGE"></span> <button class="btn" data-bind="click: smimeVerify" data-i18n="CRYPTO/VERIFY"></button> </div> </div> </div> <div class="bodyText" dir="auto"></div> </div> </div> </div> </div> </div> </template><template id="PopupsAccount"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-bind="visible: isNew" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_ADD_ACCOUNT"></h3> <h3 data-bind="visible: !isNew()" data-i18n="POPUPS_ADD_ACCOUNT/TITLE_UPDATE_ACCOUNT"></h3> </header> <form id="accountform" class="modal-body form-horizontal" autocomplete="off" spellcheck="false" data-bind="submit: submitForm"> <div class="alert" data-bind="visible: '' !== submitError()"> <a href="#" class="close" data-bind="click: hideError">×</a> <span data-bind="text: submitError"></span> <div data-bind="visible: submitErrorAdditional, text: submitErrorAdditional"></div> </div> <div class="control-group"> <label data-i18n="GLOBAL/EMAIL"></label> <strong style="margin-top: 5px;" data-bind="visible: !isNew(), text: email"></strong> <input name="email" type="text" class="input-xlarge" autofocus="" autocorrect="off" autocapitalize="off" data-bind="visible: isNew, textInput: email, attr: {required: isNew}"> </div> <div class="control-group"> <label data-i18n="GLOBAL/PASSWORD"></label> <input name="password" type="password" class="input-xlarge" autocomplete="new-password" autocorrect="off" autocapitalize="off" data-bind="value: password, attr: {required:isNew}"> </div> <div class="control-group"> <label data-i18n="GLOBAL/NAME"></label> <input name="name" type="text" class="input-xlarge" data-bind="value: name"> </div> </form> <footer> <button form="accountform" class="btn buttonAddAccount"> <i data-bind="visible: isNew, css: {'icon-user-add': !submitRequest(), 'icon-spinner': submitRequest()}"></i> <span data-bind="visible: isNew" data-i18n="POPUPS_ADD_ACCOUNT/BUTTON_ADD_ACCOUNT"></span> <i data-bind="visible: !isNew(), css: {'icon-ok': !submitRequest(), 'icon-spinner': submitRequest()}"></i> <span data-bind="visible: !isNew()" data-i18n="GLOBAL/SAVE"></span> </button> </footer> </template><template id="PopupsAdvancedSearch"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="SEARCH/TITLE_ADV"></h3> </header> <form id="advancedsearchform" class="modal-body form-horizontal" action="#/" autocomplete="off" spellcheck="false" data-bind="submit: submitForm"> <div> <div class="control-group"> <label data-i18n="GLOBAL/FROM"></label> <input type="text" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: from"> </div> <div class="control-group"> <label data-i18n="GLOBAL/TO"></label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: to"> </div> <div class="control-group"> <label data-i18n="GLOBAL/SUBJECT"></label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: subject"> </div> <div class="control-group"> <label data-i18n="SEARCH/TEXT"></label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: text"> </div> <!-- ko if: showKeywords --> <div class="control-group"> <label data-i18n="SEARCH/KEYWORD"></label> <div data-bind="component: { name: 'Select', params: { options: keywords, value: keyword, optionsText: 'label', optionsValue: 'value' } }"></div> </div> <!-- /ko --> </div> <div> <div class="control-group"> <label data-i18n="SEARCH/DATE"></label> <div data-bind="component: { name: 'Select', params: { options: selectedDates, value: selectedDateValue, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <div class="control-group"> <label data-i18n="SEARCH/REPLIED"></label> <div data-bind="component: { name: 'Select', params: { options: repliedOptions, value: repliedValue, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <!-- ko if: showMultisearch --> <div class="control-group"> <label data-i18n="SEARCH/SUBFOLDERS"></label> <div data-bind="component: { name: 'Select', params: { options: selectedTree, value: selectedTreeValue, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <!-- /ko --> <div class="control-group"> <label></label> <div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SEARCH/UNSEEN', value: unseen } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SEARCH/FLAGGED', value: starred } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SEARCH/HAS_ATTACHMENT', value: hasAttachment } }"></div> </div> </div> </div> </form> <footer> <button form="advancedsearchform" class="btn buttonAdvSearch" data-icon="🔎" data-i18n="GLOBAL/SEARCH"></button> </footer> </template><template id="PopupsCompose"><header class="g-ui-user-select-none" data-bind="css: {loading: saving() || sending()}"> <a class="btn" data-bind="command: sendCommand, tooltipErrorTip: sendErrorDesc, css: {'btn-success': sendButtonSuccess, 'btn-danger': sendError, 'btn-warning': sendSuccessButSaveError }"> <i data-bind="css: {'icon-paper-plane': !sending(), 'icon-spinner': sending()}"></i> <span class="hide-mobile" data-i18n="COMPOSE/BUTTON_SEND"></span> </a> <a class="btn button-save" data-bind="command: saveCommand, tooltipErrorTip: savedErrorDesc, css: {'btn-danger': savedError }"> <i class="fontastic" data-bind="css: {'icon-spinner': saving()}">💾</i> <span class="hide-mobile" data-i18n="GLOBAL/SAVE"></span> </a> <a class="btn btn-danger button-delete fontastic" data-bind="command: deleteCommand">🗑</a> <span class="saved-text hide-mobile" data-bind="text: savedTimeText"></span> <div class="pull-right"> <a class="btn hide-mobile" data-i18n="GLOBAL/BCC" data-bind="visible: !showBcc(), toggle: showBcc"></a> <a class="btn hide-mobile" data-i18n="GLOBAL/CC" data-bind="visible: !showCc(), toggle: showCc"></a> <a class="btn fontastic" data-bind="visible: allowContacts, command: contactsCommand" data-i18n="[title]GLOBAL/CONTACTS">📇</a> <div class="btn-group dropdown" data-bind="registerBootstrapDropdown: true" style="display:inline-block;vertical-align:top"> <a class="btn dropdown-toggle fontastic">☰</a> <menu class="dropdown-menu right-edge" role="menu"> <li data-bind="toggle: showBcc"> <a> <i class="fontastic" data-bind="text: showBcc() ? '☑' : '☐'"></i> <span data-i18n="GLOBAL/BCC"></span> </a> </li> <li data-bind="toggle: showCc"> <a> <i class="fontastic" data-bind="text: showCc() ? '☑' : '☐'"></i> <span data-i18n="GLOBAL/CC"></span> </a> </li> <li data-bind="toggle: showReplyTo"> <a> <i class="fontastic" data-bind="text: showReplyTo() ? '☑' : '☐'"></i> <span data-i18n="GLOBAL/REPLY_TO"></span> </a> </li> <li data-bind="toggle: requestReadReceipt"> <a> <i class="fontastic" data-bind="text: requestReadReceipt() ? '☑' : '☐'"></i> <span data-i18n="COMPOSE/BUTTON_REQUEST_READ_RECEIPT"></span> </a> </li> <li data-bind="toggle: requestDsn"> <a> <i class="fontastic" data-bind="text: requestDsn() ? '☑' : '☐'"></i> <span data-i18n="COMPOSE/BUTTON_REQUEST_DSN"></span> </a> </li> <li data-bind="toggle: requireTLS"> <a> <i class="fontastic" data-bind="text: requireTLS() ? '☑' : '☐'"></i> <span data-i18n="COMPOSE/BUTTON_REQUIRE_TLS"></span> </a> </li> <li data-bind="toggle: markAsImportant"> <a> <i class="fontastic" data-bind="text: markAsImportant() ? '☑' : '☐'"></i> <span data-i18n="COMPOSE/BUTTON_MARK_AS_IMPORTANT"></span> </a> </li> <li data-bind="toggle: doSign, visible: canSign"> <a data-bind="attr:{title: signOptionsText}"> <i class="fontastic" data-bind="text: doSign() ? '☑' : '☐'"></i> <span data-icon="✍" data-i18n="CRYPTO/SIGN"></span> </a> </li> <li data-bind="toggle: doEncrypt, visible: canEncrypt"> <a data-bind="attr:{title: encryptOptionsText}"> <i class="fontastic" data-bind="text: doEncrypt() || 'mailvelope' == viewArea() ? '☑' : '☐'"></i> <span data-icon="🔒" data-i18n="CRYPTO/ENCRYPT"></span> </a> </li> </menu> </div> <a class="minimize-custom" data-bind="click: skipCommand" data-i18n="[title]COMPOSE/BUTTON_MINIMIZE"></a> <a class="close" data-bind="click: doClose" data-i18n="[title]GLOBAL/CANCEL">×</a> </div> </header> <div class="modal-body"> <div class="b-header g-ui-user-select-none"> <table> <tr> <td data-i18n="GLOBAL/FROM"></td> <td> <!-- ko if: allowIdentities --> <input type="text" data-bind="textInput: from" style="width:calc(100% - 2em)"> <!-- /ko --> <span class="e-identity" data-bind="hidden: allowIdentities, text: from"></span> <!-- ko if: 1 < identitiesOptions().length --> <div class="dropdown" style="display:inline-block" data-bind="registerBootstrapDropdown: true, initDom: identitiesMenu"> <a class="dropdown-toggle" href="#" tabindex="-1" id="identity-toggle" role="button"></a> <menu class="dropdown-menu right-edge" role="menu" aria-labelledby="identity-toggle" data-bind="foreach: identitiesOptions"> <li role="presentation"> <a tabindex="-1" href="#" data-bind="click: function (oIdentity) { $root.selectIdentity(oIdentity); return true; }, text: optText"></a> </li> </menu> </div> <!-- /ko --> </td> </tr> <tr> <td> <label data-bind="css: {'error-to': emptyToError}, tooltipErrorTip: emptyToErrorTooltip" data-i18n="GLOBAL/TO"></label> </td> <td> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: to, autoCompleteSource: emailsSource"> </td> </tr> <tr class="cc-row" data-bind="visible: showCc"> <td data-i18n="GLOBAL/CC"></td> <td> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: cc, autoCompleteSource: emailsSource"> </td> </tr> <tr class="bcc-row" data-bind="visible: showBcc"> <td data-i18n="GLOBAL/BCC"></td> <td> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: bcc, autoCompleteSource: emailsSource"> </td> </tr> <tr class="reply-to-row" data-bind="visible: showReplyTo"> <td data-i18n="GLOBAL/REPLY_TO"></td> <td> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="emailsTags: replyTo"> </td> </tr> <tr> <td data-i18n="GLOBAL/SUBJECT"></td> <td> <input type="text" name="subject" autocomplete="off" data-bind="textInput: subject, attr:{spellcheck:allowSpellcheck()?'true':'false'}"> </td> </tr> </table> <div style="display:flex"> <div class="btn-group" style="flex-grow:1"></div> <div class="btn-group"> <a class="btn fontastic" data-bind="toggle: doSign, visible: canSign, css: {'btn-success': doSign()}" data-i18n="[title]CRYPTO/SIGN"> ✍ </a> <a class="btn fontastic" data-bind="toggle: doEncrypt, visible: canEncrypt, css: {'btn-success': doEncrypt() || 'mailvelope' == viewArea()}" data-i18n="[title]CRYPTO/ENCRYPT"> 🔒 </a> </div> <div class="btn-group"> <a class="btn fontastic" style="padding-left: 10px; padding-right: 10px;" id="composeUploadButton" data-bind="visible: addAttachmentEnabled()" data-i18n="[title]COMPOSE/ATTACH_FILES"> ⁺📎 </a> </div> </div> </div> <div class="tabs"> <input type="radio" name="tabs" value="body" id="tab-body" data-bind="checked: viewArea"> <label for="tab-body" role="tab" aria-selected="true" aria-controls="panel1" tabindex="0"> <i class="icon-file-text"></i> <span data-i18n="GLOBAL/TEXT"></span> </label> <div class="tab-content" role="tabpanel" aria-hidden="false" style="grid-column-end:4"> <div class="textAreaParent" data-bind="initDom: editorArea, attr:{spellcheck:allowSpellcheck()?'true':'false'}"></div> </div> <input type="radio" name="tabs" value="attachments" id="tab-attachments" data-bind="checked: viewArea"> <label for="tab-attachments" role="tab" aria-selected="false" aria-controls="panel2" tabindex="0" data-bind=" css: { 'btn-danger': attachmentsInErrorCount() }, tooltipErrorTip: attachmentsErrorTooltip"> <b data-bind="visible: attachmentsCount, text: attachmentsCount"></b> <i data-bind="css: { 'icon-attachment': !attachmentsInProcessCount(), 'icon-spinner': attachmentsInProcessCount()}"></i> <span data-i18n="GLOBAL/ATTACHMENTS"></span> </label> <div class="tab-content attachmentAreaParent" role="tabpanel" aria-hidden="true" style="grid-column-end:4"> <div class="b-attachment-place" data-bind="visible: addAttachmentEnabled() && dragAndDropVisible(), css: {dragAndDropOver: dragAndDropOver}" data-i18n="COMPOSE/ATTACH_DROP_FILES_DESC"></div> <ul class="attachmentList" data-bind="foreach: attachments"> <li class="attachmentItem" data-bind="attr: { title: title }, css: { waiting: waiting, error: '' !== error() }"> <div class="attachmentIcon"> <i class="iconMain" data-bind="css: iconClass, visible: !uploading() || 0 === progress()"></i> <div class="iconProgress" data-bind="attr: { style: progressStyle }, visible: uploading"></div> <div class="iconBG" data-bind="text: progressText, visible: uploading"></div> </div> <div class="attachmentNameParent"> <a href="#" class="close pull-right" style="margin-top:-4px;" data-bind="click: cancel">×</a> <div class="attachmentName" data-bind="text: fileName"></div> <span class="attachmentSize" data-bind="text: friendlySize"></span> </div> </li> </ul> <div class="no-attachments-desc" data-bind="visible: 0 === attachments().length" data-i18n="COMPOSE/NO_ATTACHMENTS_HERE_DESC"></div> </div> <input type="radio" name="tabs" value="mailvelope" id="tab-mailvelope" data-bind="checked: viewArea"> <label for="tab-mailvelope" role="tab" aria-selected="false" aria-controls="panel3" tabindex="0" data-bind="visible: canMailvelope"> <i class="mailvelope-icon"></i> <span>Mailvelope</span> </label> <div class="tab-content textAreaParent" id="mailvelope-editor" role="tabpanel" aria-hidden="true" style="grid-column-end:4" data-bind="visible: canMailvelope"></div> </div> </div> </template><template id="PopupsContacts"><header class="b-header-toolbar g-ui-user-select-none"> <a href="#" class="close" data-bind="click: tryToClose">×</a> <div class="btn-toolbar"> <a class="btn" data-bind="click: newContact" data-icon="✚" data-i18n="CONTACTS/BUTTON_ADD_CONTACT"></a> <a class="btn btn-success fontastic" data-bind="command: newMessageCommand">✉</a> <a class="btn fontastic" data-bind="command: deleteCommand">🗑</a> <div class="btn-group dropdown" data-bind="registerBootstrapDropdown: true, visible: !contacts.importing() && !contacts.syncing()"> <a id="contacts-more-dropdown-id" class="btn dropdown-toggle fontastic" href="#">☰</a> <menu class="dropdown-menu right-edge" role="menu" aria-labelledby="contacts-more-dropdown-id"> <li role="presentation"> <a href="#" data-bind="initDom: importButton"> <i data-bind="css: {'icon-import': !contacts.importing(), 'icon-spinner': contacts.importing}"></i> <span data-i18n="CONTACTS/BUTTON_IMPORT"></span> </a> </li> <li class="dividerbar" role="presentation"> <a href="#" data-bind="click: exportCsv"> <i class="icon-export"></i> <span data-i18n="CONTACTS/BUTTON_EXPORT_CSV"></span> </a> </li> <li role="presentation"> <a href="#" data-bind="click: exportVcf"> <i class="icon-export"></i> <span data-i18n="CONTACTS/BUTTON_EXPORT_VCARD"></span> </a> </li> <li class="dividerbar" role="presentation" data-bind="visible: contactsSyncEnabled"> <a href="#" data-bind="command: syncCommand"> <i class="fontastic" data-bind="css: {'icon-spinner': contacts.syncing}">⇆</i> <span data-i18n="CONTACTS/BUTTON_SYNC"></span> </a> </li> </menu> </div> <span data-bind="visible: contacts.importing() || contacts.syncing()" class="btn"><i class="icon-spinner"></i></span> </div> </header> <div class="modal-body"> <div class="left"> <div class="b-list-toolbar"> <input type="search" class="e-search" placeholder="Search" autofocus="" autocorrect="off" autocapitalize="off" spellcheck="false" data-i18n="[placeholder]GLOBAL/SEARCH" data-bind="value: search"> </div> <div class="b-list-content g-ui-user-select-none" data-bind="css: {'hideContactListCheckbox': !useCheckboxesInList()}"> <div class="content"> <div class="listClear" data-bind="visible: !!search()"> <span class="g-ui-link" data-i18n="CONTACTS/CLEAR_SEARCH" data-bind="click: clearSearch"></span> </div> <div class="listEmptyList" data-bind="visible: 0 === contacts().length && '' === search() && !contacts.loading()" data-i18n="CONTACTS/EMPTY_LIST"></div> <div class="listEmptyListLoading" data-bind="visible: 0 === contacts().length && '' === search() && contacts.loading()"> <i class="icon-spinner"></i> <span data-i18n="GLOBAL/LOADING"></span> </div> <div class="listEmptySearchList" data-bind="visible: 0 === contacts().length && '' !== search() && !contacts.loading()" data-i18n="CONTACTS/EMPTY_SEARCH"></div> <div class="e-contact-foreach g-ui-user-select-none" data-bind="foreach: contacts, visible: contacts().length"> <div class="e-contact-item g-ui-user-select-none" data-bind="css: lineAsCss()"> <div class="checkboxItem fontastic" data-bind="text: checked() ? '☑' : '☐'"></div> <div class="nameParent" data-bind="text: display"></div> </div> </div> </div> </div> <div class="b-list-footer-toolbar"> <div class="footer-pager"> <!-- ko template: { name: 'Paginator', data: contactsPaginator } --><!-- /ko --> </div> </div> </div> <div class="right"> <form class="b-view-content" spellcheck="false" data-bind="css: {'read-only': contact() && contact().readOnly()}"> <div class="b-contact-view-desc" data-bind="visible: !contact()" data-i18n="CONTACTS/CONTACT_VIEW_DESC"></div> <div class="tabs" data-bind="visible: contact, i18nUpdate: contact"> <!-- ko with: contact --> <input type="radio" name="contacttabs" id="tab-contact" checked> <label for="tab-contact" role="tab" aria-selected="true" aria-controls="panel1" tabindex="0" data-i18n="CONTACTS/TAB_CONTACT"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="control-group"> <label class="fontastic iconsize24">👤</label> <div> <div class="property-line" data-i18n="[title]CONTACTS/FIRST_NAME"> <span data-bind="text: givenName"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: givenName" data-i18n="[placeholder]CONTACTS/FIRST_NAME"> </div> <div class="property-line" data-i18n="[title]CONTACTS/LAST_NAME"> <span data-bind="text: surName"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: surName" data-i18n="[placeholder]CONTACTS/LAST_NAME"> </div> <div class="property-line" data-i18n="[title]CONTACTS/MIDDLE_NAME"> <span data-bind="text: middleName"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: middleName" data-i18n="[placeholder]CONTACTS/MIDDLE_NAME"> </div> <div class="property-line" data-i18n="[title]CONTACTS/NAME_PREFIX"> <span data-bind="text: namePrefix"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: namePrefix" data-i18n="[placeholder]CONTACTS/NAME_PREFIX"> </div> <div class="property-line" data-i18n="[title]CONTACTS/NAME_SUFFIX"> <span data-bind="text: nameSuffix"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: nameSuffix" data-i18n="[placeholder]CONTACTS/NAME_SUFFIX"> </div> <div class="property-line" data-bind="visible: null != nickname()" data-i18n="[title]CONTACTS/ADD_MENU_NICKNAME"> <span data-bind="text: nickname"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: nickname" data-i18n="[placeholder]CONTACTS/NICK_NAME"> </div> </div> </div> <div class="control-group"> <label class="fontastic iconsize24" data-i18n="[title]GLOBAL/EMAIL">@</label> <div> <label class="e-component e-checkbox material-design"> <div> <input type="checkbox" data-bind="checked: sendToAll"> <div role="checkbox"></div> </div> <span data-i18n="CONTACTS/SEND_TO_ALL_CONTACT_EMAILS"></span> </label> <div data-bind="foreach: email"> <div class="property-line"> <span data-bind="text: value"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: value"> </div> </div> <a href="#" class="btn fontastic" data-bind="visible: !readOnly(), click: addEmail">✚</a> </div> </div> <div class="control-group" data-bind="visible: tel().length"> <label class="fontastic iconsize24" data-i18n="[title]CONTACTS/ADD_MENU_PHONE">📞</label> <div> <div data-bind="foreach: tel"> <div class="property-line"> <span data-bind="text: value"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: value"> </div> </div> <a href="#" class="btn fontastic" data-bind="visible: !readOnly(), click: addTel">✚</a> </div> </div> <div class="control-group" data-bind="visible: url().length"> <label class="fontastic iconsize24" data-i18n="[title]CONTACTS/ADD_MENU_URL">🌍</label> <div> <div data-bind="foreach: url"> <div class="property-line"> <span data-bind="text: value"></span> <input type="text" placeholder="https://" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: value"> </div> </div> <a href="#" class="btn fontastic" data-bind="visible: !readOnly(), click: addUrl">✚</a> </div> </div> <div class="control-group" data-bind="visible: null != note()"> <label class="fontastic iconsize24" data-i18n="[title]CONTACTS/ADD_MENU_NOTE">🖉</label> <div class="property-line"> <span data-bind="text: note"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: note"> </div> </div> </div> <!-- <input type="radio" name="contacttabs" id="tab-contact-locations"> <label for="tab-contact-locations" role="tab" aria-selected="false" aria-controls="panel2" tabindex="0" data-i18n="CONTACTS/TAB_LOCATIONS"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div data-bind="foreach: adr"> <div class="control-group"> <div data-bind="text: type"></div> <div data-bind="text: street"></div> <div data-bind="text: street_ext"></div> <div data-bind="text: locality"></div> <div data-bind="text: region"></div> <div data-bind="text: postcode"></div> <div data-bind="text: pobox"></div> <div data-bind="text: country"></div> <div data-bind="text: preferred"></div> </div> </div> </div> --> <input type="radio" name="contacttabs" id="tab-contact-business"> <label for="tab-contact-business" role="tab" aria-selected="false" aria-controls="panel3" tabindex="0" data-i18n="CONTACTS/TAB_BUSINESS"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="control-group"> <label data-i18n="CONTACTS/LABEL_ORGANIZATION"></label> <span data-bind="text: org"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: org"> </div> <div class="control-group"> <label data-i18n="CONTACTS/LABEL_DEPARTMENT"></label> <span data-bind="text: department"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: department"> </div> <div class="control-group"> <label data-i18n="CONTACTS/LABEL_TITLE"></label> <span data-bind="text: title"></span> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="textInput: title"> </div> </div> <input type="radio" name="contacttabs" id="tab-contact-crypto"> <label for="tab-contact-crypto" role="tab" aria-selected="false" aria-controls="panel4" tabindex="0" data-i18n="CONTACTS/TAB_CRYPTO"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="control-group"> <label data-i18n="CRYPTO/SIGN"></label> <select name="x-crypto[signpref]" data-bind="value: signpref"> <option value="Ask" data-i18n="CONTACTS/ASK"></option> <option value="Never" data-i18n="CONTACTS/NEVER"></option> <option value="Always" data-i18n="CONTACTS/ALWAYS"></option> <option value="IfPossible" data-i18n="CONTACTS/ALWAYS_IF_POSSIBLE"></option> </select> </div> <div class="control-group"> <label data-i18n="CRYPTO/ENCRYPT"></label> <select name="x-crypto[encryptpref]" data-bind="value: encryptpref"> <option value="Ask" data-i18n="CONTACTS/ASK"></option> <option value="Never" data-i18n="CONTACTS/NEVER"></option> <option value="Always" data-i18n="CONTACTS/ALWAYS"></option> <option value="IfPossible" data-i18n="CONTACTS/ALWAYS_IF_POSSIBLE"></option> </select> </div> </div> <!-- /ko --> </div> </form> <div class="b-view-content-toolbar btn-toolbar" data-bind="i18nUpdate: contact"> <!-- ko with: contact --> <div class="btn-group"> <button class="btn button-save-contact" data-bind="visible: !readOnly(), command: $root.saveCommand"> <i data-bind="css: {'icon-ok': !$root.isSaving(), 'icon-spinner': $root.isSaving()}"></i> <span data-i18n="CONTACTS/BUTTON_CREATE_CONTACT" data-bind="visible: !id()"></span> <span data-i18n="GLOBAL/SAVE" data-bind="visible: id"></span> </button> </div> <div class="btn-group dropdown" data-bind="visible: !readOnly(), registerBootstrapDropdown: true"> <a id="button-add-prop-dropdown-id" href="#" class="btn dropdown-toggle" data-i18n="CONTACTS/ADD_MENU_LABEL"></a> <menu class="dropdown-menu right-edge" style="text-align: left" role="menu" aria-labelledby="button-add-prop-dropdown-id"> <li role="presentation" data-bind="visible: null == nickname()"> <a href="#" data-bind="click: addNickname"> <i class="icon-none"></i> <span data-i18n="CONTACTS/ADD_MENU_NICKNAME"></span> </a> </li> <li role="presentation"> <a href="#" data-bind="click: addEmail"> <i class="fontastic">@</i> <span data-i18n="GLOBAL/EMAIL"></span> </a> </li> <li role="presentation"> <a href="#" data-bind="click: addTel"> <i class="fontastic">📞</i> <span data-i18n="CONTACTS/ADD_MENU_PHONE"></span> </a> </li> <li role="presentation"> <a href="#" data-bind="click: addUrl"> <i class="fontastic">🌍</i> <span data-i18n="CONTACTS/ADD_MENU_URL"></span> </a> </li> <li role="presentation" data-bind="visible: null == note()"> <a href="#" data-bind="click: addNote"> <i class="fontastic">🖉</i> <span data-i18n="CONTACTS/ADD_MENU_NOTE"></span> </a> </li> <!-- <li class="dividerbar" role="presentation"> <a href="#" data-bind="click: addNewAddress"> <span data-i18n="CONTACTS/ADD_MENU_ADDRESS"></span> </a> </li>--> </menu> </div> <!-- <div class="read-only-sign fontastic iconsize24" data-bind="visible: readOnly" data-i18n="[title]CONTACTS/LABEL_READ_ONLY">🔒</div> --> <!-- /ko --> </div> </div> </div> </template><template id="PopupsFilter"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3> <span data-i18n="POPUPS_FILTER/TITLE_CREATE_FILTER" data-bind="visible: isNew"></span> <span data-i18n="POPUPS_FILTER/TITLE_EDIT_FILTER" data-bind="visible: !isNew()"></span> </h3> </header> <form id="sieve-script-filter" class="modal-body" spellcheck="false" data-bind="submit: saveFilter, with: filter"> <div class="control-group" data-bind="css: {'error': nameError}"> <input type="text" class="span5" data-bind="value: name" autofocus="" autocorrect="off" autocapitalize="off" data-i18n="[placeholder]GLOBAL/NAME"> </div> <div class="legend" data-i18n="POPUPS_FILTER/LEGEND_CONDITIONS"></div> <div class="control-group" data-bind="visible: 1 < conditions().length"> <select class="span4" data-bind="value: conditionsType"> <option value="Any" data-i18n="POPUPS_FILTER/SELECT_MATCH_ANY"></option> <option value="All" data-i18n="POPUPS_FILTER/SELECT_MATCH_ALL"></option> </select> </div> <div data-bind="foreach: conditions"> <div class="control-group" data-bind="css: {'error': valueError}" style="display:flex"> <div style="flex-grow:1" data-bind="css: {'error': valueError}, template: {name: template(), data: $data}"></div> <span class="delete-action button-delete fontastic" style="margin-top: 5px;" data-bind="click: function (oCondition) { $root.removeCondition(oCondition); }">🗑</span> </div> </div> <div class="control-group" data-bind="visible: 0 === conditions().length" data-i18n="POPUPS_FILTER/ALL_INCOMING_MESSAGES_DESC"></div> <div class="control-group"> <a class="btn" data-bind="click: addCondition" data-icon="✚" data-i18n="POPUPS_FILTER/BUTTON_ADD_CONDITION"></a> </div> <div class="legend" data-i18n="POPUPS_FILTER/LEGEND_ACTIONS"></div> <select class="span3" data-bind="options: $root.actionTypeOptions, value: actionType, optionsText: 'name', optionsValue: 'id'"></select> <div data-bind="template: {name: actionTemplate()}, i18nUpdate: actionTemplate"></div> </form> <footer> <button class="btn buttonSave" form="sieve-script-filter" data-icon="✔" data-i18n="GLOBAL/DONE"></button> </footer> </template><template id="PopupsFolder"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-bind="text: folder()?.fullName"></h3> </header> <form id="folderform" class="modal-body form-horizontal" autocomplete="off" spellcheck="false" data-bind="submit: submitForm"> <div class="control-group" data-bind="if: editing"> <label data-i18n="POPUPS_CREATE_FOLDER/LABEL_PARENT"></label> <select name="parent" data-bind="options: parentFolderSelectList, value: parentFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select> </div> <div class="control-group" data-bind="if: editing"> <label data-i18n="GLOBAL/NAME"></label> <input name="folder" type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" required="" data-bind="textInput: name"> </div> <div data-bind="with: folder"> <!-- ko if: canBeSubscribed --> <div class="control-group"> <label class="fontastic">👁</label> <div data-bind="component: { name: 'Checkbox', params: { name: 'subscribe', label: 'SETTINGS_FOLDERS/BUTTON_SUBSCRIBE', value: isSubscribed } }"></div> </div> <!-- /ko --> <div class="control-group"> <label data-i18n="POPUPS_FILTER/SELECT_FIELD_SIZE"></label> <span data-bind="text: friendlySize"></span> </div> <div class="control-group"> <label data-i18n="MESSAGE_LIST/MENU_SELECT_UNSEEN"></label> <span data-bind="text: unreadEmails"></span> / <span style="margin:0" data-bind="text: totalEmails"></span> </div> <!-- ko if: $root.displaySpecSetting() && canBeSelected() && isSubscribed() --> <div class="control-group"> <label class="icon-check-mark-circle-two"></label> <div data-bind="component: { name: 'Checkbox', params: { name: 'checkable', label: 'SETTINGS_FOLDERS/HELP_CHECK_FOR_NEW_MESSAGES', value: checkable } }"></div> </div> <!-- /ko --> <!-- ko if: $root.showKolab --> <div class="control-group"> <label>Kolab</label> <select data-bind="options: $root.kolabTypeOptions, value: kolabType, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select> </div> <!-- /ko --> </div> <div class="control-group" data-bind="if: ACLAllowed"> <label>ACL</label> <div> <table class="table table-hover" style="width:auto"><tbody> <!-- ko foreach: folder()?.ACL --> <tr> <td data-bind="text: identifier"></td> <td> <button class="btn fontastic" data-bind="visible: mine, click: $root.editACL">👁</button> <button class="btn fontastic" data-bind="visible: !mine(), click: $root.editACL">🖉</button> <button class="btn fontastic" data-bind="visible: !mine(), click: $root.deleteACL">🗑</button> </td> </tr> <!-- /ko --> <tr data-bind="visible: adminACL"><td></td><td> <button class="btn fontastic" data-bind="click: createACL">✚</button> </td></tr> </tbody></table> </div> </div> </form> <footer> <button form="folderform" class="btn"> <i class="icon-folder-add"></i> <span data-i18n="GLOBAL/SAVE"></span> </button> </footer> </template><template id="PopupsFolderACL"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3>ACL: <span data-bind="text: folderName"></span></h3> </header> <form id="folderaclform" class="modal-body form-horizontal" autocomplete="off" spellcheck="false" data-bind="submit: submitForm"> <div class="control-group"> <label data-i18n="GLOBAL/EMAIL"></label> <input name="identifier" class="input-xlarge" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="visible: create, value: identifier" required=""> <span data-bind="visible: !create(), text: identifier"></span> </div> <div class="control-group"> <label data-i18n="IMAP/ACL_RIGHTS"></label> <table class="table table-hover table-bordered" style="width:auto"><tbody> <tr title="SETACL/DELETEACL/GETACL/LISTRIGHTS"> <td data-i18n="IMAP/ACL_A"></td> <td><input type="checkbox" value="a" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="SELECT the mailbox, perform STATUS"> <td data-i18n="IMAP/ACL_R"></td> <td><input type="checkbox" value="r" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="Mailbox is visible to LIST/LSUB commands, SUBSCRIBE mailbox"> <td data-i18n="IMAP/ACL_L"></td> <td><input type="checkbox" value="l" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="perform APPEND, COPY into mailbox"> <td data-i18n="IMAP/ACL_I"></td> <td><input type="checkbox" value="i" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="set or clear \SEEN flag via STORE, also set \SEEN during APPEND/COPY/FETCH BODY[...]"> <td data-i18n="IMAP/ACL_S"></td> <td><input type="checkbox" value="s" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="set or clear \DELETED flag via STORE, set \DELETED flag during APPEND/COPY"> <td data-i18n="IMAP/ACL_T"></td> <td><input type="checkbox" value="t" data-bind="checked: rights, disable: mine"></td> </tr> <!-- <tr title="STORE DELETED flag, perform EXPUNGE"> <td data-i18n="IMAP/ACL_T">Old</td> <td><input type="checkbox" value="d" data-bind="checked: rights, disable: mine"></td> </tr> --> <tr title="set or clear flags other than \SEEN and \DELETED via STORE, also set them during APPEND/COPY"> <td data-i18n="IMAP/ACL_W"></td> <td><input type="checkbox" value="w" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="send mail to submission address for mailbox, not enforced by IMAP4 itself"> <td data-i18n="IMAP/ACL_P"></td> <td><input type="checkbox" value="p" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="CREATE new sub-mailboxes in any implementation-defined hierarchy, parent mailbox for the new mailbox name in RENAME"> <td data-i18n="IMAP/ACL_K"></td> <td><input type="checkbox" value="k" data-bind="checked: rights, disable: mine"></td> </tr> <!-- <tr title="CREATE new sub-mailboxes in any implementation-defined hierarchy"> <td data-i18n="IMAP/ACL_K">Old</td> <td><input type="checkbox" value="c" data-bind="checked: rights, disable: mine"></td> </tr> --> <tr title="DELETE mailbox, old mailbox name in RENAME"> <td data-i18n="IMAP/ACL_X"></td> <td><input type="checkbox" value="x" data-bind="checked: rights, disable: mine"></td> </tr> <tr title="perform EXPUNGE and expunge as a part of CLOSE"> <td data-i18n="IMAP/ACL_E"></td> <td><input type="checkbox" value="e" data-bind="checked: rights, disable: mine"></td> </tr> </tbody></table> </div> </form> <footer> <button data-bind="visible: mine" form="folderaclform" class="btn" data-i18n="GLOBAL/CLOSE"></button> <button data-bind="visible: !mine()" form="folderaclform" class="btn" data-i18n="GLOBAL/SAVE"></button> </footer> </template><template id="PopupsFolderClear"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEAR_FOLDER" data-bind="hidden: clearing"></h3> <h3 data-i18n="POPUPS_CLEAR_FOLDER/TITLE_CLEARING_PROCESS" data-bind="visible: clearing"></h3> </header> <div class="modal-body"> <i class="fontastic" style="color:red">⚠</i>   <strong data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_WARNING"></strong> <p data-bind="html: dangerDescHtml"></p> <span data-i18n="[html]POPUPS_CLEAR_FOLDER/DANGER_DESC_HTML_2"></span> </div> <footer> <a class="btn btn-danger" data-bind="command: clearCommand"> <i class="fontastic" data-bind="css: {'icon-spinner white': clearing}">🔥</i> <span data-i18n="GLOBAL/CLEAR"></span> </a> </footer> </template><template id="PopupsFolderCreate"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="POPUPS_CREATE_FOLDER/TITLE_CREATE_FOLDER"></h3> </header> <form id="createfolderform" class="modal-body form-horizontal" autocomplete="off" spellcheck="false" data-bind="submit: submitForm"> <div class="control-group"> <label data-i18n="POPUPS_CREATE_FOLDER/LABEL_PARENT"></label> <select name="parent" data-bind="options: parentFolderSelectList, value: parentFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select> </div> <div class="control-group"> <label data-i18n="GLOBAL/NAME"></label> <input name="folder" type="text" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" required="" pattern="^[^\\/]+$" data-bind="textInput: name"> </div> <div class="control-group" data-bind="component: { name: 'Checkbox', params: { name: 'subscribe', label: 'SETTINGS_FOLDERS/BUTTON_SUBSCRIBE', value: subscribe } }"></div> </form> <footer> <button form="createfolderform" class="btn buttonCreate"> <i class="icon-folder-add"></i> <span data-i18n="POPUPS_CREATE_FOLDER/BUTTON_CREATE"></span> </button> </footer> </template><template id="PopupsFolderSystem"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="POPUPS_SYSTEM_FOLDERS/TITLE_SYSTEM_FOLDERS"></h3> </header> <div class="modal-body"> <div class="form-horizontal"> <div class="alert" data-bind="visible: '' !== notification()" data-bind="text: notification"></div> <div class="control-group"> <label data-icon="📧" data-i18n="FOLDER_LIST/SENT_NAME"></label> <select data-bind="options: folderSelectList, value: sentFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select> </div> <div class="control-group"> <label data-icon="🗎" data-i18n="FOLDER_LIST/DRAFTS_NAME"></label> <select data-bind="options: folderSelectList, value: draftsFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: defaultOptionsAfterRender"></select> </div> <div class="control-group"> <label data-icon="⚠" data-i18n="GLOBAL/SPAM"></label> <select data-bind="options: folderSelectList, value: spamFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select> </div> <div class="control-group"> <label data-icon="🗑" data-i18n="FOLDER_LIST/TRASH_NAME"></label> <select data-bind="options: folderSelectList, value: trashFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select> </div> <div class="control-group"> <label data-icon="🗄" data-i18n="FOLDER_LIST/ARCHIVE_NAME"></label> <select data-bind="options: folderSelectList, value: archiveFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select> </div> </div> </div> </template><template id="PopupsIdentity"><header class="g-ui-user-select-none"> <a href="#" class="close" data-bind="click: tryToClose">×</a> <h3 data-bind="visible: !edit()" data-i18n="POPUPS_IDENTITY/TITLE_ADD_IDENTITY"></h3> <h3 data-bind="visible: edit" data-i18n="POPUPS_IDENTITY/TITLE_UPDATE_IDENTITY"></h3> </header> <form id="identityform" class="modal-body" autocomplete="off" spellcheck="false" data-bind="submit: submitForm"> <div class="alert" data-bind="visible: '' !== submitError()"> <a href="#" class="close" data-bind="click: function () { submitError('') }">×</a> <span data-bind="text: submitError"></span> </div> <div class="tabs" data-bind="with: identity"> <input type="radio" name="identitytabs" id="tab-identity" checked> <label data-i18n="SETTINGS_LABELS/GENERAL" for="tab-identity" role="tab" aria-selected="true" aria-controls="panel1" tabindex="0"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="control-group"> <label data-i18n="GLOBAL/NAME"></label> <input name="Name" type="text" class="input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: name, hasfocus: $root.nameFocused"> </div> <div class="control-group"> <label data-i18n="GLOBAL/EMAIL"></label> <div> <div class="textEmail" data-bind="text: email, visible: !id()"></div> <input name="Email" type="email" class="input-xlarge" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="visible: id, value: email, attr: {required: id}"> </div> </div> <div class="control-group"> <label data-i18n="POPUPS_IDENTITY/LABEL"></label> <div> <input name="Label" type="text" class="input-xlarge" autofocus="" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: label, hasfocus: $root.labelFocused"> </div> </div> </div> <input type="radio" name="identitytabs" id="tab-identity-signature"> <label data-i18n="POPUPS_IDENTITY/SIGNATURE" for="tab-identity-signature" role="tab" aria-selected="false" aria-controls="panel2" tabindex="0"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="e-signature-place" data-bind="editor: signature"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_IDENTITY/LABEL_SIGNATURE_INSERT_BEFORE', value: signatureInsertBefore, name: 'SignatureInsertBefore' } }"></div> </div> <input type="radio" name="identitytabs" id="tab-identity-crypto"> <label data-i18n="CONTACTS/TAB_CRYPTO" for="tab-identity-crypto" role="tab" aria-selected="false" aria-controls="panel3" tabindex="0"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="control-group"> <div data-bind="component: { name: 'Checkbox', params: { label: 'CRYPTO/SIGN', value: pgpSign, name: 'pgpSign' } }"></div> </div> <div class="control-group"> <div data-bind="component: { name: 'Checkbox', params: { label: 'CRYPTO/ENCRYPT', value: pgpEncrypt, name: 'pgpEncrypt' } }"></div> </div> <!-- <div class="control-group"> <label data-i18n="CRYPTO/ENCRYPT"></label> <select name="PgpEncrypt" data-bind="value: pgpEncrypt"> <option value="Ask" data-i18n="CONTACTS/ASK"></option> <option value="Never" data-i18n="CONTACTS/NEVER"></option> <option value="Always" data-i18n="CONTACTS/ALWAYS"></option> <option value="IfPossible" data-i18n="CONTACTS/ALWAYS_IF_POSSIBLE"></option> </select> </div> --> <details> <summary><strong>S/MIME</strong></summary> <div class="control-group" data-bind="css: {'error': smimeKey() && !smimeKeyValid()}"> <label data-i18n="CRYPTO/PRIVATE_KEY"></label> <textarea name="smimeKey" class="input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: smimeKey"></textarea> </div> <!-- <div class="control-group" data-bind="visible:smimeKeyValid() && !smimeKeyEncrypted()"> --> <div class="control-group" data-bind="visible:smimeKeyValid"> <label></label> <button type="button" data-bind="click: $root.setSMimeKeyPass" data-i18n="CRYPTO/CHANGE_PASS"></button> </div> <div class="control-group" data-bind="css: {'error': smimeCertificate() && !smimeCertificateValid()}"> <label data-i18n="SMIME/CERTIFICATE"></label> <textarea name="smimeCertificate" class="input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: smimeCertificate"></textarea> </div> <div class="control-group" data-bind="hidden:smimeCertificate"> <label></label> <button type="button" data-bind="click: $root.createSelfSigned" data-i18n="CRYPTO/CREATE_SELF_SIGNED"></button> </div> </details> </div> <input type="radio" name="identitytabs" id="tab-identity-advanced"> <label data-i18n="SETTINGS_FILTERS/ADVANCED" for="tab-identity-advanced" role="tab" aria-selected="false" aria-controls="panel4" tabindex="0"></label> <div class="form-horizontal tab-content" role="tabpanel" aria-hidden="false"> <div class="control-group"> <label data-i18n="GLOBAL/REPLY_TO"></label> <input name="ReplyTo" type="email" class="inputReplyTo input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: replyTo"> </div> <div class="control-group"> <label data-i18n="GLOBAL/BCC"></label> <input name="Bcc" type="email" class="inputBcc input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: bcc"> </div> <div class="control-group"> <label data-i18n="FOLDER_LIST/SENT_NAME"></label> <select name="sentFolder" data-bind="options: $root.folderSelectList, value: sentFolder, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select> </div> </div> </div> </form> <footer> <button form="identityform" class="btn buttonAddIdentity"> <i data-bind="visible: !edit(), css: {'icon-user-add': !submitRequest(), 'icon-spinner': submitRequest()}"></i> <span data-bind="visible: !edit()" data-i18n="POPUPS_IDENTITY/BUTTON_ADD_IDENTITY"></span> <i data-bind="visible: edit, css: {'icon-ok': !submitRequest(), 'icon-spinner': submitRequest()}"></i> <span data-bind="visible: edit" data-i18n="GLOBAL/SAVE"></span> </button> </footer> </template><template id="PopupsKeyboardShortcutsHelp"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="SHORTCUTS_HELP/LEGEND_SHORTCUTS_HELP"></h3> </header> <div class="modal-body"> <div class="tabs"> <input type="radio" name="helptabs" id="tab-help1" checked> <label for="tab-help1" role="tab" aria-selected="true" aria-controls="panel1" tabindex="0" data-i18n="SHORTCUTS_HELP/TAB_MAILBOX"></label> <div class="tab-content" role="tabpanel" aria-hidden="false"> <table class="table table-striped table-bordered" style="border-radius: 0 4px 4px 4px"> <tbody> <tr><td></td><td data-i18n="SHORTCUTS_HELP/LABEL_OPEN_USER_DROPDOWN"></td><td>M</td></tr> <tr><td class="fontastic">←</td><td data-i18n="SHORTCUTS_HELP/LABEL_REPLY"></td><td>R, Reply</td></tr> <tr><td class="fontastic">↞</td><td data-i18n="SHORTCUTS_HELP/LABEL_REPLY_ALL"></td><td>A, Shift + Reply</td></tr> <tr><td class="fontastic">→</td><td data-i18n="SHORTCUTS_HELP/LABEL_FORWARD"></td><td>F, Fwd</td></tr> <tr><td class="fontastic">→</td><td data-i18n="SHORTCUTS_HELP/LABEL_FORWARD_MULTIPLY"></td><td>Shift + F, Shift + Fwd</td></tr> <tr><td class="icon-help"></td><td data-i18n="GLOBAL/HELP"></td><td>F1, Help</td></tr> </tbody> </table> </div> <input type="radio" name="helptabs" id="tab-help2"> <label for="tab-help2" role="tab" aria-selected="false" aria-controls="panel2" tabindex="0" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_LIST"></label> <div class="tab-content" role="tabpanel" aria-hidden="true"> <table class="table table-striped table-bordered"> <tbody> <tr><td class="fontastic">☑</td><td data-i18n="SHORTCUTS_HELP/LABEL_CHECK_ALL"></td><td><!-- ko text: metaKey --><!-- /ko --> + A</td></tr> <tr><td class="fontastic">🗄</td><td data-i18n="GLOBAL/TO_ARCHIVE"></td><td>Z</td></tr> <tr><td class="fontastic">🗑</td><td data-i18n="SHORTCUTS_HELP/LABEL_DELETE"></td><td>Delete, Shift + Delete</td></tr> <tr><td></td><td data-i18n="SHORTCUTS_HELP/LABEL_OPEN_THREAD"></td><td>T</td></tr> <tr><td class="fontastic">📁</td><td data-i18n="SHORTCUTS_HELP/LABEL_MOVE"></td><td>Insert</td></tr> <tr><td></td><td data-i18n="SHORTCUTS_HELP/LABEL_READ"></td><td>Q</td></tr> <tr><td></td><td data-i18n="SHORTCUTS_HELP/LABEL_UNREAD"></td><td>U</td></tr> <tr><td class="fontastic">★</td><td data-i18n="SHORTCUTS_HELP/LABEL_IMPORTANT"></td><td>I</td></tr> <tr><td></td><td data-i18n="GLOBAL/SEARCH"></td><td>/</td></tr> <tr><td class="icon-arrows-out"></td><td data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_ENTER"></td><td>Enter</td></tr> <tr><td></td><td data-i18n="SHORTCUTS_HELP/LABEL_VIEW_MESSAGE_ENTER"></td><td>Enter</td></tr> <tr><td></td><td data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_MESSAGE"></td><td>→, Tab</td></tr> <tr><td></td><td data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_FOLDER_LIST"></td><td>←, Shift + Tab</td></tr> </tbody> </table> </div> <input type="radio" name="helptabs" id="tab-help3"> <label for="tab-help3" role="tab" aria-selected="false" aria-controls="panel3" tabindex="0" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_VIEW"></label> <div class="tab-content" role="tabpanel" aria-hidden="true"> <table class="table table-striped table-bordered"> <tbody> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_FULLSCREEN_TOGGLE"></td><td>Enter, Open</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_BLOCKQUOTES_TOGGLE"></td><td>B</td></tr> <tr><td data-i18n="MESSAGE/SWAP_COLORS"></td><td>Shift + B</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_EXIT_FULLSCREEN"></td><td>Esc, Close</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_MESSAGE"></td><td>Esc, Close</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_SWITCH_TO_LIST"></td><td>Shift + Tab, Esc</td></tr> </tbody> </table> </div> <input type="radio" name="helptabs" id="tab-help4"> <label for="tab-help4" role="tab" aria-selected="false" aria-controls="panel4" tabindex="0" data-i18n="SHORTCUTS_HELP/TAB_COMPOSE"></label> <div class="tab-content" role="tabpanel" aria-hidden="true"> <table class="table table-striped table-bordered"> <tbody> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_OPEN_COMPOSE_POPUP"></td><td>W, C, New</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_OPEN_IDENTITIES_DROPDOWN"></td><td><!-- ko text: metaKey --><!-- /ko --> + M</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_SAVE_MESSAGE"></td><td><!-- ko text: metaKey --><!-- /ko --> + S, Save</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_SEND_MESSAGE"></td><td>Send, <!-- ko text: metaKey --><!-- /ko --> + Enter</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_MINIMIZE_COMPOSE_POPUP"></td><td>Esc, Close</td></tr> <tr><td data-i18n="SHORTCUTS_HELP/LABEL_CLOSE_COMPOSE"></td><td>Shift + Esc, Shift + Close</td></tr> </tbody> </table> </div> </div> </div> </template><template id="PopupsOpenPgpGenerate"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="OPENPGP/POPUP_GENERATE_TITLE"></h3> </header> <form id="openpgp-generate" class="modal-body form-horizontal" autocomplete="off" spellcheck="false" data-bind="submit: submitForm"> <div class="alert" data-bind="visible: '' !== submitError()"> <a href="#" class="close" data-bind="click: hideError">×</a> <span data-bind="text: submitError"></span> </div> <!-- Disable stupid browser password autofill --> <input type="password" style="display:none"> <div class="control-group" data-bind="css: {'error': emailError}"> <label data-i18n="GLOBAL/EMAIL"></label> <input type="email" required="" class="input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" list="emailaddresses" data-bind="value: email"> </div> <div class="control-group"> <label data-i18n="GLOBAL/NAME"></label> <input type="text" required="" class="input-xlarge" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: name"> </div> <div class="control-group"> <label data-i18n="GLOBAL/PASSWORD"></label> <input type="password" required="" class="input-xlarge" autocomplete="new-password" autocorrect="off" autocapitalize="off" data-bind="value: password"> </div> <div class="control-group"> <label data-i18n="OPENPGP/LABEL_KEY_TYPE"></label> <select data-bind="value: keyType, options: ['ECC', 'RSA']"></select> </div> <div class="control-group"> <div data-bind="component: { name: 'Checkbox', params: { label: 'OPENPGP/BACKUP_PUBLIC_KEY_ON_SERVER', value: backupPublicKey } }"></div> <br> <div data-bind="component: { name: 'Checkbox', params: { label: 'OPENPGP/BACKUP_PRIVATE_KEY_ON_SERVER', value: backupPrivateKey } }"></div> <br> <div data-bind="visible: canGnuPG, component: { name: 'Checkbox', params: { label: 'OPENPGP/STORE_PUBLIC_KEY_IN_GNUPG', value: saveGnuPGPublic } }"></div> <br> <div data-bind="visible: canGnuPG, component: { name: 'Checkbox', params: { label: 'OPENPGP/STORE_PRIVATE_KEY_IN_GNUPG', value: saveGnuPGPrivate } }"></div> </div> <datalist id="emailaddresses"> <!-- ko foreach: identities --> <option data-bind="attr:{value:email}"></option> <!-- /ko --> </datalist> </form> <footer> <button class="btn" form="openpgp-generate"> <i class="fontastic" data-bind="css: {'icon-spinner': submitRequest()}">🔑</i> <span data-i18n="OPENPGP/POPUP_GENERATE_BUTTON"></span> </button> </footer> </template><template id="PopupsOpenPgpImport"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="OPENPGP/POPUP_IMPORT_TITLE"></h3> </header> <form id="openpgp-import" class="modal-body" autocomplete="off" data-bind="submit: submitForm"> <div class="alert"  data-bind="visible: keyError() && keyErrorMessage(), text: keyErrorMessage"></div> <div class="control-group"> <!-- could be email or fingerprint --> <input type="search" data-bind="textInput: search"> <button class="btn" type="button" data-bind="enable: search, click: searchPGP" data-i18n="GLOBAL/SEARCH"></button> </div> <div class="control-group" data-bind="css: {'error': keyError}"> <textarea class="input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: key" required=""></textarea> </div> <div class="control-group"> <div data-bind="component: { name: 'Checkbox', params: { label: 'OPENPGP/BACKUP_ON_SERVER', value: saveServer } }"></div> <div data-bind="visible: canGnuPG, component: { name: 'Checkbox', params: { label: 'OPENPGP/STORE_IN_GNUPG', value: saveGnuPG } }"></div> </div> </form> <footer> <button class="btn" form="openpgp-import" data-icon="✚" data-i18n="OPENPGP/POPUP_IMPORT_BUTTON"></button> </footer> </template><template id="PopupsOpenPgpKey"><header class="g-ui-user-select-none"> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="OPENPGP/POPUP_VIEW_TITLE"></h3> </header> <div class="modal-body"> <pre data-bind="initDom: keyDom, text: key"></pre> </div> <footer> <a class="btn buttonClose" data-bind="click: close" data-icon="✖" data-i18n="GLOBAL/CLOSE"></a> <a class="btn buttonClose" data-bind="click: selectKey" data-icon="🔑" data-i18n="OPENPGP/POPUP_VIEW_BUTTON"></a> </footer> </template><template id="PopupsSMimeImport"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="SMIME/POPUP_IMPORT_TITLE"></h3> </header> <form id="smime-import" class="modal-body" autocomplete="off" data-bind="submit: submitForm"> <div class="alert"  data-bind="visible: pemError() && pemErrorMessage(), text: pemErrorMessage"></div> <div class="control-group" data-bind="css: {'error': pemError}"> <textarea class="input-xxlarge" rows="14" autofocus="" autocomplete="off" data-bind="value: pem" required=""></textarea> </div> </form> <footer> <button class="btn" form="smime-import" data-icon="✚" data-i18n="OPENPGP/POPUP_IMPORT_BUTTON"></button> </footer> </template><template id="PopupsSieveScript"><!-- ko with: script --> <header> <a href="#" class="close" data-bind="click: $root.close">×</a> <h3> <span data-i18n="POPUPS_SIEVE_SCRIPT/TITLE_CREATE" data-bind="visible: !exists()"></span> <span data-i18n="POPUPS_SIEVE_SCRIPT/TITLE_EDIT" data-bind="visible: exists"></span> <span data-bind="visible: exists">: <!-- ko text: name--><!-- /ko --></span> </h3> </header> <form class="modal-body" spellcheck="false"> <div class="control-group" data-bind="css: {'error': nameError}, hidden: exists"> <input type="text" class="span5" data-bind="value: name" autocorrect="off" autocapitalize="off" data-i18n="[placeholder]GLOBAL/NAME"> </div> <div class="alert g-ui-user-select-none" data-bind="visible: hasChanges" data-icon="⚠" data-i18n="POPUPS_SIEVE_SCRIPT/CHANGES_NEED_TO_BE_SAVED_DESC"></div> <div class="alert alert-error g-ui-user-select-none" style="white-space:pre" data-bind="visible: $root.errorText, text: $root.errorText" data-icon="⚠"></div> <div class="control-group" data-bind="visible: $root.rawActive"> <details> <summary data-i18n="POPUPS_SIEVE_SCRIPT/CAPABILITY_LABEL"></summary> <pre data-bind="text: $root.sieveCapabilities"></pre> </details> <details> <summary>Actions</summary> <pre data-bind="text: $root.availableActions"></pre> </details> <details> <summary>Controls</summary> <pre data-bind="text: $root.availableControls"></pre> </details> <details> <summary>Tests</summary> <pre data-bind="text: $root.availableTests"></pre> </details> <textarea style="width:100%;height:60vh" data-bind="value: body, valueUpdate: 'input'"></textarea> </div> <div data-bind="visible: !$root.rawActive()"> <table class="table table-hover list-table filters-list g-ui-user-select-none"> <colgroup> <col style="width: 30px"> <col style="width: 16px"> <col> <col style="width: 140px"> <col style="width: 1em"> </colgroup> <tbody data-bind="foreach: filters, i18nUpdate: filters"> <tr class="filter-item" draggable="true" data-bind="sortableItem: { list: $parent.filters }"> <td class="fontastic" data-bind="click: function () { $parent.hasChanges(true); enabled(!enabled()); }, text: enabled() ? '☑' : '☐'"></td> <td class="drag-wrapper fontastic drag-handle">⬍</td> <td class="e-action"> <span class="filter-name" data-bind="text: name()"></span>    <span class="filter-sub-name" data-bind="text: nameSub()"></span> </td> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: function(oFilter) { $root.deleteFilter(oFilter); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete-filter fontastic" data-bind="visible: !askDelete(), click: function (oFilter) { $root.filterForDeletion(oFilter); }">🗑</span> </td> </tr> </tbody> </table> <a class="btn" data-bind="click: $root.addFilter" data-icon="✚" data-i18n="POPUPS_SIEVE_SCRIPT/BUTTON_ADD_FILTER"></a> </div> </form> <footer> <a class="btn" data-bind="visible: allowFilters(), click: function() { $root.toggleFiltersRaw(); }, css: {'active': $root.rawActive }" data-i18n="[title]POPUPS_SIEVE_SCRIPT/BUTTON_RAW_SCRIPT"> <i class="icon-file-code"></i> </a> <!-- <a class="btn" data-bind="visible: $root.rawActive, click: function() { $root.validateScript(); }"> <span data-i18n="POPUPS_SIEVE_SCRIPT/VALIDATE"></span> </a> --> <a class="btn buttonSave" data-bind="click: function() { $root.saveScript(); }, css: {'btn-danger': $root.saveError}"> <i class="fontastic" data-bind="css: {'icon-spinner': $root.saving}">💾</i> <span data-i18n="GLOBAL/SAVE"></span> </a> </footer> <!-- /ko --> </template><template id="SettingsAccounts"><div data-bind="visible: allowAdditionalAccount"> <div class="legend"> <span data-i18n="SETTINGS_ACCOUNTS/LEGEND_ACCOUNTS"></span>     <i class="icon-spinner" style="margin-top: 5px" data-bind="visible: loading"></i> </div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_ACCOUNTS/SHOW_UNREAD', value: showUnread } }"></div> <a class="btn" data-bind="click: addNewAccount"> <i class="icon-user-add"></i> <span data-i18n="SETTINGS_ACCOUNTS/BUTTON_ADD_ACCOUNT"></span> </a> <table class="table table-hover list-table accounts-list" data-bind="i18nUpdate: accounts"> <tbody data-bind="foreach: accounts"> <tr draggable="true" data-bind="attr: {draggable:isAdditional}, sortableItem: { list: $root.accounts, afterMove: $root.accountsAndIdentitiesAfterMove }"> <!-- ko if:!isAdditional() --> <td></td> <td colspan="3" data-bind="text: displayName"></td> <!-- /ko --> <!-- ko if:isAdditional --> <td> <i class="fontastic drag-handle">⬍</i> </td> <td class="e-action"> <span class="account-name" data-bind="text: displayName"></span> </td> <!-- <td><span class="icon-import" data-bind="click: importAll"></span></td> --> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete}, click: function(oAccount) { $root.deleteAccount(oAccount); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete fontastic" data-bind="visible: !askDelete(), click: function (oAccount) { $root.accountForDeletion(oAccount); }">🗑</span> </td> <!-- /ko --> </tr> </tbody> </table> </div> <div data-bind="visible: allowIdentities"> <div class="legend" data-i18n="SETTINGS_ACCOUNTS/LEGEND_IDENTITIES"></div> <a class="btn" data-bind="click: addNewIdentity"> <i class="icon-user-add"></i> <span data-i18n="SETTINGS_ACCOUNTS/BUTTON_ADD_IDENTITY"></span> </a> <table class="table table-hover list-table identities-list" data-bind="i18nUpdate: identities"> <tbody data-bind="foreach: identities"> <tr draggable="true" data-bind="attr: {'data-identity-id': id}, sortableItem: { list: $root.identities, afterMove: $root.accountsAndIdentitiesAfterMove }"> <td> <i class="fontastic drag-handle">⬍</i> </td> <td class="e-action"> <span class="identity-name" data-bind="text: formattedName()"></span>    <span class="identity-default" data-bind="visible: !$context.$index()" data-i18n="GLOBAL/DEFAULT"></span> </td> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="visible: id, css: {'delete-access': askDelete}, click: function(oIdentity) { $root.deleteIdentity(oIdentity); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete fontastic" data-bind="visible: !askDelete() && id(), click: function (oIdentity) { $root.identityForDeletion(oIdentity); }">🗑</span> </td> </tr> </tbody> </table> </div> </template><template id="SettingsContacts"><div class="form-horizontal"> <div class="legend" data-i18n="GLOBAL/CONTACTS"></div> <div class="control-group"> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_CONTACTS/LABEL_CONTACTS_AUTOSAVE', value: contactsAutosave } }"></div> </div> </div> <form class="form-horizontal" spellcheck="false" data-bind="visible: allowContactsSync"> <div class="legend" data-i18n="SETTINGS_CONTACTS/LEGEND_CONTACTS_SYNC"></div> <div class="control-group"> <label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_ENABLE"></label> <div data-bind="component: { name: 'Select', params: { options: syncModeOptions, value: syncMode, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <div class="control-group"> <label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_AB_URL"></label> <input type="text" class="input-xxlarge" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: syncUrl" placeholder="https://"> </div> <div class="control-group"> <label data-i18n="SETTINGS_CONTACTS/LABEL_CONTACTS_SYNC_USER"></label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" data-bind="value: syncUser"> </div> <div class="control-group"> <label data-i18n="GLOBAL/PASSWORD"></label> <input type="password" autocomplete="current-password" autocorrect="off" autocapitalize="off" spellcheck="false" data-bind="value: syncPass"> </div> </form> </template><template id="SettingsFilters"><div class="form-horizontal"> <div class="legend"> <span data-i18n="SETTINGS_LABELS/FILTERS"></span>     <i class="icon-spinner" style="margin-top: 5px" data-bind="visible: loading"></i> </div> </div> <div class="alert alert-error g-ui-user-select-none" data-bind="visible: serverError, text: serverErrorDesc" data-icon="⚠"></div> <table class="table table-hover list-table g-ui-user-select-none"> <colgroup> <col style="width: 30px"> <col> <col style="width: 140px"> <col style="width: 1em"> </colgroup> <tbody> <tr class="script-item"> <td style="border:0" class="e-action fontastic" data-bind="click: disableScripts, text: hasActive() ? '○' : '⦿'"></td> <td style="border:0" data-i18n="GLOBAL/INACTIVE">Inactive</td> <td style="border:0"></td> <td style="border:0"></td> </tr> </tbody> <tbody data-bind="foreach: scripts, i18nUpdate: scripts"> <!-- ko if: allowFilters() --> <tr class="script-item"> <td><div class="e-action fontastic" data-bind="visible: body, click: function (oScript) { $root.enableScript(oScript); }, text: active() ? '⦿' : '○'"></div></td> <td class="e-action script-name" data-i18n="SETTINGS_FILTERS/SIMPLE" data-bind="attr:{title: name}"></td> <td></td> <td></td> </tr> <tr><th colspan="4" data-i18n="SETTINGS_FILTERS/ADVANCED"></th></tr> <!-- /ko --> <!-- ko if: !allowFilters() --> <tr class="script-item"> <td><div class="e-action fontastic" data-bind="visible: body, click: function (oScript) { $root.enableScript(oScript); }, text: active() ? '⦿' : '○'"></div></td> <td class="e-action script-name" data-bind="text: name"></td> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete}, click: function(oScript) { $root.deleteScript(oScript); }" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="e-action fontastic" data-bind="visible: !askDelete() && !allowFilters(), click: function (oScript) { $root.scriptForDeletion(oScript); }">🗑</span> </td> </tr> <!-- /ko --> </tbody> </table> <a class="btn" data-bind="click: addScript" data-icon="✚" data-i18n="SETTINGS_FILTERS/BUTTON_ADD_SCRIPT"></a> </template><template id="SettingsFiltersActionDiscard"><div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0"> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/STOP_LABEL', value: stop } }"></div> </div> </template><template id="SettingsFiltersActionForward"><div class="control-group" data-bind="css: {'error': actionValueError}"> <input type="text" class="span3" data-bind="value: actionValue" data-i18n="[placeholder]GLOBAL/EMAIL"> </div> <div class="control-group"> <div> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/KEEP_LABEL', value: keep } }"></div> <div data-bind="visible: $root.allowMarkAsRead, component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/MARK_AS_READ_LABEL', value: markAsRead } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/STOP_LABEL', value: stop } }"></div> </div> </div> </template><template id="SettingsFiltersActionMoveToFolder"><div class="control-group" data-bind="css: {'error': actionValueError}"> <select class="span3" data-bind="options: $root.folderSelectList, value: $root.selectedFolderValue, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender"></select> </div> <div class="control-group"> <div> <div data-bind="visible: $root.allowMarkAsRead, component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/MARK_AS_READ_LABEL', value: markAsRead } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/STOP_LABEL', value: stop } }"></div> </div> </div> </template><template id="SettingsFiltersActionNone"><div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0"> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/STOP_LABEL', value: stop } }"></div> </div> </template><template id="SettingsFiltersActionReject"><div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0"> <div> <textarea class="span5" data-bind="value: actionValue" style="height: 100px;" data-i18n="[placeholder]POPUPS_FILTER/REJECT_MESSAGE_LABEL"></textarea> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/STOP_LABEL', value: stop } }"></div> </div> </div> </template><template id="SettingsFiltersActionVacation"><div class="control-group" style="margin-bottom: 0"> <div data-bind="component: { name: 'Select', params: { options: [1, 2, 3, 7, 30], label: 'POPUPS_FILTER/REPLY_INTERVAL_LABEL', value: actionValueThird, size: 1 } }"></div> </div> <div class="control-group" data-bind="css: {'error': actionValueFourthError}" style="margin-bottom: 0"> <div> <input type="text" class="span5" data-bind="value: actionValueFourth" data-i18n="[placeholder]POPUPS_FILTER/VACATION_RECIPIENTS_LABEL"> </div> </div> <div class="control-group" style="margin-bottom: 0"> <input type="text" class="span5" data-bind="value: actionValueSecond" data-i18n="[placeholder]POPUPS_FILTER/VACATION_SUBJECT_LABEL"> </div> <div class="control-group" data-bind="css: {'error': actionValueError}" style="margin-bottom: 0"> <textarea class="span5" data-bind="value: actionValue" style="height: 100px;" data-i18n="[placeholder]POPUPS_FILTER/VACATION_MESSAGE_LABEL"></textarea> </div> <div class="control-group"> <div data-bind="component: { name: 'Checkbox', params: { label: 'POPUPS_FILTER/STOP_LABEL', value: stop } }"></div> </div> </template><template id="SettingsFiltersConditionBody"><select class="span3" data-bind="options: $root.fieldOptions, value: field, optionsText: 'name', optionsValue: 'id'"></select>   <select class="span2" data-bind="options: $root.typeOptionsBody, value: type, optionsText: 'name', optionsValue: 'id'"></select>   <input class="span3" type="text" data-bind="value: value"> </template><template id="SettingsFiltersConditionDefault"><select class="span3" data-bind="options: $root.fieldOptions, value: field, optionsText: 'name', optionsValue: 'id'"></select>   <select class="span2" data-bind="options: $root.typeOptions, value: type, optionsText: 'name', optionsValue: 'id'"></select>   <input class="span3" type="text" data-bind="value: value"> </template><template id="SettingsFiltersConditionMore"><select class="span2" data-bind="options: $root.fieldOptions, value: field, optionsText: 'name', optionsValue: 'id'"></select>   <input class="span2" type="text" data-bind="value: valueSecond">   <select class="span2" data-bind="options: $root.typeOptions, value: type, optionsText: 'name', optionsValue: 'id'"></select>   <input class="span3" type="text" data-bind="value: value"> </template><template id="SettingsFiltersConditionSize"><select class="span3" data-bind="options: $root.fieldOptions, value: field, optionsText: 'name', optionsValue: 'id'"></select>   <select class="span2" data-bind="options: $root.typeOptionsSize, value: type, optionsText: 'name', optionsValue: 'id'"></select>   <input class="span3" type="text" data-bind="value: value"> </template><template id="SettingsFolderItem"><tr data-bind="css: { 'selectable': selectable, 'system': isSystemFolder }"> <td data-bind="click: edit, css: 'deep-' + deep"> <span class="folder-name" data-bind="text: name, tooltipErrorTip: errorMsg"></span> <span class="folder-system-name" data-bind="text: nameInfo, visible: isSystemFolder"></span> <span class="folder-size" data-bind="text: friendlySize, visible: size"></span> </td> <td data-i18n="[title]SETTINGS_FOLDERS/HELP_DELETE_FOLDER"> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: $root.deleteFolder" data-i18n="GLOBAL/ARE_YOU_SURE"></a> <span class="e-action fontastic" data-bind="visible: canBeDeleted() && !askDelete(), click: $root.folderForDeletion">🗑</span> </td> <td data-i18n="[title]SETTINGS_FOLDERS/HELP_SHOW_HIDE_FOLDER" data-bind="if: canBeSubscribed"> <span class="e-action fontastic" data-bind="css: {'unsubscribed-folder':!isSubscribed()}, click: $root.toggleFolderSubscription">👁</span> </td> <!-- ko if: $root.displaySpecSetting --> <td data-i18n="[title]SETTINGS_FOLDERS/HELP_CHECK_FOR_NEW_MESSAGES" data-bind="if: canBeSelected() && isSubscribed()"> <span class="e-action icon-check-mark-circle-two" data-bind="css: {'check-folder':checkable(), 'unchecked-folder':!checkable()}, click: $root.toggleFolderCheckable"></span> </td> <!-- /ko --> <!-- ko if: $root.showKolab --> <td class="kolab" title="Kolab"> <select data-bind="options: $root.kolabTypeOptions, value: kolabType, optionsText: 'name', optionsValue: 'id', optionsAfterRender: $root.defaultOptionsAfterRender, event:{ input: $root.toggleFolderKolabType}"></select> </td> <!-- /ko --> </tr> <!-- ko template: { name: 'SettingsFolderItem', foreach: subFolders } --><!-- /ko --> </template><template id="SettingsFolders"><div class="legend"> <span data-i18n="SETTINGS_FOLDERS/LEGEND_FOLDERS"></span>     <i class="icon-spinner" style="margin-top: 5px" data-bind="visible: loading"></i> </div> <div style="margin-bottom:20px;" data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_FOLDERS/HIDE_UNSUBSCRIBED', value: hideUnsubscribed } }"></div> <!-- ko if: showKolab --> <div style="margin-bottom:20px;" data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_FOLDERS/UNHIDE_KOLAB_FOLDERS', value: unhideKolabFolders } }"></div> <!-- /ko --> <a class="btn" data-bind="click: createFolder"> <i class="icon-folder-add"></i> <span data-i18n="SETTINGS_FOLDERS/BUTTON_CREATE"></span> </a>    <a class="btn" data-bind="click: systemFolder" data-icon="🔧" data-i18n="SETTINGS_FOLDERS/BUTTON_SYSTEM"></a> <div class="alert folders-list-error" data-bind="visible: folderListOptimized"> <b data-i18n="SETTINGS_FOLDERS/TO_MANY_FOLDERS_DESC_1"></b> <br> <span data-i18n="SETTINGS_FOLDERS/TO_MANY_FOLDERS_DESC_2"></span> </div> <div class="alert folders-list-error" data-bind="visible: '' !== folderListError()"> <a href="#" class="close" data-bind="click: hideError">×</a> <span data-bind="text: folderListError"></span> </div> <table class="table table-hover list-table" data-bind="i18nUpdate: folderList"> <tbody data-bind="template: { name: 'SettingsFolderItem', foreach: folderList }"></tbody> </table> </template><template id="SettingsGeneral"><div class="form-horizontal"> <div class="legend" data-i18n="SETTINGS_LABELS/GENERAL"></div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/IDENTITY"></label> <b class="editMainIdentity" data-bind="click: editMainIdentity, text: identityMainDesc"></b> </div> <div class="control-group" data-bind="visible: allowLanguagesOnSettings"> <label data-i18n="SETTINGS_GENERAL/LANGUAGE"></label> <div> <span class="select" tabindex="0" data-bind="text: languageFullName, click: selectLanguage, onSpace: selectLanguage, onEnter: selectLanguage"></span> <span data-bind="saveTrigger: languageTrigger"></span> </div> </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/HOUR_FORMAT"></label> <div> <select data-bind="value: hourCycle"> <option value="" data-i18n="GLOBAL/DEFAULT">default</option> <option value="h11">00:00 AM</option> <option value="h12">12:00 AM</option> <option value="h23">00:00 (24 hour)</option> <option value="h24">24:00 (24 hour)</option> </select> </div> </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/LAYOUT"></label> <div data-bind="component: { name: 'Select', params: { options: layoutTypes, value: layout, trigger: layoutTrigger, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/CHECK_MAIL_INTERVAL"></label> <div> <input type="number" max="60" step="1" class="span1" data-bind="textInput: checkMailInterval, attr:{min:minRefreshInterval}"> <span data-i18n="SETTINGS_GENERAL/MINUTES"></span> <span data-bind="saveTrigger: checkMailIntervalTrigger"></span> </div> </div> <div class="control-group"> <div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/HTML_TO_MD', value: markdown } }"></div> </div> </div> <div class="legend" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_LIST"></div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/MESSAGE_PER_PAGE"></label> <div> <input type="number" min="10" max="50" step="1" class="span1" data-bind="textInput: messagesPerPage">   <span data-bind="saveTrigger: messagesPerPageTrigger"></span> </div> </div> <div class="control-group"> <div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/HIDE_DELETED_MESSAGES', value: hideDeleted } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/USE_CHECKBOXES_IN_LIST', value: useCheckboxesInList } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/LIST_MESSAGES_GROUPED', value: listGrouped } }"></div> <div data-bind="visible: threadsAllowed, component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/USE_THREADS', value: useThreads } }"></div> </div> </div> <div class="control-group" data-bind="visible: threadsAllowed() && useThreads()"> <label data-i18n="SETTINGS_GENERAL/THREAD_ALGORITHM"></label> <select data-bind="options: threadAlgorithms, value: threadAlgorithm"></select> </div> <div class="legend" data-i18n="SHORTCUTS_HELP/TAB_MESSAGE_VIEW"></div> <div class="control-group"> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/MARK_MESSAGE_READ_AFTER', value: messageReadAuto } }"></div> <div> <input type="number" min="0" step="1" class="span1" data-bind="textInput: messageReadDelay">   <span data-i18n="SETTINGS_GENERAL/SECONDS"></span> <span data-bind="saveTrigger: messageReadDelayTrigger"></span> </div> </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/MSG_DEFAULT_ACTION"></label> <div data-bind="component: { name: 'Select', params: { options: msgDefaultActions, value: msgDefaultAction, trigger: msgDefaultActionTrigger, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <div class="control-group"> <div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/COLLAPSE_BLOCKQUOTES', value: collapseBlockquotes } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/LIST_INLINE_ATTACHMENTS', value: listInlineAttachments } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/LIST_SIMPLE_ATTACHMENTS', value: simpleAttachmentsList } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/REMOVE_COLORS', value: removeColors } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/ALLOW_STYLES', value: allowStyles } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/PREFER_HTML', value: viewHTML } }"></div> <em style="margin: 0 0 1em 2em;display: block;" data-i18n="SETTINGS_GENERAL/PREFER_HTML_INFO"></em> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/SHOW_NEXT_MESSAGE', value: showNextMessage } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/MESSAGE_POPUP_WINDOW', value: messageNewWindow } }"></div> </div> </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/MAX_QUOTE_LEVEL"></label> <div> <input type="number" min="0" step="1" class="span1" data-bind="textInput: maxBlockquotesLevel">   <span data-bind="saveTrigger: maxBlockquotesLevelTrigger"></span> </div> </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/EXTERNAL_IMAGES"></label> <div> <select data-bind="value: viewImages"> <option value="ask" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_ASK"></option> <option value="match" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_WHITELIST"></option> <option value="always" data-i18n="SETTINGS_GENERAL/IMAGES_OPTION_ALWAYS"></option> </select> </div> </div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/IMAGES_WHITELIST"></label> <div> <textarea data-bind="textInput: viewImagesWhitelist"></textarea> </div> </div> <div class="legend" data-i18n="SHORTCUTS_HELP/TAB_COMPOSE"></div> <div class="control-group"> <label data-i18n="SETTINGS_GENERAL/EDITOR"></label> <div data-bind="component: { name: 'Select', params: { options: editorDefaultTypes, value: editorDefaultType, trigger: editorDefaultTypeTrigger, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <div class="control-group" data-bind="visible: hasWysiwygs"> <label>WYSIWYG</label> <div data-bind="component: { name: 'Select', params: { options: wysiwygs, value: editorWysiwyg, trigger: editorWysiwygTrigger, optionsText: 'name', optionsValue: 'name' } }"></div> </div> <div class="control-group"> <div> <div data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/REPLY_SAME_FOLDER', value: replySameFolder } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'COMPOSE/ALLOW_DRAFT_AUTOSAVE', value: allowDraftAutosave } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'COMPOSE/BUTTON_REQUEST_READ_RECEIPT', value: requestReadReceipt } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'COMPOSE/BUTTON_REQUEST_DSN', value: requestDsn } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'COMPOSE/BUTTON_REQUIRE_TLS', value: requireTLS } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'CRYPTO/SIGN', value: pgpSign } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'CRYPTO/ENCRYPT', value: pgpEncrypt } }"></div> <div data-bind="component: { name: 'Checkbox', params: { label: 'COMPOSE/ALLOW_SPELLCHECK', value: allowSpellcheck } }"></div> </div> </div> <button type="button" data-bind="visible: mailto, click: registerMailto" class="btn" data-i18n="SETTINGS_GENERAL/MAILTO"></button> <div class="legend" data-i18n="SETTINGS_GENERAL/NOTIFICATIONS"></div> <div class="control-group"> <div> <div> <div style="display: inline-block;" data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/CHROME_NOTIFICATION_DESC', value: desktopNotifications, enable: isDesktopNotificationAllowed } }"></div>   <span data-bind="visible: !isDesktopNotificationAllowed()" style="color: #999" data-i18n="SETTINGS_GENERAL/CHROME_NOTIFICATION_DESC_DENIED"></span> <span class="fontastic" data-bind="click: testSystemNotification" style="color:green;cursor:pointer">▶️</span> </div> <div> <div style="display: inline-block;" data-bind="component: { name: 'Checkbox', params: { label: 'SETTINGS_GENERAL/SOUND_NOTIFICATION', value: soundNotification } }"></div>   <select data-bind="options: notificationSounds, value: notificationSound"></select>   <span class="fontastic" data-bind="click: testSoundNotification" style="color:green;cursor:pointer">▶️</span> </div> </div> </div> </div> </template><template id="SettingsMenu"><div class="b-toolbar btn-toolbar"> <a class="btn btn-thin fontastic toggleLeft" data-bind="click: toggleLeftPanel"></a> <a class="btn" data-bind="click: backToInbox" data-icon="⬅" data-i18n="GLOBAL/BACK"></a> </div> <nav data-bind="foreach: menu"> <a data-bind="css: {'selected': selected }, attr: { 'href': $root.link(route), 'data-i18n': label }"></a> </nav> </template><template id="SettingsPane"><div class="btn-toolbar"> <a class="btn btn-thin fontastic toggleLeft"></a> </div> </template><template id="SettingsSecurity"><div class="form-horizontal"> <div class="legend" data-i18n="SETTINGS_SECURITY/LEGEND_SECURITY"></div> <div class="control-group"> <label data-i18n="SETTINGS_SECURITY/LABEL_AUTOLOGOUT"></label> <div data-bind="component: { name: 'Select', params: { options: autoLogoutOptions, value: autoLogout, trigger: autoLogoutTrigger, optionsText: 'name', optionsValue: 'id' } }"></div> </div> <div class="control-group"> <label data-i18n="SETTINGS_SECURITY/FORGET_KEY_PASS"></label> <div data-bind="component: { name: 'Select', params: { options: autoLogoutOptions, value: keyPassForget, trigger: keyPassForgetTrigger, optionsText: 'name', optionsValue: 'id' } }"></div> </div> </div> <div class="legend">OpenPGP</div> <button class="btn" data-bind="click: addOpenPgpKey" data-icon="✚" data-i18n="SETTINGS_OPENPGP/BUTTON_IMPORT_KEY"></button> <!-- ko if: canOpenPGP || canGnuPG -->    <button class="btn" data-bind="click: generateOpenPgpKey" data-icon="🔑" data-i18n="SETTINGS_OPENPGP/BUTTON_GENERATE_KEY_PAIR"></button> <!-- /ko --> <!-- ko if: canGnuPG --> <details style="margin:1em 0"> <summary style="font-size:larger;font-weight:bold">GnuPG</summary> <table class="table table-hover list-table"> <tbody><tr><th colspan="4" data-i18n="SETTINGS_OPENPGP/TITLE_PRIVATE">Private keys</th></tr></tbody> <tbody data-bind="foreach: gnupgPrivateKeys, i18nUpdate: gnupgPrivateKeys"> <tr> <td data-bind="click: view"> <span data-bind="visible: can_sign" class="fontastic" data-i18n="[title]CRYPTO/SIGN">✍</span> <span data-bind="visible: can_decrypt" class="fontastic" data-i18n="[title]CRYPTO/DECRYPT">🔓</span> <span class="key-id" data-bind="text: id"></span> <!-- ko foreach: emails --> <span class="key-user" data-bind="text: $data"></span> <!-- /ko --> </td> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete-key fontastic" data-bind="visible: !askDelete(), click: openForDeletion">🗑</span> </td> </tr> </tbody> <tbody><tr><th colspan="4" data-i18n="SETTINGS_OPENPGP/TITLE_PUBLIC">Public keys</th></tr></tbody> <tbody data-bind="foreach: gnupgPublicKeys, i18nUpdate: gnupgPublicKeys"> <tr> <td data-bind="click: view"> <span data-bind="visible: can_verify" class="fontastic" data-i18n="[title]CRYPTO/VERIFY">✔</span> <span data-bind="visible: can_encrypt" class="fontastic" data-i18n="[title]CRYPTO/ENCRYPT">🔒</span> <span class="key-id" data-bind="text: id"></span> <!-- ko foreach: emails --> <span class="key-user" data-bind="text: $data"></span> <!-- /ko --> </td> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete-key fontastic" data-bind="visible: !askDelete(), click: openForDeletion">🗑</span> </td> </tr> </tbody> </table> </details> <!-- /ko --> <!-- ko if: canOpenPGP --> <details style="margin:1em 0"> <summary style="font-size:larger;font-weight:bold">OpenPGP.js</summary> <table class="table table-hover list-table"> <tbody><tr><th colspan="4" data-i18n="SETTINGS_OPENPGP/TITLE_PRIVATE">Private keys</th></tr></tbody> <tbody data-bind="foreach: openpgpkeysPrivate, i18nUpdate: openpgpkeysPrivate"> <tr> <td data-bind="click: view"> <span class="fontastic" data-i18n="[title]SETTINGS_OPENPGP/TITLE_PRIVATE">🔒</span> <span class="key-id" data-bind="text: id"></span> <!-- ko foreach: emails --> <span class="key-user" data-bind="text: $data"></span> <!-- /ko --> </td> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete-key fontastic" data-bind="visible: !askDelete(), click: openForDeletion">🗑</span> </td> </tr> </tbody> <tbody><tr><th colspan="4" data-i18n="SETTINGS_OPENPGP/TITLE_PUBLIC">Public keys</th></tr></tbody> <tbody data-bind="foreach: openpgpkeysPublic, i18nUpdate: openpgpkeysPublic"> <tr> <td data-bind="click: view"> <span class="fontastic" data-i18n="[title]SETTINGS_OPENPGP/TITLE_PUBLIC">🔑</span> <span class="key-id" data-bind="text: id"></span> <!-- ko foreach: emails --> <span class="key-user" data-bind="text: $data"></span> <!-- /ko --> </td> <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete-key fontastic" data-bind="visible: !askDelete(), click: openForDeletion">🗑</span> </td> </tr> </tbody> </table> <button class="btn" data-bind="click: importToOpenPGP" data-i18n="SETTINGS_OPENPGP/IMPORT_FROM_SERVER"></button> </details> <!-- /ko --> <details style="margin:1em 0"> <summary style="font-size:larger;font-weight:bold">Mailvelope</summary> <a data-bind="visible: !canMailvelope" href="https://mailvelope.com/en/help" target="_blank" data-i18n="SETTINGS_OPENPGP/GET_MAILVELOPE"></a> <div id="mailvelope-settings" style="height:40em" data-bind="visible: canMailvelope"></div> </details> <details> <summary class="legend" data-i18n="SMIME/CERTIFICATES"></summary> <button class="btn" data-bind="click: importToSMime" data-icon="✚" data-i18n="OPENPGP/POPUP_IMPORT_BUTTON"></button> <table class="table table-hover list-table"> <tbody data-bind="foreach: smimeCertificates, i18nUpdate: smimeCertificates"> <tr> <td> <span data-bind="visible: smimesign" class="fontastic" data-i18n="[title]CRYPTO/VERIFY">✔</span> <span data-bind="visible: smimeencrypt" class="fontastic" data-i18n="[title]CRYPTO/ENCRYPT">🔒</span> <span class="key-name" data-bind="text: CN"></span> <span class="key-user" data-bind="text: emailAddress"></span> <br> <span data-i18n="CRYPTO/VALID_UNTIL"></span>: <time data-time-format="FULL" data-bind="time:validTo_time_t"></time> </td> <!-- TODO <td> <a class="btn btn-small btn-danger button-confirm-delete" data-bind="css: {'delete-access': askDelete()}, click: remove" data-i18n="GLOBAL/ARE_YOU_SURE"></a> </td> <td> <span class="delete-key fontastic" data-bind="visible: !askDelete(), click: openForDeletion">🗑</span> </td> --> </tr> </tbody> </table> </details> </template><template id="SettingsThemes"><div class="legend"> <span data-i18n="SETTINGS_THEMES/LEGEND_THEMES"></span> <span data-bind="saveTrigger: themeTrigger"></span> </div> <div data-bind="foreach: themesObjects"> <figure data-bind="click: $root.setTheme, css: { 'selected': selected }"> <figcaption data-bind="text: nameDisplay"></figcaption> <img data-bind="attr: { 'src': themePreviewSrc }"> </figure> </div> <br> <br> <div class="form-horizontal"> <div class="legend" data-i18n="SETTINGS_THEMES/LABEL_FONTS"></div> <div class="control-group"> <label>Sans-serif</label> <select data-bind="value: fontSansSerif"> <option value="" data-i18n="GLOBAL/DEFAULT"></option> <option value="Arial">Arial</option> <option value="Lucida">Lucida</option> <option value="Tahoma">Tahoma</option> <option value="Trebuchet">Trebuchet</option> <option value="Verdana">Verdana</option> </select> </div> <div class="control-group"> <label>Serif</label> <select data-bind="value: fontSerif"> <option value="" data-i18n="GLOBAL/DEFAULT"></option> <option value="Times">Times</option> <option value="Palatino">Palatino</option> <option value="Georgia">Georgia</option> </select> </div> <div class="control-group"> <label>Mono</label> <select data-bind="value: fontMono"> <option value="" data-i18n="GLOBAL/DEFAULT"></option> <option value="Courier">Courier</option> <option value="Lucida">Lucida</option> </select> </div> </div> <br> <br> <div class="form-horizontal" data-bind="visible: background.enabled"> <div class="legend" data-i18n="SETTINGS_THEMES/LABEL_BACKGROUND"></div> <div class="control-group g-ui-user-select-none"> <div class="row" data-bind="visible: '' !== background.error()" style="margin-left: 0; margin-bottom: 10px;"> <div class="alert alert-error span6" data-bind="text: background.error" style="margin-left: 0"></div> </div> <div class="row" data-bind="visible: '' !== background.name()" style="margin-left: 0"> <a class="btn" data-bind="visible: '' !== background.name(), click: clearBackground" data-icon="✖"></a>     <b data-bind="text: background.name"></b> </div> <div class="row" data-bind="visible: '' === background.name()" style="margin-left: 0"> <a class="btn" data-bind="initDom: background.uploaderButton"> <i class="fontastic" data-bind="css: {'icon-spinner': background.loading()}">🖼</i> <span data-i18n="SETTINGS_THEMES/BUTTON_UPLOAD_BACKGROUND_IMAGE"></span> </a> </div> </div> </div> </template><template id="SystemDropDown"><div class="btn-toolbar g-ui-user-select-none"> <div class="audioPlace" data-bind="visible: '' !== currentAudio(), attr: { title: currentAudio }, click: stopPlay"> <div class="playIcon"><div></div></div> <i class="stopIcon fontastic">⏸</i> </div> <div class="btn-group dropdown" data-bind="registerBootstrapDropdown: true, initDom: accountMenu"> <a id="top-system-dropdown-id" href="#" tabindex="-1" class="btn single btn-block dropdown-toggle"> <span class="accountPlace hide-mobile" data-bind="text: accountName(), attr:{ title: accountEmail }"></span> <i class="fontastic" data-bind="css: {'icon-spinner': accountsLoading()}">👤</i> <!-- <b data-bind="text: accountsUnreadCount, visible: 100 > accountsUnreadCount() && accountsUnreadCount()"></b> <b data-bind="visible: 99 < accountsUnreadCount()">99+</b>   --> </a> <menu class="dropdown-menu right-edge" tabindex="-1" role="menu" aria-labelledby="top-system-dropdown-id"> <!-- ko foreach: accounts --> <li role="presentation"> <a class="email-title" href="#" data-bind="click: $root.accountClick, text: label(), attr: {title: email, 'data-unread': unreadEmails, 'data-icon': $root.accountEmail() === email ? '✔' : '👤'}"></a> </li> <!-- /ko --> <li class="dividerbar" role="presentation" data-bind="visible: allowAccounts"> <a href="#" tabindex="-1" data-bind="click: addAccountClick" data-icon="✚" data-i18n="TOP_TOOLBAR/BUTTON_ADD_ACCOUNT"></a> </li> <li role="presentation" data-bind="visible: allowContacts"> <a href="#" tabindex="-1" data-bind="click: contactsClick" data-icon="📇" data-i18n="GLOBAL/CONTACTS"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: settingsClick" data-icon="⚙" data-i18n="TITLES/SETTINGS"></a> </li> <li role="presentation"> <a href="#" tabindex="-1" data-bind="click: settingsHelp" data-icon="🛈" data-i18n="GLOBAL/HELP"></a> </li> <li class="dividerbar" role="presentation"> <a href="#" tabindex="-1" data-bind="click: logoutClick" data-icon="⏻" data-i18n="GLOBAL/LOGOUT"></a> </li> </menu> </div> </div> </template><template id="Paginator"><nav class="e-paginator g-ui-user-select-none" data-bind="foreach: $data"> <a data-bind="css: { 'current': current }, attr: { title: title }, text: name"></a> </nav> </template><template id="PopupsAsk"><div class="modal-body"> <div data-bind="html: askDesc"></div> <form class="form-horizontal" data-bind="visible: askPass() || askUsername(), submit: yesClick" style="margin: 2em 0 0" id="AskForm"> <div class="control-group" data-bind="visible: askUsername"> <label data-i18n="GLOBAL/USERNAME"></label> <input type="text" data-bind="value: username"> </div> <div class="control-group" data-bind="visible: askPass"> <label data-i18n="GLOBAL/PASSWORD"></label> <input type="password" data-bind="value: passphrase"> </div> <div data-bind="visible: askRemeber, component: { name: 'Checkbox', params: { label: 'GLOBAL/REMEMBER', value: remember } }"></div> </form> </div> <footer> <button class="btn buttonYes" form="AskForm" data-bind="click: yesClick, text: yesButton" data-icon="✔"></button> <button class="btn buttonNo" data-bind="click: noClick, text: noButton" data-icon="✖"></button> </footer> </template><template id="PopupsLanguages"><header> <a href="#" class="close" data-bind="click: close">×</a> <h3 data-i18n="POPUPS_LANGUAGES/TITLE_LANGUAGES"></h3> </header> <div class="modal-body" style="min-height: 150px;" data-bind="foreach: languages"> <label data-bind="click: function () { $root.changeLanguage(key); }, css: {'selected': selected, 'user': user}, attr: { title: title }, text: fullName"> </label> </div> </template> <script nonce="" type="text/javascript">(e=>{const t=t=>e.location.pathname.replace(/\/+$/,"")+"/?/"+t,r=t=>e.getElementById("rl-"+t),a="1"==r("app").dataset.admin,o="application/json",n=e=>{r("loading").hidden=!0,e.hidden=!1},s=e=>{let t=r("loading-error");t.append(e),n(t)},i=t=>t?new Promise(((r,a)=>{const o=e.createElement("script");o.onload=()=>r(),o.onerror=()=>a("Failed loading "+t),o.src=t,e.head.append(o)})):Promise.reject("src is empty");try{let t=e.cookie.match(/(^|;) ?smctoken=([^;]+)/);if(t=t?t[2]:localStorage.getItem("smctoken"),!t){let e=new Uint8Array(16);crypto.getRandomValues(e),t=encodeURIComponent(btoa(String.fromCharCode(...e)))}localStorage.setItem("smctoken",t),e.cookie="smctoken="+t+";path=/;samesite=strict"}catch(e){}let c={};window.rl={adminArea:()=>a,settings:{get:e=>c[e],set:(e,t)=>c[e]=t,app:e=>c.System[e]},setTitle:t=>e.title=(t||"")+(c.title?(t?" - ":"")+c.title:""),setData:e=>{c=e,rl.app.refresh()},loadScript:i,fetch:(e,t,r)=>{t=Object.assign({mode:"same-origin",cache:"no-cache",redirect:"error",referrerPolicy:"no-referrer",credentials:"same-origin",headers:{}},t);let a=1,n=(c.System||{}).token,s={};return r&&(t.method="POST",r instanceof FormData&&(r.forEach(((e,t)=>{e instanceof File?a=0:Reflect.has(s,t)?(Array.isArray(s[t])||(s[t]=[s[t]]),s[t].push(e)):s[t]=e})),a?r=s:n&&r.set("XToken",n)),a&&(t.headers["Content-Type"]=o,r=JSON.stringify(r)),t.body=r),n&&(t.headers["X-SM-Token"]=n),fetch(e,t)},fetchJSON:(e,t,r)=>((t=Object.assign({headers:{}},t)).headers.Accept=o,rl.fetch(e,t,r).then((t=>{if(t.ok){const r=t.headers.get("Content-Type");return r.startsWith(o)?t.json():Promise.reject(new Error(`Invalid Content-Type '${r}' for url '${e}'`))}return Promise.reject(new Error("Network response error: "+t.status))})))},navigator.cookieEnabled?[].flat?rl.fetchJSON(t(`${a?"Admin":""}AppData/0/${Math.random().toString().slice(2)}/`)).then((r=>{c=r;const o=r.StaticLibsJs,n=()=>rl.app.bootstart();i(o).then((()=>i(o.replace("/libs.",`/${a?"admin":"app"}.`)))).then((()=>r.PluginsLink?i(t(r.PluginsLink)):Promise.resolve())).then((()=>rl.app?n():e.addEventListener("readystatechange",(()=>"complete"==e.readyState&&n())))).catch((e=>{throw s(e),e}))})).catch((e=>s(e))):n(r("BadBrowser")):n(r("NoCookie"))})(document);
document.documentElement.lang = 'zh';
rl.I18N={"LANGS_NAMES":{"id":"Bahasa Indonesia","cs":"Čeština","da":"Dansk","de":"Deutsch","et":"Eesti","en":"English","es":"Español","eo":"Esperanto","eu":"Euskara","fr":"Français","is":"Íslenska","it":"Italiano","lv":"Latviešu","lt":"Lietuvių","hu":"Magyar","nl":"Nederlands","nb":"Norsk (bokmål)","pl":"Polski","pt":"Português","pt-BR":"Português (Brasil)","ro":"Română","sk":"Slovenčina","sl":"Slovenščina","fi":"Suomi","sv":"Svenska","vi":"Tiếng Việt","tr":"Türkçe","el":"Ελληνικά","be":"Беларуская","bg":"Български","ru":"Русский","uk":"Українська","ar":"‏العربية‏","fa":"‏فارسی‏","ko":"한국어","ja":"日本語","zh":"简体中文","zh-TW":"繁體中文(台灣)"},"LANGS_NAMES_EN":{"ar":"Arabic","eu":"Basque","be":"Belarusian","bg":"Bulgarian","zh":"Chinese Simplified (China)","zh-TW":"Chinese Traditional (Taiwan)","cs":"Czech","da":"Danish","nl":"Dutch","en":"English","eo":"Esperanto","et":"Estonian","fi":"Finnish","fr":"French","de":"German","el":"Greek","hu":"Hungarian","is":"Icelandic","id":"Indonesian","it":"Italian","ja":"Japanese","ko":"Korean","lv":"Latvian","lt":"Lithuanian","nb":"Norwegian Bokmål","fa":"Persian","pl":"Polish","pt":"Portuguese","pt-BR":"Portuguese (Brazil)","ro":"Romanian","ru":"Russian","sk":"Slovak","sl":"Slovenian","es":"Spanish","sv":"Swedish","tr":"Turkish","uk":"Ukrainian","vi":"Vietnamese"},"LANG_DIR":"ltr","GLOBAL":{"TO_ARCHIVE":"存档","ARE_YOU_SURE":"您是否确定？","BACK":"返回","BCC":"密送","CANCEL":"取消","CC":"抄送","CLEAR":"清除","CLOSE":"关闭","CONTACTS":"联系人","DELETE":"删除","UNDELETE":"撤销删除","DONE":"完成","EMAIL":"邮箱","FROM":"发件人","LOADING":"加载中","LOGOUT":"注销","MORE":"更多","MOVE_TO":"移至","COPY_TO":"复制到","NAME":"名称","NONE":"无","TO_SPAM":"移动到垃圾邮件","NOT_SPAM":"非垃圾邮件","USERNAME":"用户名","PASSWORD":"密码","REMEMBER":"记住","REPLY_TO":"回复","SAVE":"保存","SAVE_CHANGES":"是否保存修改？","SEARCH":"搜索","SPAM":"垃圾邮件","SUBJECT":"主题","TEST":"测试","TO":"收件人","SERVER_MESSAGE":"服务器信息","YES":"是","NO":"否","INACTIVE":"不生效","DEFAULT":"默认","HELP":"帮助","TEXT":"内容","ATTACHMENTS":"附件"},"LOGIN":{"LABEL_LOGIN":"登录","LABEL_SIGN_ME":"记住我","BUTTON_SIGN_IN":"登录"},"TOP_TOOLBAR":{"BUTTON_ADD_ACCOUNT":"添加账户"},"SEARCH":{"TITLE_ADV":"高级搜索","TEXT":"内容","HAS_ATTACHMENT":"有附件","FLAGGED":"标记","UNSEEN":"不可见","DATE":"日期","DATE_ALL":"所有邮件","BEFORE_3_DAYS":"3天以外","BEFORE_7_DAYS":"1周以外","BEFORE_MONTH":"1个月以外","BEFORE_3_MONTHS":"3个月以外","BEFORE_6_MONTHS":"半年以外","BEFORE_YEAR":"1年以外","SINCE_3_DAYS":"3天以内","SINCE_7_DAYS":"1周以内","SINCE_MONTH":"1个月以内","SINCE_3_MONTHS":"3个月以内","SINCE_6_MONTHS":"半年以内","SINCE_YEAR":"1年以内","SUBFOLDERS":"子文件夹","SUBFOLDERS_NONE":"无","SUBFOLDERS_SUBTREE":"全部","SUBFOLDERS_SUBTREE_ONE":"一级","REPLIED":"已回复","KEYWORD":"标签"},"FOLDER_LIST":{"BUTTON_COMPOSE":"写邮件","BUTTON_NEW_MESSAGE":"新邮件","INBOX_NAME":"收件箱","SENT_NAME":"已发送邮件","DRAFTS_NAME":"草稿","TRASH_NAME":"已删除邮件","ARCHIVE_NAME":"存档"},"IMAP":{"ACL_RIGHTS":"Rights","ACL_A":"Administer","ACL_E":"Expunge","ACL_I":"Insert messages","ACL_K":"Create sub-folders","ACL_L":"Show messages","ACL_P":"Send mail","ACL_R":"Select folder","ACL_S":"\\SEEN tag","ACL_T":"\\DELETED tag","ACL_W":"Other tags","ACL_X":"Delete/Rename folder"},"MESSAGE_LIST":{"BUTTON_RELOAD":"刷新消息列表","BUTTON_EMPTY_FOLDER":"清空文件夹","BUTTON_MULTY_FORWARD":"作为附件转发","BUTTON_DELETE_WITHOUT_MOVE":"永久删除","MENU_SET_SEEN":"标记为已读","MENU_SET_ALL_SEEN":"标记全部为已读","MENU_UNSET_SEEN":"标记为未读","MENU_SET_FLAG":"加注星标","MENU_UNSET_FLAG":"移除星标","MENU_SELECT_ALL":"全部选择","MENU_SELECT_INVERT":"反向选择","MENU_SELECT_UNSEEN":"未读","MENU_SELECT_SEEN":"已读","MENU_SELECT_FLAGGED":"已加星标","MENU_SELECT_UNFLAGGED":"未加星标","DOWNLOAD_ALL_ATTACHMENTS":"下载所有附件","EMPTY_LIST":"空列表。","EMPTY_SEARCH_LIST":"未找到您搜索的消息。","SEARCH_RESULT_FOR":"搜索 \"%SEARCH%\" 的结果","BACK_TO_MESSAGE_LIST":"回到信息列表","PUT_MESSAGE_HERE":"在这里查看邮件","TODAY_AT":"今日于 %TIME%","YESTERDAY_AT":"昨天 %TIME%","NEW_MESSAGE_NOTIFICATION":"您有 %COUNT% 封新邮件！","QUOTA_SIZE":"使用了 <strong>%LIMIT%</strong> 存储空间中的<strong>%SIZE% (%PROC%%)</strong>","SORT":"排序","NO_SORT":"邮件服务器不支持排序","SORT_DATE_ASC":"日期升序","SORT_DATE_DESC":"日期降序","SORT_SIZE_ASC":"大小升序","SORT_SIZE_DESC":"大小降序","SORT_SUBJECT_ASC":"主题 A-Z","SORT_SUBJECT_DESC":"主题 Z-A","SORT_FROM_ASC":"发件人 A-Z","SORT_FROM_DESC":"发件人 Z-A"},"MESSAGE":{"BUTTON_EDIT":"编辑","BUTTON_UNSUBSCRIBE":"从此列表中取消订阅","BUTTON_REPLY":"回复","BUTTON_REPLY_ALL":"全部回复","BUTTON_FORWARD":"转发","BUTTON_FORWARD_AS_ATTACHMENT":"作为附件转发","BUTTON_EDIT_AS_NEW":"作为新邮件编辑","BUTTON_SHOW_IMAGES":"显示外部图片","BUTTON_NOTIFY_READ_RECEIPT":"发送人请求您发送已读回执。","BUTTON_IN_NEW_WINDOW":"在新窗口中查看","BUTTON_THREAD_LIST":"对话列表","BUTTON_THREAD_PREV":"上一页","BUTTON_THREAD_NEXT":"下一页","BUTTON_THREAD_MORE":"更多信息","MENU_HEADERS":"显示详细信息","MENU_VIEW_ORIGINAL":"显示原始内容","HTML_VIEW":"显示 HTML 消息","PLAIN_VIEW":"显示纯文本消息","SWAP_COLORS":"切换默认 (背景)颜色","MENU_DOWNLOAD_ORIGINAL":"下载为 .eml 文件","MENU_FILTER_SIMILAR":"筛选类似邮件","MENU_PRINT":"打印邮件","EMPTY_SUBJECT_TEXT":"（无主题）","LABEL_DATE":"日期","LABEL_FROM_SHORT":"from","LABEL_TO_SHORT":"to","PRINT_LABEL_ATTACHMENTS":"附件","MESSAGE_VIEW_DESC":"在此查看列表中选中的邮件。","MESSAGE_VIEW_MOVE_DESC":"点击左侧面板的文件夹作为目的地","LINK_DOWNLOAD_AS_ZIP":"下载为 zip 压缩包","SPAM_SCORE":"垃圾邮件分数","HAS_VIRUS_WARNING":"警告：检测到病毒","TAGS":"标签","NEW_TAG":"新标签","ENABLE_TRACKING_LINKS":"启用追踪链接","TRACKING_ENABLED":"链接点击后将会被追踪!"},"MESSAGE_TAGS":{"$important":"重要","$todo":"待办","$label1":"重要","$label2":"工作","$label3":"个人","$label4":"待办","$label5":"稍后"},"READ_RECEIPT":{"SUBJECT":"送达回执 - %SUBJECT%","BODY":"本回执表示您发送给 %READ-RECEIPT% 的邮件已送达。\n\n注意：本回执仅意味着邮件已送达并已在收件人的电脑中出示过，但并不能保证收件人已阅读或已明白邮件内容。\n"},"SUGGESTIONS":{"SEARCHING_DESC":"搜索中……"},"CONTACTS":{"TAB_CONTACT":"联系人","TAB_LOCATIONS":"位置","TAB_BUSINESS":"商业","LABEL_ORGANIZATION":"组织","LABEL_DEPARTMENT":"部门","LABEL_TITLE":"头衔","TAB_CRYPTO":"加密","ASK":"询问","NEVER":"从不","ALWAYS":"总是","ALWAYS_IF_POSSIBLE":"总是 (如果可能)","BUTTON_ADD_CONTACT":"添加联系人","BUTTON_CREATE_CONTACT":"新增联系人","BUTTON_IMPORT":"导入 (csv、vcf、vCard)","BUTTON_EXPORT_VCARD":"导出 (vcf、vCard)","BUTTON_EXPORT_CSV":"导出 (csv)","ERROR_IMPORT_FILE":"导入错误 (无效文件格式）","EMPTY_LIST":"暂无联系人","EMPTY_SEARCH":"没找到联系人","CLEAR_SEARCH":"清除搜索","CONTACT_VIEW_DESC":"在此查看在列表中选中的联系人。","LABEL_BIRTHDAY":"生日","DISPLAY_NAME":"显示名称","LAST_NAME":"姓","FIRST_NAME":"名","MIDDLE_NAME":"Middle name","NAME_PREFIX":"Name prefix","NAME_SUFFIX":"Name suffix","NICK_NAME":"昵称","LABEL_READ_ONLY":"只读","ADD_MENU_LABEL":"添加","ADD_MENU_NICKNAME":"昵称","ADD_MENU_NOTE":"注释","ADD_MENU_PHONE":"电话","ADD_MENU_URL":"网址","ADD_MENU_ADDRESS":"地址","ADD_MENU_BIRTHDAY":"生日","ADD_MENU_TAGS":"标签","BUTTON_SHARE_ALL":"所有人","BUTTON_SYNC":"同步 (CardDAV)","SEND_TO_ALL_CONTACT_EMAILS":"发送到所有联系人邮箱"},"COMPOSE":{"LINK_SHOW_INPUTS":"显示所有信息","BUTTON_SEND":"发送","BUTTON_MINIMIZE":"最小化","SAVED_TIME":"保存于 %TIME%","SAVED_ERROR_ON_SEND":"邮件已发送但并未保存在已发送列表中。","DISCARD_UNSAVED_DATA":"放弃未保存的数据？","ATTACH_FILES":"添加附件","ATTACH_DROP_FILES_DESC":"拖动文件至此","REPLY_MESSAGE_TITLE":"%DATETIME%, %EMAIL% 写到","FORWARD_MESSAGE_TOP_TITLE":"-------- 转发邮件 -------","FORWARD_MESSAGE_TOP_SENT":"发送","EMPTY_TO_ERROR_DESC":"请至少选择一位接收人","NO_ATTACHMENTS_HERE_DESC":"无附件。","ATTACHMENTS_ERROR_DESC":"注意！还有正在上传的附件。","ATTACHMENTS_UPLOAD_ERROR_DESC":"还有附件正在上传。","ALLOW_SPELLCHECK":"启用浏览器拼写检查器","ALLOW_DRAFT_AUTOSAVE":"自动保存草稿","BUTTON_REQUEST_READ_RECEIPT":"要求已读回执","BUTTON_MARK_AS_IMPORTANT":"标记为“重要”","BUTTON_REQUEST_DSN":"要求送达回执","BUTTON_REQUIRE_TLS":"要求安全送达","ERROR_EMPTY_BODY":"消息内容为空"},"POPUPS_ASK":{"EXIT_ARE_YOU_SURE":"您确定要退出吗？","DESC_WANT_CLOSE_THIS_WINDOW":"您确定要关闭此窗口吗？","DESC_WANT_DELETE_MESSAGES":"您确定要删除这条消息吗？"},"POPUPS_LANGUAGES":{"TITLE_LANGUAGES":"选择语言"},"POPUPS_ADD_ACCOUNT":{"TITLE_ADD_ACCOUNT":"添加账户","BUTTON_ADD_ACCOUNT":"添加","TITLE_UPDATE_ACCOUNT":"更新账户"},"POPUPS_IDENTITY":{"TITLE_ADD_IDENTITY":"添加身份","TITLE_UPDATE_IDENTITY":"更新身份","LABEL":"","BUTTON_ADD_IDENTITY":"添加","SIGNATURE":"Signature","LABEL_SIGNATURE_INSERT_BEFORE":"在回信中插入签名再引用来信"},"POPUPS_CREATE_FOLDER":{"TITLE_CREATE_FOLDER":"创建文件夹","LABEL_PARENT":"父文件夹","BUTTON_CREATE":"创建","TITLE_CREATING_PROCESS":"文件夹创建中"},"POPUPS_CLEAR_FOLDER":{"TITLE_CLEAR_FOLDER":"清理文件夹中所有邮件?","DANGER_DESC_WARNING":"警告！","DANGER_DESC_HTML_1":"此操作将完全删除文件夹 <strong>%FOLDER%</strong> 中的所有邮件！","DANGER_DESC_HTML_2":"一旦操作执行，将不可中断和撤销！","TITLE_CLEARING_PROCESS":"文件夹清理中…"},"CRYPTO":{"SIGN":"签名","ENCRYPT":"加密","DECRYPT":"解密","VERIFY":"Verify","GOOD_SIGNATURE":"来自 %USER% 的可用签名","ERROR":"%TYPE% 错误： %ERROR%","CREATE_SELF_SIGNED":"创建自签名的","VALID_UNTIL":"有效期至","PRIVATE_KEY":"私钥","CHANGE_PASS":"修改密码","CURRENT_PASS":"当前密码","NEW_PASS":"新密码","ASK_CRYPTKEY_PASS":"您的密码已更改。请输入您的旧登录密码解密数据"},"OPENPGP":{"POPUP_IMPORT_TITLE":"导入 OpenPGP 密钥","POPUP_IMPORT_BUTTON":"导入","POPUP_VIEW_TITLE":"查看 OpenPGP 密钥","POPUP_VIEW_BUTTON":"选择","POPUP_GENERATE_TITLE":"生成 OpenPGP 密钥","POPUP_GENERATE_BUTTON":"生成","LABEL_KEY_TYPE":"类型","SIGNED_MESSAGE":"由 OpenPGP 签名","ENCRYPTED_MESSAGE":"由 OpenPGP 加密","STORE_IN_GNUPG":"以 GnuPG 存储在服务器","STORE_PUBLIC_KEY_IN_GNUPG":"将公钥存储在 GnuPG 的服务器上","STORE_PRIVATE_KEY_IN_GNUPG":"将私钥存储在 GnuPG 的服务器上","BACKUP_ON_SERVER":"加密存储在服务器","BACKUP_PUBLIC_KEY_ON_SERVER":"在服务器上备份公钥","BACKUP_PRIVATE_KEY_ON_SERVER":"在服务器上备份私钥"},"SMIME":{"POPUP_IMPORT_TITLE":"导入 S/MIME 证书","CERTIFICATE":"证书","CERTIFICATES":"S/MIME 证书","SIGNED_MESSAGE":"由 S/MIME 签名","ENCRYPTED_MESSAGE":"由 S/MIME 加密","PRIVATE_KEY_OF":"%EMAIL% 的 S/MIME 私钥"},"POPUPS_FILTER":{"TITLE_CREATE_FILTER":"创建筛选条件","TITLE_EDIT_FILTER":"更新筛选条件","LEGEND_CONDITIONS":"条件","LEGEND_ACTIONS":"操作","BUTTON_ADD_CONDITION":"添加条件","SELECT_ACTION_MOVE_TO":"移动到","SELECT_ACTION_FORWARD_TO":"转发到","SELECT_ACTION_REJECT":"拒收","SELECT_ACTION_VACATION_MESSAGE":"假期自动回复","SELECT_ACTION_DISCARD":"取消","SELECT_FIELD_RECIPIENTS":"接收人 (To 或 CC)","SELECT_FIELD_HEADER":"标题","SELECT_FIELD_BODY":"内容","SELECT_FIELD_SIZE":"大小","SELECT_TYPE_CONTAINS":"包含","SELECT_TYPE_NOT_CONTAINS":"不包含","SELECT_TYPE_MATCHES":"满足条件 (可用通配符 * 或 ?)","SELECT_TYPE_NOT_MATCHES":"不满足条件 (可用通配符 * 或 ?)","SELECT_TYPE_REGEXP":"满足正则表达式","SELECT_TYPE_NOT_REGEXP":"不满足正则表达式","SELECT_TYPE_EQUAL_TO":"等于","SELECT_TYPE_NOT_EQUAL_TO":"不等于","SELECT_TYPE_OVER":"超过","SELECT_TYPE_UNDER":"不超过","SELECT_TYPE_TEXT":"文本","SELECT_TYPE_RAW":"源文件","SELECT_MATCH_ANY":"满足下列任何条件","SELECT_MATCH_ALL":"满足下列所有条件","MARK_AS_READ_LABEL":"标记为已读","REPLY_INTERVAL_LABEL":"答复间隔 (天) ","KEEP_LABEL":"保留邮件","STOP_LABEL":"停止处理更多规则","VACATION_SUBJECT_LABEL":"主题 (可选)","VACATION_MESSAGE_LABEL":"内容","VACATION_RECIPIENTS_LABEL":"收件人 (半角逗号“,”分隔)","REJECT_MESSAGE_LABEL":"拒收邮件","ALL_INCOMING_MESSAGES_DESC":"所有来信"},"POPUPS_SIEVE_SCRIPT":{"TITLE_CREATE":"创建脚本","TITLE_EDIT":"编辑脚本","BUTTON_ADD_FILTER":"添加筛选条件","BUTTON_RAW_SCRIPT":"使用自定义脚本","CAPABILITY_LABEL":"能力","CHANGES_NEED_TO_BE_SAVED_DESC":"这些更改需要保存。"},"POPUPS_SYSTEM_FOLDERS":{"TITLE_SYSTEM_FOLDERS":"选择系统文件夹","SELECT_CHOOSE_ONE":"选择一个","SELECT_UNUSE_NAME":"无","NOTIFICATION_SENT":"您没有选择“已发邮件”文件夹来存储已发送邮件。\n如果您不希望保存已发送邮件，请选择“无”选项。\n","NOTIFICATION_DRAFTS":"您没有选择“草稿”文件夹来存储邮件草稿。","NOTIFICATION_SPAM":"您没有选择“垃圾邮件”文件夹来存储垃圾邮件。\n如果您希望永久删除邮件，请选择“无”选项。\n","NOTIFICATION_TRASH":"您没有选择 已删除邮件 文件夹来存储垃圾邮件。\n如果您希望永久删除邮件，请选择“无”选项。\n","NOTIFICATION_ARCHIVE":"您没有选择“已归档邮件”文件夹来存储归档邮件。"},"TITLES":{"MAILBOX":"邮箱","SETTINGS":"设置"},"UPLOAD":{"ERROR_FILE_IS_TOO_BIG":"文件太大","ERROR_FILE_PARTIALLY_UPLOADED":"由于未知错误，文件部分上传","ERROR_NO_FILE_UPLOADED":"没有文件上传","ERROR_MISSING_TEMP_FOLDER":"临时文件丢失","ERROR_ON_SAVING_FILE":"遭遇未知错误","ERROR_FILE_TYPE":"无效文件类型","ERROR_UNKNOWN":"未知上传文件错误"},"EDITOR":{"PLAIN":"HTML <-> 纯文本","SOURCE":"HTML <-> 源代码","FONTFAMILY":"字体","FONTSIZE":"字号","DIR":"文本方向","DIR_LTR":"从左到右","DIR_RTL":"从右到左","DIR_AUTO":"自动","TEXTCOLOR":"字体颜色","BACKGROUNDCOLOR":"背景颜色","BOLD":"加粗","ITALIC":"倾斜","UNDERLINE":"下划线","STRIKE":"删除线","SUB":"下标","SUP":"上标","OL":"有序列表","UL":"无序列表","QUOTE":"引用文字","INDENTDECREASE":"减少缩进","INDENTINCREASE":"增加缩进","LINK":"链接","IMAGEURL":"图片 URL","IMAGEUPLOAD":"选择图片","UNDO":"撤销","REDO":"重做","REMOVESTYLE":"移除样式"},"SETTINGS_LABELS":{"GENERAL":"常规","CONTACTS":"联系人","FOLDERS":"文件夹","ACCOUNTS":"账户","FILTERS":"筛选器","SECURITY":"安全","THEMES":"主题"},"SETTINGS_FILTERS":{"SIMPLE":"简单","ADVANCED":"高级","BUTTON_ADD_SCRIPT":"添加脚本","SUBNAME_MOVE_TO":"移动到 \"%FOLDER%\"","SUBNAME_FORWARD_TO":"转发到 \"%EMAIL%\"","SUBNAME_REJECT":"拒绝","SUBNAME_VACATION_MESSAGE":"假期自动回复","SUBNAME_DISCARD":"取消"},"SETTINGS_SECURITY":{"LEGEND_SECURITY":"安全","LABEL_AUTOLOGOUT":"自动登出","FORGET_KEY_PASS":"忘记私钥密码","NEVER":"从不"},"SETTINGS_GENERAL":{"LANGUAGE":"语言","HOUR_FORMAT":"小时格式","IDENTITY":"身份","LAYOUT":"布局","LAYOUT_NO_SPLIT":"不分隔","LAYOUT_VERTICAL_SPLIT":"垂直分隔","LAYOUT_HORIZONTAL_SPLIT":"水平分隔","SHOW_NEXT_MESSAGE":"删除或移动当前消息后显示下一条消息","EDITOR":"默认文本编辑器","EDITOR_HTML":"Html","EDITOR_PLAIN":"纯文本","VIEW_OPTIONS":"视图选项","USE_PREVIEW_PANE":"使用预览","HIDE_DELETED_MESSAGES":"隐藏标记为删除的消息","USE_CHECKBOXES_IN_LIST":"列表中显示多选框","USE_THREADS":"使用对话","THREAD_ALGORITHM":"会话算法","REPLY_SAME_FOLDER":"将回复的邮件置于被回复的邮件所在的文件夹","PREFER_HTML":"相比纯文本优先使用 HTML","PREFER_HTML_INFO":"消息有时以两种格式传送。该选项控制您希望显示 HTML 部分还是纯文本部分。","REMOVE_COLORS":"从消息中删除背景和文本颜色","ALLOW_STYLES":"允许 <style> CSS","MESSAGE_PER_PAGE":"每页消息数","CHECK_MAIL_INTERVAL":"邮件检查间隔","MARK_MESSAGE_READ_AFTER":"将消息标记为已读","MSG_DEFAULT_ACTION":"默认操作","SECONDS":"秒","MINUTES":"分","NOTIFICATIONS":"通知","SOUND_NOTIFICATION":"提示音","CHROME_NOTIFICATION_DESC":"显示新邮件弹窗","CHROME_NOTIFICATION_DESC_DENIED":"(被浏览器阻止)","COLLAPSE_BLOCKQUOTES":"折叠引用文本","MAX_QUOTE_LEVEL":"最多显示的引用文本层级","LIST_INLINE_ATTACHMENTS":"在列表中显示内联附件","LIST_SIMPLE_ATTACHMENTS":"简洁附件列表","LIST_MESSAGES_GROUPED":"按分组显示消息 (按时间或发件人排序时)","EXTERNAL_IMAGES":"外部图片","IMAGES_OPTION_ASK":"总是询问","IMAGES_OPTION_WHITELIST":"白名单或询问","IMAGES_OPTION_ALWAYS":"总是显示","IMAGES_WHITELIST":"图片白名单","MESSAGE_POPUP_WINDOW":"弹出页面使用新窗口代替新选项卡","MAILTO":"注册成 mailto: 链接处理器","HTML_TO_MD":"Convert HTML to Markdown instead of plain text"},"SETTINGS_CONTACTS":{"LABEL_CONTACTS_AUTOSAVE":"自动添加到您的地址簿","LEGEND_CONTACTS_SYNC":"远程同步(CardDAV)","LABEL_CONTACTS_SYNC_ENABLE":"启用远程同步","LABEL_CONTACTS_SYNC_SERVER":"服务器","LABEL_CONTACTS_SYNC_AB_URL":"地址簿 URL","LABEL_CONTACTS_SYNC_USER":"用户名","SYNC_READ":"只读"},"SETTINGS_THEMES":{"LEGEND_THEMES":"主题","LABEL_BACKGROUND":"背景","LABEL_FONTS":"字体","BUTTON_UPLOAD_BACKGROUND_IMAGE":"上传背景 (JPG, PNG)","ERROR_FILE_IS_TOO_BIG":"文件过大","ERROR_FILE_TYPE_ERROR":"无效类型 (仅支持JPG和PNG)","ERROR_UNKNOWN":"上传时发生未知错误"},"SETTINGS_FOLDERS":{"LEGEND_FOLDERS":"文件夹列表","BUTTON_CREATE":"新建文件夹","BUTTON_SYSTEM":"系统文件夹","BUTTON_SUBSCRIBE":"订阅","BUTTON_UNSUBSCRIBE":"取消订阅","LOADING_PROCESS":"文件夹列表更新中","CREATING_PROCESS":"文件夹创建中","DELETING_PROCESS":"文件夹删除中","RENAMING_PROCESS":"文件夹重命名","TO_MANY_FOLDERS_DESC_1":"文件夹数量已达上限！","TO_MANY_FOLDERS_DESC_2":"为避免性能问题，暂时只显示部分文件夹。","HELP_DELETE_FOLDER":"删除文件夹","HELP_SHOW_HIDE_FOLDER":"显示/隐藏文件夹","HELP_CHECK_FOR_NEW_MESSAGES":"检查/不检查新邮件","HIDE_UNSUBSCRIBED":"隐藏未订阅的文件夹","UNHIDE_KOLAB_FOLDERS":"取消隐藏 Kolab 文件夹","TYPE_CALENDAR":"日历","TYPE_CONFIGURATION":"配置","TYPE_CONTACTS":"联系人","TYPE_FILES":"文件","TYPE_JOURNAL":"日志","TYPE_NOTES":"笔记","TYPE_TASKS":"任务"},"SETTINGS_ACCOUNTS":{"LEGEND_ACCOUNTS":"账户列表","LEGEND_IDENTITIES":"身份","LEGEND_ACCOUNTS_AND_IDENTITIES":"账户与身份","BUTTON_ADD_ACCOUNT":"添加一个账户","BUTTON_ADD_IDENTITY":"添加一个身份","LOADING_PROCESS":"更新账户列表中","SHOW_UNREAD":"显示未读消息数量"},"SETTINGS_OPENPGP":{"BUTTON_IMPORT_KEY":"导入 密钥","BUTTON_GENERATE_KEY_PAIR":"生成 密钥","IMPORT_FROM_SERVER":"从服务器导入","TITLE_PRIVATE":"私有","TITLE_PUBLIC":"公开","GET_MAILVELOPE":"获取 Mailvelope 浏览器扩展。"},"SHORTCUTS_HELP":{"LEGEND_SHORTCUTS_HELP":"快捷键说明","TAB_MAILBOX":"邮箱目录","TAB_MESSAGE_LIST":"邮件列表","TAB_MESSAGE_VIEW":"邮件视图","TAB_COMPOSE":"新邮件","LABEL_OPEN_USER_DROPDOWN":"打开用户菜单","LABEL_REPLY":"回复","LABEL_REPLY_ALL":"回复所有","LABEL_FORWARD":"转发","LABEL_FORWARD_MULTIPLY":"作为附件转发","LABEL_CHECK_ALL":"选择所有消息","LABEL_DELETE":"删除","LABEL_OPEN_THREAD":"打开选定的邮件往来","LABEL_MOVE":"移动","LABEL_READ":"将选定的邮件标记为“已读”","LABEL_UNREAD":"将选定的邮件标记为“未读”","LABEL_IMPORTANT":"将选定的邮件标记为“重要”","LABEL_CANCEL_SEARCH":"取消搜索","LABEL_FULLSCREEN_ENTER":"全屏邮件阅读模式","LABEL_VIEW_MESSAGE_ENTER":"取消全屏邮件阅读模式","LABEL_SWITCH_TO_MESSAGE":"切换到选中邮件","LABEL_SWITCH_TO_FOLDER_LIST":"切换到邮件列表","LABEL_FULLSCREEN_TOGGLE":"全屏模式切换","LABEL_BLOCKQUOTES_TOGGLE":"消息块引用切换","LABEL_THREAD_NEXT":"下一封往来邮件","LABEL_THREAD_PREV":"上一封往来邮件","LABEL_EXIT_FULLSCREEN":"退出全屏模式","LABEL_CLOSE_MESSAGE":"关闭独立邮件阅读模式","LABEL_SWITCH_TO_LIST":"切换到邮件列表","LABEL_OPEN_COMPOSE_POPUP":"新邮件","LABEL_MINIMIZE_COMPOSE_POPUP":"最小化新邮件窗口","LABEL_OPEN_IDENTITIES_DROPDOWN":"打开身份选择列表","LABEL_SAVE_MESSAGE":"保存邮件","LABEL_SEND_MESSAGE":"发送邮件","LABEL_CLOSE_COMPOSE":"退出新邮件"},"NOTIFICATIONS":{"RequestError":"请求失败","RequestAborted":"请求中止","RequestTimeout":"请求超时","InvalidToken":"无效标记","AuthError":"认证失败","ConnectionError":"无法连接至服务器","DomainAlreadyExists":"域已经存在","DomainNotAllowed":"不允许此域名","AccountNotAllowed":"不允许此账户","CryptKeyError":"您的登录密码已更改","ContactsSyncError":"联系人同步错误","CantGetMessageList":"无法获取邮件列表","CantGetMessage":"无法获取邮件","CantDeleteMessage":"无法删除邮件","CantCopyMessage":"无法复制邮件","CantMoveMessage":"无法移动邮件","CantSaveMessage":"无法保存邮件","CantSendMessage":"无法发送邮件","InvalidRecipients":"无效接收人","CantSaveFilters":"无法保存筛选器规则","CantGetFilters":"无法获取筛选器规则","CantActivateFiltersScript":"无法激活过滤器脚本","CantDeleteFiltersScript":"无法删除过滤器脚本","FiltersAreNotCorrect":"不正确的筛选器规则","CantCreateFolder":"无法创建文件夹","CantRenameFolder":"无法重命名文件夹","CantDeleteFolder":"无法删除文件夹","CantDeleteNonEmptyFolder":"无法删除非空文件夹","CantSubscribeFolder":"无法订阅文件夹","CantUnsubscribeFolder":"无法取消订阅文件夹","DemoSendMessageError":"出于安全考虑，测试账号无法发送外部邮件。","DemoAccountError":"出于安全考虑，测试账号无法进行此操作！","AccountAlreadyExists":"账户已存在","AccountDoesNotExist":"账户不存在","AccountSwitchFailed":"切换到账户 \"%EMAIL%\" 失败","MailServerError":"访问邮件服务器遇到错误。","InvalidInputArgument":"无效的参数输入","UnknownError":"未知错误"}};
rl.relativeTime = {
	year: {
		past: "{0} 年前",
		future: "{0} 年后"
	},
	month: {
		past: "{0} 个月前",
		future: "{0} 个月后"
	},
	week: {
		past: "{0} 周前",
		future: "{0} 周后"
	},
	day: {
		past: "{0} 天前",
		future: "{0} 天后"
	},
	hour: {
		past: "{0} 小时前",
		future: "{0} 小时后"
	},
	minute: {
		past: "{0} 分钟前",
		future: "{0} 分钟后"
	},
	second: {
		past: "{0} 秒前",
		future: "{0} 秒后"
	},
	plural: n => 'other'
}
;</script> </body> </html>