summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/base/public/nsIMsgIdentity.idl
blob: f02a240694fc2394772a9896efa18756765b356a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "nsIFile.idl"

/**
 * This interface contains all the personal outgoing mail information
 * for a given person.
 * Each identity is identified by a key, which is the <id> string in
 * the identity preferences, such as in mail.identity.<id>.replyTo.
 */
[scriptable, uuid(9dede9a0-f6fc-4afc-8fc9-a6af52414b3d)]
interface nsIMsgIdentity : nsISupports {
  /**
   * Internal preferences ID.
   */
  attribute ACString key;

  /**
   * A unique identifier for this identity that can be used for the same
   * identity synced across multiple profiles. Auto-generated on first use.
   */
  attribute AUTF8String UID;

  /**
   * Label describing this identity. May be empty.
   */
  attribute AString label;

  /**
   * Pretty display name to identify this specific identity. Will return a
   * composed string like "fullname <email> (label)".
   */
  readonly attribute AString identityName;

  /**
   * User's full name, i.e. John Doe.
   */
  attribute AString fullName;

  /**
   * User's e-mail address, i.e. john@doe.com.
   */
  attribute ACString email;

  /**
   * Do we use multiple e-mail addresses (like Catch-All) with this identity?
   */
  attribute boolean catchAll;

  /**
   * Hint for when to use this identity as catch all. It is a comma separated
   * list of things to look for delivery in headers when replying to a message
   * that was not directly addressed to a matching identity.
   */
  attribute AUTF8String catchAllHint;

  /**
   * Formats fullName and email into the proper string to use as sender:
   * name <email>
   */
  readonly attribute AString fullAddress;

  /**
   * Optional replyTo address, i.e. johnNOSPAM@doe.com.
   */
  attribute AUTF8String replyTo;

  /**
   * Optional organization.
   */
  attribute AString organization;

  /**
   * Should we compose with HTML by default?
   */
  attribute boolean composeHtml;

  /**
   * Should we attach a signature from file?
   */
  attribute boolean attachSignature;

  /**
   * Should we attach a vcard by default?
   */
  attribute boolean attachVCard;

  /**
   * Should we automatically quote the original message?
   */
  attribute boolean autoQuote;

  /**
   * What should our quoting preference be?
   */
  attribute long replyOnTop;

  /**
   * Should our signature be at the end of the quoted text when replying
   * above it?
   */
  attribute boolean sigBottom;

  /**
   * Include a signature when forwarding a message?
   */
  attribute boolean sigOnForward;

  /**
   * Include a signature when replying to a message?
   */
  attribute boolean sigOnReply;

  /**
   * The current signature file.
   */
  attribute nsIFile signature;

  /**
   * Modification time of the signature file.
   */
  attribute long signatureDate;

  /**
   * Signature text if not read from file; format depends on htmlSigFormat.
   */
  attribute AString htmlSigText;

  /**
   * Does htmlSigText contain HTML? Use plain text if false.
   */
  attribute boolean htmlSigFormat;

  /**
   * Suppress the double-dash signature separator
   */
  attribute boolean suppressSigSep;

  /**
   * The encoded string representing the vcard.
   */
  attribute ACString escapedVCard;

  attribute boolean doFcc;
  /// URI for the fcc (Sent) folder
  attribute AUTF8String fccFolder;
  attribute boolean fccReplyFollowsParent;

  /**
   * @{
   * these attributes control whether the special folder pickers for
   * fcc, drafts,archives, and templates are set to pick between servers
   * (e.g., Sent on accountName) or to pick any folder on any account.
   * "0" means choose between servers; "1" means use the full folder picker.
   */
  attribute ACString fccFolderPickerMode;
  attribute ACString draftsFolderPickerMode;
  attribute ACString archivesFolderPickerMode;
  attribute ACString tmplFolderPickerMode;
  /** @} */

  // Don't call bccSelf, bccOthers, and bccList directly, they are
  // only used for migration and backward compatibility. Use doBcc
  // and doBccList instead.
  attribute boolean bccSelf;
  attribute boolean bccOthers;
  attribute ACString bccList;

