/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" #include "nsIMsgCompose.idl" #include "nsIMsgComposeParams.idl" interface nsIURI; interface nsIDocShell; interface nsIMsgWindow; interface nsIMsgIdentity; interface nsIMsgIncomingServer; interface nsIMsgDBHdr; webidl Selection; [scriptable, uuid(041782bf-e523-444b-a268-d90868fd2b50)] interface nsIMsgComposeService : nsISupports { /** * Open a compose window given a mailto url and other options. * * @param msgComposeWindowURL Can be null in most cases. If you have your * own chrome url you want to use in bringing up a * compose window, pass it in here. * @param msgHdr The header of the original message. * @param originalMsgURI The URI of the original message. * @param type The message compose type: new/reply/forward/.. * @param format The message compose format: text/html/.. * @param identity The identity to send the message from. * @param from The email address of the sender. * @param aMsgWindow The message window to use. * @param suppressReplyQuote An optional boolean flag to ignore or include selected content in aMsgWindow as quote in the new compose window. */ [can_run_script] void OpenComposeWindow(in AUTF8String msgComposeWindowURL, in nsIMsgDBHdr msgHdr, in AUTF8String originalMsgURI, in MSG_ComposeType type, in MSG_ComposeFormat format, in nsIMsgIdentity identity, in AUTF8String from, in nsIMsgWindow aMsgWindow, [optional] in AUTF8String selectionHTML, [optional] in boolean autodetectCharset); /** * Open a compose window given a 'mailto' URL and further optional * arguments. * * @param msgComposeWindowURL Can be null in most cases. If you have your * own chrome URL you want to use in bringing up a * compose window, pass it in here. * @param URI The 'mailto' URL you want to use as the * foundation for the data inside the compose * window. * @param identity An optional identity to send the message from. * @param format Optionally the preferred compose format. URIs * containing 'html-body' or 'html-part' fields * are always opened in HTML mode. */ void OpenComposeWindowWithURI(in string msgComposeWindowURL, in nsIURI URI, [optional] in nsIMsgIdentity identity, [optional] in MSG_ComposeFormat format); /* ... */ void OpenComposeWindowWithParams(in string msgComposeWindowURL, in nsIMsgComposeParams params); /** * Creates an nsIMsgCompose instance and initializes it. * * @param aParams An nsIMsgComposeParams object containing the initial * details for the compose. * @param aWindow The optional window associated with this compose object. * @param aDocShell The optional docShell of the editor element that is used * for composing. */ nsIMsgCompose initCompose(in nsIMsgComposeParams aParams, [optional] in mozIDOMWindowProxy aWindow, [optional] in nsIDocShell aDocShell); [noscript] boolean determineComposeHTML(in nsIMsgIdentity aIdentity, in MSG_ComposeFormat aFormat); /** * Given a 'mailto' URL and optional further arguments, parse the attributes * and turn them into an nsIMsgComposeParams object. * * @param URI The 'mailto' URL to parse. * @param identity An optional identity to send the message from. * @param format Optionally the preferred compose format. This does not * affect URIs containing 'html-body' or 'html-part' fields. * * @return nsIMsgComposeParams which corresponds to the passed in data. */ nsIMsgComposeParams getParamsForMailto(in nsIURI URI, [optional] in nsIMsgIdentity identity, [optional] in MSG_ComposeFormat format); /** * @{ * These constants control how to forward messages in forwardMessage. * kForwardAsDefault uses value of pref "mail.forward_message_mode". */ const unsigned long kForwardAsDefault = 0; const unsigned long kForwardAsAttachment = 1; const unsigned long kForwardInline = 2; /** @} */ /** * Allow filters to automatically forward a message to the given address(es). * @param forwardTo the address(es) to forward to * @param msgHdr the header of the message being replied to * @param msgWindow message window to use * @param server server to use for determining which account to send from * @param aForwardType - How to forward the message one of 3 values: * kForwardAsDefault, kForwardInline, or * kForwardAsAttachment. */ void forwardMessage(in AString forwardTo, in nsIMsgDBHdr msgHdr, in nsIMsgWindow msgWindow, in nsIMsgIncomingServer server, in unsigned long aForwardType); /** * Allow filters to automatically reply to a message. The reply message is * based on the given template. * @param msgHdr the header of the message being replied to * @param templateUri uri of the template to base their reply on * @param msgWindow message window to use * @param server server to use for determining which account to send from */ void replyWithTemplate(in nsIMsgDBHdr msgHdr, in AUTF8String templateUri, in nsIMsgWindow msgWindow, in nsIMsgIncomingServer server); /** * The docShell of each editor element used for composing should be registered * with this service. docShells passed to initCompose get registered * automatically. The registrations are typically used to get the msgCompose * window when determining what remote content to allow to be displayed. * * @param aDocShell The nsIDocShell of the editor element. * @param aMsgCompose The compose object associated with the compose window */ void registerComposeDocShell(in nsIDocShell aDocShell, in nsIMsgCompose aMsgCompose); /** * When an editor docShell is being closed, you should * unregister it from this service. nsIMsgCompose normally calls this * automatically for items passed to initCompose. * * @param aDocShell The nsIDocShell of the editor element. */ void unregisterComposeDocShell(in nsIDocShell aDocShell); /** * For a given docShell, returns the nsIMsgCompose object associated with it. * * @param aDocShell The nsIDocShell of the editor element. * * @return NS_ERROR_FAILURE if we could not find a nsIMsgCompose for * the passed in docShell. */ nsIMsgCompose getMsgComposeForDocShell(in nsIDocShell aDocShell); };