Changes in Thunderbird 74

legacy

  • The legacy API has been removed. This has been covered elsewhere.

accounts/folders

  • The MailFolder object gained a subFolders property. From now on the accounts API functions will return a hierarchy of folders instead of a flat list. If you still need a flat list you should traverse the folder hierarchy:

    browser.accounts.list().then(accounts => {
      let arrayOfFolders = [];
    
      function traverse(folders) {
        if (!folders) {
          return;
        }
        for (let f of folders) {
          arrayOfFolders.push(f);
          traverse(f.subFolders);
        }
      }
    
      for (let account of accounts) {
        traverse(account.folders);
      }
      return arrayOfFolders;
    });
    

    This example code works with both the current API in 68 and the new version in 74 (which will be backported to 68 after some time in beta).

compose

  • The compose API gained two new functions and an event. The getComposeDetails and setComposeDetails functions let you retrieve or change the recipients and subject of a message being composed. More details will be added later. The onBeforeSend event is fired when a message is about to be sent. At this point your extension can prevent sending or change the same details as in the new functions.

messages

  • The query function can now query by tags.
  • The MessageHeader object now has junk properties: junkScore is an integer score from 0 (not spam) to 100 (spam). junk shows whether or not that score is greater than the junk threshold.