  attribute boolean doCc;
  attribute AUTF8String doCcList;

  attribute boolean doBcc;
  attribute AUTF8String doBccList;
  /**
   * @{
   * URIs for the special folders (drafts, templates, archive)
   */
  attribute AUTF8String draftFolder;
  attribute AUTF8String archiveFolder;
  attribute AUTF8String stationeryFolder;
  /** @} */

  attribute boolean archiveEnabled;
  /**
   * @{
   * This attribute and constants control the granularity of sub-folders of the
   * Archives folder - either messages go in the single archive folder, or a
   * yearly archive folder, or in a monthly archive folder with a yearly
   * parent folder. If the server doesn't support folders that both contain
   * messages and have sub-folders, we will ignore this setting.
   */
  attribute long archiveGranularity;
  const long singleArchiveFolder = 0;
  const long perYearArchiveFolders = 1;
  const long perMonthArchiveFolders = 2;
  /// Maintain the source folder name when creating Archive subfolders
  attribute boolean archiveKeepFolderStructure;
  /** @} */

  attribute boolean showSaveMsgDlg;
  attribute ACString directoryServer;
  attribute boolean overrideGlobalPref;
  /**
   * If this is false, don't append the user's domain
   * to an autocomplete address with no matches
   */
   attribute boolean autocompleteToMyDomain;
  /**
   * valid determines if the UI should use this identity
   * and the wizard uses this to determine whether or not
   * to ask the user to complete all the fields
   */
  attribute boolean valid;

  /**
   * this is really dangerous. this destroys all pref values
   * do not call this unless you know what you're doing!
   */
  void clearAllValues();

  /**
   * the preferred smtp server for this identity.
   * if this is set, this the smtp server that should be used
   * for the message send
   */
  attribute ACString smtpServerKey;

  /**
   * default request for return receipt option for this identity
   * if this is set, the Return Receipt menu item on the compose
   * window will be checked
   */
  readonly attribute boolean requestReturnReceipt;
  readonly attribute long receiptHeaderType;

  /**
   * default request for DSN option for this identity
   * if this is set, the DSN menu item on the compose
   * window will be checked
   */
  readonly attribute boolean requestDSN;

  /**
   * If true, include supported Autocrypt headers whenever sending a
   * plain text or OpenPGP message. (Ignored when sending S/MIME.)
   */
  attribute boolean sendAutocryptHeaders;

  /**
   * If true, automatically attach the user's own public OpenPGP key
   * whenever adding an OpenPGP digital signature.
   */
  attribute boolean attachPgpKey;

  /**
   * If true, encrypt draft messages that are saved to disk or on the
   * mail server. This requires that a personal OpenPGP key or S/MIME
   * certificate is configured and valid, matching the selected
   * encryption technology for the current message.
   */
  attribute boolean autoEncryptDrafts;

  /*
   * If true, when sending an OpenPGP encrypted message, encrypt the
   * email's subject, too.
   */
  attribute boolean protectSubject;

  /*
   * The default encryption setting for new emails that aren't already
   * in an encryption context. (When forwarding or replying to an
   * encrypted message we always automatically turn on encryption.)
   * 0: disable encryption
   * 1: optional encryption (not implemented)
   * 2: require encryption
   */
  attribute long encryptionPolicy;

  /*
   * If true, add a digital signature for messages that aren't using
   * encryption. (A message that uses encryption will automatically
   * have signing enabled.)
   */
  attribute boolean signMail;

  /* copy the attributes of the identity we pass in */
  void copy(in nsIMsgIdentity identity);

  /**
   * these generic getter / setters, useful for extending mailnews
   * note, these attributes persist across sessions
   */
  AString getUnicharAttribute(in string name);
  void setUnicharAttribute(in string name, in AString value);

  ACString getCharAttribute(in string name);
  void setCharAttribute(in string name, in ACString value);

  boolean getBoolAttribute(in string name);
  void setBoolAttribute(in string name, in boolean value);

  long getIntAttribute(in string name);
  void setIntAttribute(in string name, in long value);

  /* useful for debugging */
  AString toString();
};