/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/nsIMsgSend.idl
 */

#ifndef __gen_nsIMsgSend_h__
#define __gen_nsIMsgSend_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

#ifndef __gen_nsrootidl_h__
#include "nsrootidl.h"
#endif

#ifndef __gen_nsIMsgIdentity_h__
#include "nsIMsgIdentity.h"
#endif

#ifndef __gen_nsIMsgCompFields_h__
#include "nsIMsgCompFields.h"
#endif

#ifndef __gen_nsIMsgSendListener_h__
#include "nsIMsgSendListener.h"
#endif

#ifndef __gen_nsIMsgSendReport_h__
#include "nsIMsgSendReport.h"
#endif

#ifndef __gen_domstubs_h__
#include "domstubs.h"
#endif

#ifndef __gen_nsIPrompt_h__
#include "nsIPrompt.h"
#endif

#ifndef __gen_MailNewsTypes2_h__
#include "MailNewsTypes2.h"
#endif

#ifndef __gen_nsIMsgComposeParams_h__
#include "nsIMsgComposeParams.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIMsgProgress; /* forward declaration */

class nsIURI; /* forward declaration */

class nsIRequest; /* forward declaration */

class nsIMsgDBHdr; /* forward declaration */

class nsIMsgHdr; /* forward declaration */

class nsIFile; /* forward declaration */

class nsIOutputStream; /* forward declaration */

class nsIMsgComposeSecure; /* forward declaration */

class nsIMsgStatusFeedback; /* forward declaration */

class nsIEditor; /* forward declaration */

class nsIArray; /* forward declaration */

class nsISupportsArray; /* forward declaration */

typedef int32_t  nsMsgDeliverMode;


/* starting interface:    nsIMsgAttachmentData */
#define NS_IMSGATTACHMENTDATA_IID_STR "c658cd1f-dc4a-43c0-911c-c6d3e569ca7e"

#define NS_IMSGATTACHMENTDATA_IID \
  {0xc658cd1f, 0xdc4a, 0x43c0, \
    { 0x91, 0x1c, 0xc6, 0xd3, 0xe5, 0x69, 0xca, 0x7e }}

class NS_NO_VTABLE nsIMsgAttachmentData : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGATTACHMENTDATA_IID)

  /* attribute nsIURI url; */
  NS_IMETHOD GetUrl(nsIURI * *aUrl) = 0;
  NS_IMETHOD SetUrl(nsIURI *aUrl) = 0;

  /* attribute ACString desiredType; */
  NS_IMETHOD GetDesiredType(nsACString & aDesiredType) = 0;
  NS_IMETHOD SetDesiredType(const nsACString & aDesiredType) = 0;

  /* attribute ACString realType; */
  NS_IMETHOD GetRealType(nsACString & aRealType) = 0;
  NS_IMETHOD SetRealType(const nsACString & aRealType) = 0;

  /* attribute ACString realEncoding; */
  NS_IMETHOD GetRealEncoding(nsACString & aRealEncoding) = 0;
  NS_IMETHOD SetRealEncoding(const nsACString & aRealEncoding) = 0;

  /* attribute ACString realName; */
  NS_IMETHOD GetRealName(nsACString & aRealName) = 0;
  NS_IMETHOD SetRealName(const nsACString & aRealName) = 0;

  /* attribute ACString description; */
  NS_IMETHOD GetDescription(nsACString & aDescription) = 0;
  NS_IMETHOD SetDescription(const nsACString & aDescription) = 0;

  /* attribute ACString xMacType; */
  NS_IMETHOD GetXMacType(nsACString & aXMacType) = 0;
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) = 0;

  /* attribute ACString xMacCreator; */
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) = 0;
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgAttachmentData, NS_IMSGATTACHMENTDATA_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGATTACHMENTDATA \
  NS_IMETHOD GetUrl(nsIURI * *aUrl) override; \
  NS_IMETHOD SetUrl(nsIURI *aUrl) override; \
  NS_IMETHOD GetDesiredType(nsACString & aDesiredType) override; \
  NS_IMETHOD SetDesiredType(const nsACString & aDesiredType) override; \
  NS_IMETHOD GetRealType(nsACString & aRealType) override; \
  NS_IMETHOD SetRealType(const nsACString & aRealType) override; \
  NS_IMETHOD GetRealEncoding(nsACString & aRealEncoding) override; \
  NS_IMETHOD SetRealEncoding(const nsACString & aRealEncoding) override; \
  NS_IMETHOD GetRealName(nsACString & aRealName) override; \
  NS_IMETHOD SetRealName(const nsACString & aRealName) override; \
  NS_IMETHOD GetDescription(nsACString & aDescription) override; \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override; \
  NS_IMETHOD GetXMacType(nsACString & aXMacType) override; \
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) override; \
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) override; \
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) override; 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGATTACHMENTDATA(_to) \
  NS_IMETHOD GetUrl(nsIURI * *aUrl) override { return _to GetUrl(aUrl); } \
  NS_IMETHOD SetUrl(nsIURI *aUrl) override { return _to SetUrl(aUrl); } \
  NS_IMETHOD GetDesiredType(nsACString & aDesiredType) override { return _to GetDesiredType(aDesiredType); } \
  NS_IMETHOD SetDesiredType(const nsACString & aDesiredType) override { return _to SetDesiredType(aDesiredType); } \
  NS_IMETHOD GetRealType(nsACString & aRealType) override { return _to GetRealType(aRealType); } \
  NS_IMETHOD SetRealType(const nsACString & aRealType) override { return _to SetRealType(aRealType); } \
  NS_IMETHOD GetRealEncoding(nsACString & aRealEncoding) override { return _to GetRealEncoding(aRealEncoding); } \
  NS_IMETHOD SetRealEncoding(const nsACString & aRealEncoding) override { return _to SetRealEncoding(aRealEncoding); } \
  NS_IMETHOD GetRealName(nsACString & aRealName) override { return _to GetRealName(aRealName); } \
  NS_IMETHOD SetRealName(const nsACString & aRealName) override { return _to SetRealName(aRealName); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) override { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetXMacType(nsACString & aXMacType) override { return _to GetXMacType(aXMacType); } \
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) override { return _to SetXMacType(aXMacType); } \
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) override { return _to GetXMacCreator(aXMacCreator); } \
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) override { return _to SetXMacCreator(aXMacCreator); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGATTACHMENTDATA(_to) \
  NS_IMETHOD GetUrl(nsIURI * *aUrl) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUrl(aUrl); } \
  NS_IMETHOD SetUrl(nsIURI *aUrl) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUrl(aUrl); } \
  NS_IMETHOD GetDesiredType(nsACString & aDesiredType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDesiredType(aDesiredType); } \
  NS_IMETHOD SetDesiredType(const nsACString & aDesiredType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDesiredType(aDesiredType); } \
  NS_IMETHOD GetRealType(nsACString & aRealType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRealType(aRealType); } \
  NS_IMETHOD SetRealType(const nsACString & aRealType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRealType(aRealType); } \
  NS_IMETHOD GetRealEncoding(nsACString & aRealEncoding) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRealEncoding(aRealEncoding); } \
  NS_IMETHOD SetRealEncoding(const nsACString & aRealEncoding) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRealEncoding(aRealEncoding); } \
  NS_IMETHOD GetRealName(nsACString & aRealName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRealName(aRealName); } \
  NS_IMETHOD SetRealName(const nsACString & aRealName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRealName(aRealName); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetXMacType(nsACString & aXMacType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXMacType(aXMacType); } \
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetXMacType(aXMacType); } \
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXMacCreator(aXMacCreator); } \
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetXMacCreator(aXMacCreator); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMsgAttachmentData : public nsIMsgAttachmentData
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGATTACHMENTDATA

  nsMsgAttachmentData();

private:
  ~nsMsgAttachmentData();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgAttachmentData, nsIMsgAttachmentData)

nsMsgAttachmentData::nsMsgAttachmentData()
{
  /* member initializers and constructor code */
}

nsMsgAttachmentData::~nsMsgAttachmentData()
{
  /* destructor code */
}

/* attribute nsIURI url; */
NS_IMETHODIMP nsMsgAttachmentData::GetUrl(nsIURI * *aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetUrl(nsIURI *aUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString desiredType; */
NS_IMETHODIMP nsMsgAttachmentData::GetDesiredType(nsACString & aDesiredType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetDesiredType(const nsACString & aDesiredType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString realType; */
NS_IMETHODIMP nsMsgAttachmentData::GetRealType(nsACString & aRealType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetRealType(const nsACString & aRealType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString realEncoding; */
NS_IMETHODIMP nsMsgAttachmentData::GetRealEncoding(nsACString & aRealEncoding)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetRealEncoding(const nsACString & aRealEncoding)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString realName; */
NS_IMETHODIMP nsMsgAttachmentData::GetRealName(nsACString & aRealName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetRealName(const nsACString & aRealName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString description; */
NS_IMETHODIMP nsMsgAttachmentData::GetDescription(nsACString & aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetDescription(const nsACString & aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString xMacType; */
NS_IMETHODIMP nsMsgAttachmentData::GetXMacType(nsACString & aXMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetXMacType(const nsACString & aXMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString xMacCreator; */
NS_IMETHODIMP nsMsgAttachmentData::GetXMacCreator(nsACString & aXMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachmentData::SetXMacCreator(const nsACString & aXMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIMsgAttachedFile */
#define NS_IMSGATTACHEDFILE_IID_STR "c552345d-c74b-40b0-a673-79bb461e920b"

#define NS_IMSGATTACHEDFILE_IID \
  {0xc552345d, 0xc74b, 0x40b0, \
    { 0xa6, 0x73, 0x79, 0xbb, 0x46, 0x1e, 0x92, 0x0b }}

class NS_NO_VTABLE nsIMsgAttachedFile : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGATTACHEDFILE_IID)

  /* attribute nsIURI origUrl; */
  NS_IMETHOD GetOrigUrl(nsIURI * *aOrigUrl) = 0;
  NS_IMETHOD SetOrigUrl(nsIURI *aOrigUrl) = 0;

  /* attribute nsIFile tmpFile; */
  NS_IMETHOD GetTmpFile(nsIFile * *aTmpFile) = 0;
  NS_IMETHOD SetTmpFile(nsIFile *aTmpFile) = 0;

  /* attribute ACString type; */
  NS_IMETHOD GetType(nsACString & aType) = 0;
  NS_IMETHOD SetType(const nsACString & aType) = 0;

  /* attribute ACString encoding; */
  NS_IMETHOD GetEncoding(nsACString & aEncoding) = 0;
  NS_IMETHOD SetEncoding(const nsACString & aEncoding) = 0;

  /* attribute ACString description; */
  NS_IMETHOD GetDescription(nsACString & aDescription) = 0;
  NS_IMETHOD SetDescription(const nsACString & aDescription) = 0;

  /* attribute ACString cloudPartInfo; */
  NS_IMETHOD GetCloudPartInfo(nsACString & aCloudPartInfo) = 0;
  NS_IMETHOD SetCloudPartInfo(const nsACString & aCloudPartInfo) = 0;

  /* attribute ACString xMacType; */
  NS_IMETHOD GetXMacType(nsACString & aXMacType) = 0;
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) = 0;

  /* attribute ACString xMacCreator; */
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) = 0;
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) = 0;

  /* attribute ACString realName; */
  NS_IMETHOD GetRealName(nsACString & aRealName) = 0;
  NS_IMETHOD SetRealName(const nsACString & aRealName) = 0;

  /* attribute unsigned long size; */
  NS_IMETHOD GetSize(uint32_t *aSize) = 0;
  NS_IMETHOD SetSize(uint32_t aSize) = 0;

  /* attribute unsigned long unprintableCount; */
  NS_IMETHOD GetUnprintableCount(uint32_t *aUnprintableCount) = 0;
  NS_IMETHOD SetUnprintableCount(uint32_t aUnprintableCount) = 0;

  /* attribute unsigned long highbitCount; */
  NS_IMETHOD GetHighbitCount(uint32_t *aHighbitCount) = 0;
  NS_IMETHOD SetHighbitCount(uint32_t aHighbitCount) = 0;

  /* attribute unsigned long ctlCount; */
  NS_IMETHOD GetCtlCount(uint32_t *aCtlCount) = 0;
  NS_IMETHOD SetCtlCount(uint32_t aCtlCount) = 0;

  /* attribute unsigned long nullCount; */
  NS_IMETHOD GetNullCount(uint32_t *aNullCount) = 0;
  NS_IMETHOD SetNullCount(uint32_t aNullCount) = 0;

  /* attribute unsigned long maxLineLength; */
  NS_IMETHOD GetMaxLineLength(uint32_t *aMaxLineLength) = 0;
  NS_IMETHOD SetMaxLineLength(uint32_t aMaxLineLength) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgAttachedFile, NS_IMSGATTACHEDFILE_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGATTACHEDFILE \
  NS_IMETHOD GetOrigUrl(nsIURI * *aOrigUrl) override; \
  NS_IMETHOD SetOrigUrl(nsIURI *aOrigUrl) override; \
  NS_IMETHOD GetTmpFile(nsIFile * *aTmpFile) override; \
  NS_IMETHOD SetTmpFile(nsIFile *aTmpFile) override; \
  NS_IMETHOD GetType(nsACString & aType) override; \
  NS_IMETHOD SetType(const nsACString & aType) override; \
  NS_IMETHOD GetEncoding(nsACString & aEncoding) override; \
  NS_IMETHOD SetEncoding(const nsACString & aEncoding) override; \
  NS_IMETHOD GetDescription(nsACString & aDescription) override; \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override; \
  NS_IMETHOD GetCloudPartInfo(nsACString & aCloudPartInfo) override; \
  NS_IMETHOD SetCloudPartInfo(const nsACString & aCloudPartInfo) override; \
  NS_IMETHOD GetXMacType(nsACString & aXMacType) override; \
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) override; \
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) override; \
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) override; \
  NS_IMETHOD GetRealName(nsACString & aRealName) override; \
  NS_IMETHOD SetRealName(const nsACString & aRealName) override; \
  NS_IMETHOD GetSize(uint32_t *aSize) override; \
  NS_IMETHOD SetSize(uint32_t aSize) override; \
  NS_IMETHOD GetUnprintableCount(uint32_t *aUnprintableCount) override; \
  NS_IMETHOD SetUnprintableCount(uint32_t aUnprintableCount) override; \
  NS_IMETHOD GetHighbitCount(uint32_t *aHighbitCount) override; \
  NS_IMETHOD SetHighbitCount(uint32_t aHighbitCount) override; \
  NS_IMETHOD GetCtlCount(uint32_t *aCtlCount) override; \
  NS_IMETHOD SetCtlCount(uint32_t aCtlCount) override; \
  NS_IMETHOD GetNullCount(uint32_t *aNullCount) override; \
  NS_IMETHOD SetNullCount(uint32_t aNullCount) override; \
  NS_IMETHOD GetMaxLineLength(uint32_t *aMaxLineLength) override; \
  NS_IMETHOD SetMaxLineLength(uint32_t aMaxLineLength) override; 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGATTACHEDFILE(_to) \
  NS_IMETHOD GetOrigUrl(nsIURI * *aOrigUrl) override { return _to GetOrigUrl(aOrigUrl); } \
  NS_IMETHOD SetOrigUrl(nsIURI *aOrigUrl) override { return _to SetOrigUrl(aOrigUrl); } \
  NS_IMETHOD GetTmpFile(nsIFile * *aTmpFile) override { return _to GetTmpFile(aTmpFile); } \
  NS_IMETHOD SetTmpFile(nsIFile *aTmpFile) override { return _to SetTmpFile(aTmpFile); } \
  NS_IMETHOD GetType(nsACString & aType) override { return _to GetType(aType); } \
  NS_IMETHOD SetType(const nsACString & aType) override { return _to SetType(aType); } \
  NS_IMETHOD GetEncoding(nsACString & aEncoding) override { return _to GetEncoding(aEncoding); } \
  NS_IMETHOD SetEncoding(const nsACString & aEncoding) override { return _to SetEncoding(aEncoding); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) override { return _to GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override { return _to SetDescription(aDescription); } \
  NS_IMETHOD GetCloudPartInfo(nsACString & aCloudPartInfo) override { return _to GetCloudPartInfo(aCloudPartInfo); } \
  NS_IMETHOD SetCloudPartInfo(const nsACString & aCloudPartInfo) override { return _to SetCloudPartInfo(aCloudPartInfo); } \
  NS_IMETHOD GetXMacType(nsACString & aXMacType) override { return _to GetXMacType(aXMacType); } \
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) override { return _to SetXMacType(aXMacType); } \
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) override { return _to GetXMacCreator(aXMacCreator); } \
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) override { return _to SetXMacCreator(aXMacCreator); } \
  NS_IMETHOD GetRealName(nsACString & aRealName) override { return _to GetRealName(aRealName); } \
  NS_IMETHOD SetRealName(const nsACString & aRealName) override { return _to SetRealName(aRealName); } \
  NS_IMETHOD GetSize(uint32_t *aSize) override { return _to GetSize(aSize); } \
  NS_IMETHOD SetSize(uint32_t aSize) override { return _to SetSize(aSize); } \
  NS_IMETHOD GetUnprintableCount(uint32_t *aUnprintableCount) override { return _to GetUnprintableCount(aUnprintableCount); } \
  NS_IMETHOD SetUnprintableCount(uint32_t aUnprintableCount) override { return _to SetUnprintableCount(aUnprintableCount); } \
  NS_IMETHOD GetHighbitCount(uint32_t *aHighbitCount) override { return _to GetHighbitCount(aHighbitCount); } \
  NS_IMETHOD SetHighbitCount(uint32_t aHighbitCount) override { return _to SetHighbitCount(aHighbitCount); } \
  NS_IMETHOD GetCtlCount(uint32_t *aCtlCount) override { return _to GetCtlCount(aCtlCount); } \
  NS_IMETHOD SetCtlCount(uint32_t aCtlCount) override { return _to SetCtlCount(aCtlCount); } \
  NS_IMETHOD GetNullCount(uint32_t *aNullCount) override { return _to GetNullCount(aNullCount); } \
  NS_IMETHOD SetNullCount(uint32_t aNullCount) override { return _to SetNullCount(aNullCount); } \
  NS_IMETHOD GetMaxLineLength(uint32_t *aMaxLineLength) override { return _to GetMaxLineLength(aMaxLineLength); } \
  NS_IMETHOD SetMaxLineLength(uint32_t aMaxLineLength) override { return _to SetMaxLineLength(aMaxLineLength); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGATTACHEDFILE(_to) \
  NS_IMETHOD GetOrigUrl(nsIURI * *aOrigUrl) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOrigUrl(aOrigUrl); } \
  NS_IMETHOD SetOrigUrl(nsIURI *aOrigUrl) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetOrigUrl(aOrigUrl); } \
  NS_IMETHOD GetTmpFile(nsIFile * *aTmpFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTmpFile(aTmpFile); } \
  NS_IMETHOD SetTmpFile(nsIFile *aTmpFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetTmpFile(aTmpFile); } \
  NS_IMETHOD GetType(nsACString & aType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetType(aType); } \
  NS_IMETHOD SetType(const nsACString & aType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetType(aType); } \
  NS_IMETHOD GetEncoding(nsACString & aEncoding) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetEncoding(aEncoding); } \
  NS_IMETHOD SetEncoding(const nsACString & aEncoding) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetEncoding(aEncoding); } \
  NS_IMETHOD GetDescription(nsACString & aDescription) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDescription(aDescription); } \
  NS_IMETHOD SetDescription(const nsACString & aDescription) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetDescription(aDescription); } \
  NS_IMETHOD GetCloudPartInfo(nsACString & aCloudPartInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCloudPartInfo(aCloudPartInfo); } \
  NS_IMETHOD SetCloudPartInfo(const nsACString & aCloudPartInfo) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCloudPartInfo(aCloudPartInfo); } \
  NS_IMETHOD GetXMacType(nsACString & aXMacType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXMacType(aXMacType); } \
  NS_IMETHOD SetXMacType(const nsACString & aXMacType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetXMacType(aXMacType); } \
  NS_IMETHOD GetXMacCreator(nsACString & aXMacCreator) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetXMacCreator(aXMacCreator); } \
  NS_IMETHOD SetXMacCreator(const nsACString & aXMacCreator) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetXMacCreator(aXMacCreator); } \
  NS_IMETHOD GetRealName(nsACString & aRealName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRealName(aRealName); } \
  NS_IMETHOD SetRealName(const nsACString & aRealName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRealName(aRealName); } \
  NS_IMETHOD GetSize(uint32_t *aSize) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSize(aSize); } \
  NS_IMETHOD SetSize(uint32_t aSize) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSize(aSize); } \
  NS_IMETHOD GetUnprintableCount(uint32_t *aUnprintableCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUnprintableCount(aUnprintableCount); } \
  NS_IMETHOD SetUnprintableCount(uint32_t aUnprintableCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUnprintableCount(aUnprintableCount); } \
  NS_IMETHOD GetHighbitCount(uint32_t *aHighbitCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetHighbitCount(aHighbitCount); } \
  NS_IMETHOD SetHighbitCount(uint32_t aHighbitCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetHighbitCount(aHighbitCount); } \
  NS_IMETHOD GetCtlCount(uint32_t *aCtlCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCtlCount(aCtlCount); } \
  NS_IMETHOD SetCtlCount(uint32_t aCtlCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCtlCount(aCtlCount); } \
  NS_IMETHOD GetNullCount(uint32_t *aNullCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNullCount(aNullCount); } \
  NS_IMETHOD SetNullCount(uint32_t aNullCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetNullCount(aNullCount); } \
  NS_IMETHOD GetMaxLineLength(uint32_t *aMaxLineLength) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMaxLineLength(aMaxLineLength); } \
  NS_IMETHOD SetMaxLineLength(uint32_t aMaxLineLength) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMaxLineLength(aMaxLineLength); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMsgAttachedFile : public nsIMsgAttachedFile
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGATTACHEDFILE

  nsMsgAttachedFile();

private:
  ~nsMsgAttachedFile();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgAttachedFile, nsIMsgAttachedFile)

nsMsgAttachedFile::nsMsgAttachedFile()
{
  /* member initializers and constructor code */
}

nsMsgAttachedFile::~nsMsgAttachedFile()
{
  /* destructor code */
}

/* attribute nsIURI origUrl; */
NS_IMETHODIMP nsMsgAttachedFile::GetOrigUrl(nsIURI * *aOrigUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetOrigUrl(nsIURI *aOrigUrl)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIFile tmpFile; */
NS_IMETHODIMP nsMsgAttachedFile::GetTmpFile(nsIFile * *aTmpFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetTmpFile(nsIFile *aTmpFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString type; */
NS_IMETHODIMP nsMsgAttachedFile::GetType(nsACString & aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetType(const nsACString & aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString encoding; */
NS_IMETHODIMP nsMsgAttachedFile::GetEncoding(nsACString & aEncoding)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetEncoding(const nsACString & aEncoding)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString description; */
NS_IMETHODIMP nsMsgAttachedFile::GetDescription(nsACString & aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetDescription(const nsACString & aDescription)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString cloudPartInfo; */
NS_IMETHODIMP nsMsgAttachedFile::GetCloudPartInfo(nsACString & aCloudPartInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetCloudPartInfo(const nsACString & aCloudPartInfo)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString xMacType; */
NS_IMETHODIMP nsMsgAttachedFile::GetXMacType(nsACString & aXMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetXMacType(const nsACString & aXMacType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString xMacCreator; */
NS_IMETHODIMP nsMsgAttachedFile::GetXMacCreator(nsACString & aXMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetXMacCreator(const nsACString & aXMacCreator)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString realName; */
NS_IMETHODIMP nsMsgAttachedFile::GetRealName(nsACString & aRealName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetRealName(const nsACString & aRealName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long size; */
NS_IMETHODIMP nsMsgAttachedFile::GetSize(uint32_t *aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetSize(uint32_t aSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long unprintableCount; */
NS_IMETHODIMP nsMsgAttachedFile::GetUnprintableCount(uint32_t *aUnprintableCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetUnprintableCount(uint32_t aUnprintableCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long highbitCount; */
NS_IMETHODIMP nsMsgAttachedFile::GetHighbitCount(uint32_t *aHighbitCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetHighbitCount(uint32_t aHighbitCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long ctlCount; */
NS_IMETHODIMP nsMsgAttachedFile::GetCtlCount(uint32_t *aCtlCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetCtlCount(uint32_t aCtlCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long nullCount; */
NS_IMETHODIMP nsMsgAttachedFile::GetNullCount(uint32_t *aNullCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetNullCount(uint32_t aNullCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long maxLineLength; */
NS_IMETHODIMP nsMsgAttachedFile::GetMaxLineLength(uint32_t *aMaxLineLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgAttachedFile::SetMaxLineLength(uint32_t aMaxLineLength)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


/* starting interface:    nsIMsgEmbeddedImageData */
#define NS_IMSGEMBEDDEDIMAGEDATA_IID_STR "5d2c6554-b4c8-4d68-b864-50e0df929707"

#define NS_IMSGEMBEDDEDIMAGEDATA_IID \
  {0x5d2c6554, 0xb4c8, 0x4d68, \
    { 0xb8, 0x64, 0x50, 0xe0, 0xdf, 0x92, 0x97, 0x07 }}

class NS_NO_VTABLE nsIMsgEmbeddedImageData : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGEMBEDDEDIMAGEDATA_IID)

  /* attribute nsIURI uri; */
  NS_IMETHOD GetUri(nsIURI * *aUri) = 0;
  NS_IMETHOD SetUri(nsIURI *aUri) = 0;

  /* attribute ACString cid; */
  NS_IMETHOD GetCid(nsACString & aCid) = 0;
  NS_IMETHOD SetCid(const nsACString & aCid) = 0;

  /* attribute ACString name; */
  NS_IMETHOD GetName(nsACString & aName) = 0;
  NS_IMETHOD SetName(const nsACString & aName) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgEmbeddedImageData, NS_IMSGEMBEDDEDIMAGEDATA_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGEMBEDDEDIMAGEDATA \
  NS_IMETHOD GetUri(nsIURI * *aUri) override; \
  NS_IMETHOD SetUri(nsIURI *aUri) override; \
  NS_IMETHOD GetCid(nsACString & aCid) override; \
  NS_IMETHOD SetCid(const nsACString & aCid) override; \
  NS_IMETHOD GetName(nsACString & aName) override; \
  NS_IMETHOD SetName(const nsACString & aName) override; 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGEMBEDDEDIMAGEDATA(_to) \
  NS_IMETHOD GetUri(nsIURI * *aUri) override { return _to GetUri(aUri); } \
  NS_IMETHOD SetUri(nsIURI *aUri) override { return _to SetUri(aUri); } \
  NS_IMETHOD GetCid(nsACString & aCid) override { return _to GetCid(aCid); } \
  NS_IMETHOD SetCid(const nsACString & aCid) override { return _to SetCid(aCid); } \
  NS_IMETHOD GetName(nsACString & aName) override { return _to GetName(aName); } \
  NS_IMETHOD SetName(const nsACString & aName) override { return _to SetName(aName); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGEMBEDDEDIMAGEDATA(_to) \
  NS_IMETHOD GetUri(nsIURI * *aUri) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetUri(aUri); } \
  NS_IMETHOD SetUri(nsIURI *aUri) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetUri(aUri); } \
  NS_IMETHOD GetCid(nsACString & aCid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCid(aCid); } \
  NS_IMETHOD SetCid(const nsACString & aCid) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCid(aCid); } \
  NS_IMETHOD GetName(nsACString & aName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetName(aName); } \
  NS_IMETHOD SetName(const nsACString & aName) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetName(aName); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMsgEmbeddedImageData : public nsIMsgEmbeddedImageData
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGEMBEDDEDIMAGEDATA

  nsMsgEmbeddedImageData();

private:
  ~nsMsgEmbeddedImageData();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgEmbeddedImageData, nsIMsgEmbeddedImageData)

nsMsgEmbeddedImageData::nsMsgEmbeddedImageData()
{
  /* member initializers and constructor code */
}

nsMsgEmbeddedImageData::~nsMsgEmbeddedImageData()
{
  /* destructor code */
}

/* attribute nsIURI uri; */
NS_IMETHODIMP nsMsgEmbeddedImageData::GetUri(nsIURI * *aUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgEmbeddedImageData::SetUri(nsIURI *aUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString cid; */
NS_IMETHODIMP nsMsgEmbeddedImageData::GetCid(nsACString & aCid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgEmbeddedImageData::SetCid(const nsACString & aCid)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute ACString name; */
NS_IMETHODIMP nsMsgEmbeddedImageData::GetName(nsACString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgEmbeddedImageData::SetName(const nsACString & aName)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif

// Forward declaration
class nsMsgAttachmentHandler;
#include "nsAutoPtr.h"
#include "nsTArray.h"

/* starting interface:    nsIMsgSend */
#define NS_IMSGSEND_IID_STR "648f8e40-3977-4dd8-88f1-b932bc654aef"

#define NS_IMSGSEND_IID \
  {0x648f8e40, 0x3977, 0x4dd8, \
    { 0x88, 0xf1, 0xb9, 0x32, 0xbc, 0x65, 0x4a, 0xef }}

class NS_NO_VTABLE nsIMsgSend : public nsISupports {
 public: 

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IMSGSEND_IID)

  enum {
    nsMsgDeliverNow = 0,
    nsMsgQueueForLater = 1,
    nsMsgSave = 2,
    nsMsgSaveAs = 3,
    nsMsgSaveAsDraft = 4,
    nsMsgSaveAsTemplate = 5,
    nsMsgSendUnsent = 6,
    nsMsgDeliverBackground = 8
  };

  /* void createAndSendMessage (in nsIEditor aEditor, in nsIMsgIdentity aUserIdentity, in string aAccountKey, in nsIMsgCompFields aFields, in boolean aIsDigest, in boolean aDontDeliver, in nsMsgDeliverMode aMode, in nsIMsgDBHdr aMsgToReplace, in string aBodyType, in ACString aBody, in nsIArray aAttachments, in nsIArray aPreloadedAttachments, in nsIDOMWindow aParentWindow, in nsIMsgProgress aProgress, in nsIMsgSendListener aListener, in string aPassword, in AUTF8String aOriginalMsgURI, in MSG_ComposeType aType); */
  NS_IMETHOD CreateAndSendMessage(nsIEditor *aEditor, nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, bool aIsDigest, bool aDontDeliver, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, const char * aBodyType, const nsACString & aBody, nsIArray *aAttachments, nsIArray *aPreloadedAttachments, nsIDOMWindow *aParentWindow, nsIMsgProgress *aProgress, nsIMsgSendListener *aListener, const char * aPassword, const nsACString & aOriginalMsgURI, MSG_ComposeType aType) = 0;

  /* void createRFC822Message (in nsIMsgIdentity aUserIdentity, in nsIMsgCompFields aFields, in string aBodyType, in ACString aBody, in boolean aCreateAsDraft, in nsIArray aAttachments, in nsISupportsArray aEmbeddedObjects, in nsIMsgSendListener aListener); */
  NS_IMETHOD CreateRFC822Message(nsIMsgIdentity *aUserIdentity, nsIMsgCompFields *aFields, const char * aBodyType, const nsACString & aBody, bool aCreateAsDraft, nsIArray *aAttachments, nsISupportsArray *aEmbeddedObjects, nsIMsgSendListener *aListener) = 0;

  /* void sendMessageFile (in nsIMsgIdentity aUserIdentity, in string aAccountKey, in nsIMsgCompFields aFields, in nsIFile aSendIFile, in boolean aDeleteSendFileOnCompletion, in boolean aDigest_p, in nsMsgDeliverMode aMode, in nsIMsgDBHdr aMsgToReplace, in nsIMsgSendListener aListener, in nsIMsgStatusFeedback aStatusFeedback, in string aPassword); */
  NS_IMETHOD SendMessageFile(nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, nsIFile *aSendIFile, bool aDeleteSendFileOnCompletion, bool aDigest_p, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, nsIMsgSendListener *aListener, nsIMsgStatusFeedback *aStatusFeedback, const char * aPassword) = 0;

  /* void abort (); */
  NS_IMETHOD Abort(void) = 0;

  /* nsresult fail (in nsresult aFailureCode, in wstring aErrorMsg); */
  NS_IMETHOD Fail(nsresult aFailureCode, const char16_t * aErrorMsg, nsresult *_retval) = 0;

  /* void setGUINotificationState (in boolean aEnableFlag); */
  NS_IMETHOD SetGUINotificationState(bool aEnableFlag) = 0;

  /* void BeginCryptoEncapsulation (); */
  NS_IMETHOD BeginCryptoEncapsulation(void) = 0;

  /* readonly attribute nsIMsgSendReport sendReport; */
  NS_IMETHOD GetSendReport(nsIMsgSendReport * *aSendReport) = 0;

  /* void notifyListenerOnStartSending (in string aMsgID, in unsigned long aMsgSize); */
  NS_IMETHOD NotifyListenerOnStartSending(const char * aMsgID, uint32_t aMsgSize) = 0;

  /* void notifyListenerOnProgress (in string aMsgID, in unsigned long aProgress, in unsigned long aProgressMax); */
  NS_IMETHOD NotifyListenerOnProgress(const char * aMsgID, uint32_t aProgress, uint32_t aProgressMax) = 0;

  /* void notifyListenerOnStatus (in string aMsgID, in wstring aMsg); */
  NS_IMETHOD NotifyListenerOnStatus(const char * aMsgID, const char16_t * aMsg) = 0;

  /* void notifyListenerOnStopSending (in string aMsgID, in nsresult aStatus, in wstring aMsg, in nsIFile returnFile); */
  NS_IMETHOD NotifyListenerOnStopSending(const char * aMsgID, nsresult aStatus, const char16_t * aMsg, nsIFile *returnFile) = 0;

  /* void deliverAsMailExit (in nsIURI aUrl, in nsresult aExitCode); */
  NS_IMETHOD DeliverAsMailExit(nsIURI *aUrl, nsresult aExitCode) = 0;

  /* void deliverAsNewsExit (in nsIURI aUrl, in nsresult aExitCode); */
  NS_IMETHOD DeliverAsNewsExit(nsIURI *aUrl, nsresult aExitCode) = 0;

  /* void sendDeliveryCallback (in nsIURI aUrl, in boolean inIsNewsDelivery, in nsresult aExitCode); */
  NS_IMETHOD SendDeliveryCallback(nsIURI *aUrl, bool inIsNewsDelivery, nsresult aExitCode) = 0;

  /* void notifyListenerOnStartCopy (); */
  NS_IMETHOD NotifyListenerOnStartCopy(void) = 0;

  /* void notifyListenerOnProgressCopy (in unsigned long aProgress, in unsigned long aProgressMax); */
  NS_IMETHOD NotifyListenerOnProgressCopy(uint32_t aProgress, uint32_t aProgressMax) = 0;

  /* void notifyListenerOnStopCopy (in nsresult aStatus); */
  NS_IMETHOD NotifyListenerOnStopCopy(nsresult aStatus) = 0;

  /* void getMessageId (out ACString messageID); */
  NS_IMETHOD GetMessageId(nsACString & messageID) = 0;

  /* readonly attribute ACString folderUri; */
  NS_IMETHOD GetFolderUri(nsACString & aFolderUri) = 0;

  /* ACString getPartForDomIndex (in long aDomIndex); */
  NS_IMETHOD GetPartForDomIndex(int32_t aDomIndex, nsACString & _retval) = 0;

  /* attribute nsMsgKey messageKey; */
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) = 0;
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) = 0;

  /* nsIPrompt getDefaultPrompt (); */
  NS_IMETHOD GetDefaultPrompt(nsIPrompt * *_retval) = 0;

  /* void gatherMimeAttachments (); */
  NS_IMETHOD GatherMimeAttachments(void) = 0;

  /* readonly attribute boolean processAttachmentsSynchronously; */
  NS_IMETHOD GetProcessAttachmentsSynchronously(bool *aProcessAttachmentsSynchronously) = 0;

  /* [noscript] nsMsgAttachmentHandlerArray getAttachmentHandlers (); */
  NS_IMETHOD GetAttachmentHandlers(nsTArray<nsRefPtr<nsMsgAttachmentHandler>> **_retval) = 0;

  /* readonly attribute unsigned long attachmentCount; */
  NS_IMETHOD GetAttachmentCount(uint32_t *aAttachmentCount) = 0;

  /* attribute unsigned long pendingAttachmentCount; */
  NS_IMETHOD GetPendingAttachmentCount(uint32_t *aPendingAttachmentCount) = 0;
  NS_IMETHOD SetPendingAttachmentCount(uint32_t aPendingAttachmentCount) = 0;

  /* readonly attribute nsMsgDeliverMode deliveryMode; */
  NS_IMETHOD GetDeliveryMode(nsMsgDeliverMode *aDeliveryMode) = 0;

  /* nsIMsgProgress getProgress (); */
  NS_IMETHOD GetProgress(nsIMsgProgress * *_retval) = 0;

  /* nsIOutputStream getOutputStream (); */
  NS_IMETHOD GetOutputStream(nsIOutputStream * *_retval) = 0;

  /* attribute nsIRequest runningRequest; */
  NS_IMETHOD GetRunningRequest(nsIRequest * *aRunningRequest) = 0;
  NS_IMETHOD SetRunningRequest(nsIRequest *aRunningRequest) = 0;

  /* attribute nsresult status; */
  NS_IMETHOD GetStatus(nsresult *aStatus) = 0;
  NS_IMETHOD SetStatus(nsresult aStatus) = 0;

  /* attribute nsIMsgComposeSecure cryptoclosure; */
  NS_IMETHOD GetCryptoclosure(nsIMsgComposeSecure * *aCryptoclosure) = 0;
  NS_IMETHOD SetCryptoclosure(nsIMsgComposeSecure *aCryptoclosure) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsIMsgSend, NS_IMSGSEND_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIMSGSEND \
  NS_IMETHOD CreateAndSendMessage(nsIEditor *aEditor, nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, bool aIsDigest, bool aDontDeliver, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, const char * aBodyType, const nsACString & aBody, nsIArray *aAttachments, nsIArray *aPreloadedAttachments, nsIDOMWindow *aParentWindow, nsIMsgProgress *aProgress, nsIMsgSendListener *aListener, const char * aPassword, const nsACString & aOriginalMsgURI, MSG_ComposeType aType) override; \
  NS_IMETHOD CreateRFC822Message(nsIMsgIdentity *aUserIdentity, nsIMsgCompFields *aFields, const char * aBodyType, const nsACString & aBody, bool aCreateAsDraft, nsIArray *aAttachments, nsISupportsArray *aEmbeddedObjects, nsIMsgSendListener *aListener) override; \
  NS_IMETHOD SendMessageFile(nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, nsIFile *aSendIFile, bool aDeleteSendFileOnCompletion, bool aDigest_p, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, nsIMsgSendListener *aListener, nsIMsgStatusFeedback *aStatusFeedback, const char * aPassword) override; \
  NS_IMETHOD Abort(void) override; \
  NS_IMETHOD Fail(nsresult aFailureCode, const char16_t * aErrorMsg, nsresult *_retval) override; \
  NS_IMETHOD SetGUINotificationState(bool aEnableFlag) override; \
  NS_IMETHOD BeginCryptoEncapsulation(void) override; \
  NS_IMETHOD GetSendReport(nsIMsgSendReport * *aSendReport) override; \
  NS_IMETHOD NotifyListenerOnStartSending(const char * aMsgID, uint32_t aMsgSize) override; \
  NS_IMETHOD NotifyListenerOnProgress(const char * aMsgID, uint32_t aProgress, uint32_t aProgressMax) override; \
  NS_IMETHOD NotifyListenerOnStatus(const char * aMsgID, const char16_t * aMsg) override; \
  NS_IMETHOD NotifyListenerOnStopSending(const char * aMsgID, nsresult aStatus, const char16_t * aMsg, nsIFile *returnFile) override; \
  NS_IMETHOD DeliverAsMailExit(nsIURI *aUrl, nsresult aExitCode) override; \
  NS_IMETHOD DeliverAsNewsExit(nsIURI *aUrl, nsresult aExitCode) override; \
  NS_IMETHOD SendDeliveryCallback(nsIURI *aUrl, bool inIsNewsDelivery, nsresult aExitCode) override; \
  NS_IMETHOD NotifyListenerOnStartCopy(void) override; \
  NS_IMETHOD NotifyListenerOnProgressCopy(uint32_t aProgress, uint32_t aProgressMax) override; \
  NS_IMETHOD NotifyListenerOnStopCopy(nsresult aStatus) override; \
  NS_IMETHOD GetMessageId(nsACString & messageID) override; \
  NS_IMETHOD GetFolderUri(nsACString & aFolderUri) override; \
  NS_IMETHOD GetPartForDomIndex(int32_t aDomIndex, nsACString & _retval) override; \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) override; \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) override; \
  NS_IMETHOD GetDefaultPrompt(nsIPrompt * *_retval) override; \
  NS_IMETHOD GatherMimeAttachments(void) override; \
  NS_IMETHOD GetProcessAttachmentsSynchronously(bool *aProcessAttachmentsSynchronously) override; \
  NS_IMETHOD GetAttachmentHandlers(nsTArray<nsRefPtr<nsMsgAttachmentHandler>> **_retval) override; \
  NS_IMETHOD GetAttachmentCount(uint32_t *aAttachmentCount) override; \
  NS_IMETHOD GetPendingAttachmentCount(uint32_t *aPendingAttachmentCount) override; \
  NS_IMETHOD SetPendingAttachmentCount(uint32_t aPendingAttachmentCount) override; \
  NS_IMETHOD GetDeliveryMode(nsMsgDeliverMode *aDeliveryMode) override; \
  NS_IMETHOD GetProgress(nsIMsgProgress * *_retval) override; \
  NS_IMETHOD GetOutputStream(nsIOutputStream * *_retval) override; \
  NS_IMETHOD GetRunningRequest(nsIRequest * *aRunningRequest) override; \
  NS_IMETHOD SetRunningRequest(nsIRequest *aRunningRequest) override; \
  NS_IMETHOD GetStatus(nsresult *aStatus) override; \
  NS_IMETHOD SetStatus(nsresult aStatus) override; \
  NS_IMETHOD GetCryptoclosure(nsIMsgComposeSecure * *aCryptoclosure) override; \
  NS_IMETHOD SetCryptoclosure(nsIMsgComposeSecure *aCryptoclosure) override; 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIMSGSEND(_to) \
  NS_IMETHOD CreateAndSendMessage(nsIEditor *aEditor, nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, bool aIsDigest, bool aDontDeliver, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, const char * aBodyType, const nsACString & aBody, nsIArray *aAttachments, nsIArray *aPreloadedAttachments, nsIDOMWindow *aParentWindow, nsIMsgProgress *aProgress, nsIMsgSendListener *aListener, const char * aPassword, const nsACString & aOriginalMsgURI, MSG_ComposeType aType) override { return _to CreateAndSendMessage(aEditor, aUserIdentity, aAccountKey, aFields, aIsDigest, aDontDeliver, aMode, aMsgToReplace, aBodyType, aBody, aAttachments, aPreloadedAttachments, aParentWindow, aProgress, aListener, aPassword, aOriginalMsgURI, aType); } \
  NS_IMETHOD CreateRFC822Message(nsIMsgIdentity *aUserIdentity, nsIMsgCompFields *aFields, const char * aBodyType, const nsACString & aBody, bool aCreateAsDraft, nsIArray *aAttachments, nsISupportsArray *aEmbeddedObjects, nsIMsgSendListener *aListener) override { return _to CreateRFC822Message(aUserIdentity, aFields, aBodyType, aBody, aCreateAsDraft, aAttachments, aEmbeddedObjects, aListener); } \
  NS_IMETHOD SendMessageFile(nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, nsIFile *aSendIFile, bool aDeleteSendFileOnCompletion, bool aDigest_p, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, nsIMsgSendListener *aListener, nsIMsgStatusFeedback *aStatusFeedback, const char * aPassword) override { return _to SendMessageFile(aUserIdentity, aAccountKey, aFields, aSendIFile, aDeleteSendFileOnCompletion, aDigest_p, aMode, aMsgToReplace, aListener, aStatusFeedback, aPassword); } \
  NS_IMETHOD Abort(void) override { return _to Abort(); } \
  NS_IMETHOD Fail(nsresult aFailureCode, const char16_t * aErrorMsg, nsresult *_retval) override { return _to Fail(aFailureCode, aErrorMsg, _retval); } \
  NS_IMETHOD SetGUINotificationState(bool aEnableFlag) override { return _to SetGUINotificationState(aEnableFlag); } \
  NS_IMETHOD BeginCryptoEncapsulation(void) override { return _to BeginCryptoEncapsulation(); } \
  NS_IMETHOD GetSendReport(nsIMsgSendReport * *aSendReport) override { return _to GetSendReport(aSendReport); } \
  NS_IMETHOD NotifyListenerOnStartSending(const char * aMsgID, uint32_t aMsgSize) override { return _to NotifyListenerOnStartSending(aMsgID, aMsgSize); } \
  NS_IMETHOD NotifyListenerOnProgress(const char * aMsgID, uint32_t aProgress, uint32_t aProgressMax) override { return _to NotifyListenerOnProgress(aMsgID, aProgress, aProgressMax); } \
  NS_IMETHOD NotifyListenerOnStatus(const char * aMsgID, const char16_t * aMsg) override { return _to NotifyListenerOnStatus(aMsgID, aMsg); } \
  NS_IMETHOD NotifyListenerOnStopSending(const char * aMsgID, nsresult aStatus, const char16_t * aMsg, nsIFile *returnFile) override { return _to NotifyListenerOnStopSending(aMsgID, aStatus, aMsg, returnFile); } \
  NS_IMETHOD DeliverAsMailExit(nsIURI *aUrl, nsresult aExitCode) override { return _to DeliverAsMailExit(aUrl, aExitCode); } \
  NS_IMETHOD DeliverAsNewsExit(nsIURI *aUrl, nsresult aExitCode) override { return _to DeliverAsNewsExit(aUrl, aExitCode); } \
  NS_IMETHOD SendDeliveryCallback(nsIURI *aUrl, bool inIsNewsDelivery, nsresult aExitCode) override { return _to SendDeliveryCallback(aUrl, inIsNewsDelivery, aExitCode); } \
  NS_IMETHOD NotifyListenerOnStartCopy(void) override { return _to NotifyListenerOnStartCopy(); } \
  NS_IMETHOD NotifyListenerOnProgressCopy(uint32_t aProgress, uint32_t aProgressMax) override { return _to NotifyListenerOnProgressCopy(aProgress, aProgressMax); } \
  NS_IMETHOD NotifyListenerOnStopCopy(nsresult aStatus) override { return _to NotifyListenerOnStopCopy(aStatus); } \
  NS_IMETHOD GetMessageId(nsACString & messageID) override { return _to GetMessageId(messageID); } \
  NS_IMETHOD GetFolderUri(nsACString & aFolderUri) override { return _to GetFolderUri(aFolderUri); } \
  NS_IMETHOD GetPartForDomIndex(int32_t aDomIndex, nsACString & _retval) override { return _to GetPartForDomIndex(aDomIndex, _retval); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) override { return _to GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) override { return _to SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetDefaultPrompt(nsIPrompt * *_retval) override { return _to GetDefaultPrompt(_retval); } \
  NS_IMETHOD GatherMimeAttachments(void) override { return _to GatherMimeAttachments(); } \
  NS_IMETHOD GetProcessAttachmentsSynchronously(bool *aProcessAttachmentsSynchronously) override { return _to GetProcessAttachmentsSynchronously(aProcessAttachmentsSynchronously); } \
  NS_IMETHOD GetAttachmentHandlers(nsTArray<nsRefPtr<nsMsgAttachmentHandler>> **_retval) override { return _to GetAttachmentHandlers(_retval); } \
  NS_IMETHOD GetAttachmentCount(uint32_t *aAttachmentCount) override { return _to GetAttachmentCount(aAttachmentCount); } \
  NS_IMETHOD GetPendingAttachmentCount(uint32_t *aPendingAttachmentCount) override { return _to GetPendingAttachmentCount(aPendingAttachmentCount); } \
  NS_IMETHOD SetPendingAttachmentCount(uint32_t aPendingAttachmentCount) override { return _to SetPendingAttachmentCount(aPendingAttachmentCount); } \
  NS_IMETHOD GetDeliveryMode(nsMsgDeliverMode *aDeliveryMode) override { return _to GetDeliveryMode(aDeliveryMode); } \
  NS_IMETHOD GetProgress(nsIMsgProgress * *_retval) override { return _to GetProgress(_retval); } \
  NS_IMETHOD GetOutputStream(nsIOutputStream * *_retval) override { return _to GetOutputStream(_retval); } \
  NS_IMETHOD GetRunningRequest(nsIRequest * *aRunningRequest) override { return _to GetRunningRequest(aRunningRequest); } \
  NS_IMETHOD SetRunningRequest(nsIRequest *aRunningRequest) override { return _to SetRunningRequest(aRunningRequest); } \
  NS_IMETHOD GetStatus(nsresult *aStatus) override { return _to GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(nsresult aStatus) override { return _to SetStatus(aStatus); } \
  NS_IMETHOD GetCryptoclosure(nsIMsgComposeSecure * *aCryptoclosure) override { return _to GetCryptoclosure(aCryptoclosure); } \
  NS_IMETHOD SetCryptoclosure(nsIMsgComposeSecure *aCryptoclosure) override { return _to SetCryptoclosure(aCryptoclosure); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIMSGSEND(_to) \
  NS_IMETHOD CreateAndSendMessage(nsIEditor *aEditor, nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, bool aIsDigest, bool aDontDeliver, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, const char * aBodyType, const nsACString & aBody, nsIArray *aAttachments, nsIArray *aPreloadedAttachments, nsIDOMWindow *aParentWindow, nsIMsgProgress *aProgress, nsIMsgSendListener *aListener, const char * aPassword, const nsACString & aOriginalMsgURI, MSG_ComposeType aType) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateAndSendMessage(aEditor, aUserIdentity, aAccountKey, aFields, aIsDigest, aDontDeliver, aMode, aMsgToReplace, aBodyType, aBody, aAttachments, aPreloadedAttachments, aParentWindow, aProgress, aListener, aPassword, aOriginalMsgURI, aType); } \
  NS_IMETHOD CreateRFC822Message(nsIMsgIdentity *aUserIdentity, nsIMsgCompFields *aFields, const char * aBodyType, const nsACString & aBody, bool aCreateAsDraft, nsIArray *aAttachments, nsISupportsArray *aEmbeddedObjects, nsIMsgSendListener *aListener) override { return !_to ? NS_ERROR_NULL_POINTER : _to->CreateRFC822Message(aUserIdentity, aFields, aBodyType, aBody, aCreateAsDraft, aAttachments, aEmbeddedObjects, aListener); } \
  NS_IMETHOD SendMessageFile(nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, nsIFile *aSendIFile, bool aDeleteSendFileOnCompletion, bool aDigest_p, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, nsIMsgSendListener *aListener, nsIMsgStatusFeedback *aStatusFeedback, const char * aPassword) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SendMessageFile(aUserIdentity, aAccountKey, aFields, aSendIFile, aDeleteSendFileOnCompletion, aDigest_p, aMode, aMsgToReplace, aListener, aStatusFeedback, aPassword); } \
  NS_IMETHOD Abort(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Abort(); } \
  NS_IMETHOD Fail(nsresult aFailureCode, const char16_t * aErrorMsg, nsresult *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->Fail(aFailureCode, aErrorMsg, _retval); } \
  NS_IMETHOD SetGUINotificationState(bool aEnableFlag) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetGUINotificationState(aEnableFlag); } \
  NS_IMETHOD BeginCryptoEncapsulation(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->BeginCryptoEncapsulation(); } \
  NS_IMETHOD GetSendReport(nsIMsgSendReport * *aSendReport) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSendReport(aSendReport); } \
  NS_IMETHOD NotifyListenerOnStartSending(const char * aMsgID, uint32_t aMsgSize) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyListenerOnStartSending(aMsgID, aMsgSize); } \
  NS_IMETHOD NotifyListenerOnProgress(const char * aMsgID, uint32_t aProgress, uint32_t aProgressMax) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyListenerOnProgress(aMsgID, aProgress, aProgressMax); } \
  NS_IMETHOD NotifyListenerOnStatus(const char * aMsgID, const char16_t * aMsg) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyListenerOnStatus(aMsgID, aMsg); } \
  NS_IMETHOD NotifyListenerOnStopSending(const char * aMsgID, nsresult aStatus, const char16_t * aMsg, nsIFile *returnFile) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyListenerOnStopSending(aMsgID, aStatus, aMsg, returnFile); } \
  NS_IMETHOD DeliverAsMailExit(nsIURI *aUrl, nsresult aExitCode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeliverAsMailExit(aUrl, aExitCode); } \
  NS_IMETHOD DeliverAsNewsExit(nsIURI *aUrl, nsresult aExitCode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeliverAsNewsExit(aUrl, aExitCode); } \
  NS_IMETHOD SendDeliveryCallback(nsIURI *aUrl, bool inIsNewsDelivery, nsresult aExitCode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SendDeliveryCallback(aUrl, inIsNewsDelivery, aExitCode); } \
  NS_IMETHOD NotifyListenerOnStartCopy(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyListenerOnStartCopy(); } \
  NS_IMETHOD NotifyListenerOnProgressCopy(uint32_t aProgress, uint32_t aProgressMax) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyListenerOnProgressCopy(aProgress, aProgressMax); } \
  NS_IMETHOD NotifyListenerOnStopCopy(nsresult aStatus) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NotifyListenerOnStopCopy(aStatus); } \
  NS_IMETHOD GetMessageId(nsACString & messageID) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageId(messageID); } \
  NS_IMETHOD GetFolderUri(nsACString & aFolderUri) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFolderUri(aFolderUri); } \
  NS_IMETHOD GetPartForDomIndex(int32_t aDomIndex, nsACString & _retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPartForDomIndex(aDomIndex, _retval); } \
  NS_IMETHOD GetMessageKey(nsMsgKey *aMessageKey) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetMessageKey(aMessageKey); } \
  NS_IMETHOD SetMessageKey(nsMsgKey aMessageKey) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetMessageKey(aMessageKey); } \
  NS_IMETHOD GetDefaultPrompt(nsIPrompt * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDefaultPrompt(_retval); } \
  NS_IMETHOD GatherMimeAttachments(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GatherMimeAttachments(); } \
  NS_IMETHOD GetProcessAttachmentsSynchronously(bool *aProcessAttachmentsSynchronously) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProcessAttachmentsSynchronously(aProcessAttachmentsSynchronously); } \
  NS_IMETHOD GetAttachmentHandlers(nsTArray<nsRefPtr<nsMsgAttachmentHandler>> **_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttachmentHandlers(_retval); } \
  NS_IMETHOD GetAttachmentCount(uint32_t *aAttachmentCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetAttachmentCount(aAttachmentCount); } \
  NS_IMETHOD GetPendingAttachmentCount(uint32_t *aPendingAttachmentCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetPendingAttachmentCount(aPendingAttachmentCount); } \
  NS_IMETHOD SetPendingAttachmentCount(uint32_t aPendingAttachmentCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetPendingAttachmentCount(aPendingAttachmentCount); } \
  NS_IMETHOD GetDeliveryMode(nsMsgDeliverMode *aDeliveryMode) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetDeliveryMode(aDeliveryMode); } \
  NS_IMETHOD GetProgress(nsIMsgProgress * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetProgress(_retval); } \
  NS_IMETHOD GetOutputStream(nsIOutputStream * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetOutputStream(_retval); } \
  NS_IMETHOD GetRunningRequest(nsIRequest * *aRunningRequest) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetRunningRequest(aRunningRequest); } \
  NS_IMETHOD SetRunningRequest(nsIRequest *aRunningRequest) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetRunningRequest(aRunningRequest); } \
  NS_IMETHOD GetStatus(nsresult *aStatus) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetStatus(aStatus); } \
  NS_IMETHOD SetStatus(nsresult aStatus) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetStatus(aStatus); } \
  NS_IMETHOD GetCryptoclosure(nsIMsgComposeSecure * *aCryptoclosure) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCryptoclosure(aCryptoclosure); } \
  NS_IMETHOD SetCryptoclosure(nsIMsgComposeSecure *aCryptoclosure) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetCryptoclosure(aCryptoclosure); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsMsgSend : public nsIMsgSend
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIMSGSEND

  nsMsgSend();

private:
  ~nsMsgSend();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsMsgSend, nsIMsgSend)

nsMsgSend::nsMsgSend()
{
  /* member initializers and constructor code */
}

nsMsgSend::~nsMsgSend()
{
  /* destructor code */
}

/* void createAndSendMessage (in nsIEditor aEditor, in nsIMsgIdentity aUserIdentity, in string aAccountKey, in nsIMsgCompFields aFields, in boolean aIsDigest, in boolean aDontDeliver, in nsMsgDeliverMode aMode, in nsIMsgDBHdr aMsgToReplace, in string aBodyType, in ACString aBody, in nsIArray aAttachments, in nsIArray aPreloadedAttachments, in nsIDOMWindow aParentWindow, in nsIMsgProgress aProgress, in nsIMsgSendListener aListener, in string aPassword, in AUTF8String aOriginalMsgURI, in MSG_ComposeType aType); */
NS_IMETHODIMP nsMsgSend::CreateAndSendMessage(nsIEditor *aEditor, nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, bool aIsDigest, bool aDontDeliver, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, const char * aBodyType, const nsACString & aBody, nsIArray *aAttachments, nsIArray *aPreloadedAttachments, nsIDOMWindow *aParentWindow, nsIMsgProgress *aProgress, nsIMsgSendListener *aListener, const char * aPassword, const nsACString & aOriginalMsgURI, MSG_ComposeType aType)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void createRFC822Message (in nsIMsgIdentity aUserIdentity, in nsIMsgCompFields aFields, in string aBodyType, in ACString aBody, in boolean aCreateAsDraft, in nsIArray aAttachments, in nsISupportsArray aEmbeddedObjects, in nsIMsgSendListener aListener); */
NS_IMETHODIMP nsMsgSend::CreateRFC822Message(nsIMsgIdentity *aUserIdentity, nsIMsgCompFields *aFields, const char * aBodyType, const nsACString & aBody, bool aCreateAsDraft, nsIArray *aAttachments, nsISupportsArray *aEmbeddedObjects, nsIMsgSendListener *aListener)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sendMessageFile (in nsIMsgIdentity aUserIdentity, in string aAccountKey, in nsIMsgCompFields aFields, in nsIFile aSendIFile, in boolean aDeleteSendFileOnCompletion, in boolean aDigest_p, in nsMsgDeliverMode aMode, in nsIMsgDBHdr aMsgToReplace, in nsIMsgSendListener aListener, in nsIMsgStatusFeedback aStatusFeedback, in string aPassword); */
NS_IMETHODIMP nsMsgSend::SendMessageFile(nsIMsgIdentity *aUserIdentity, const char * aAccountKey, nsIMsgCompFields *aFields, nsIFile *aSendIFile, bool aDeleteSendFileOnCompletion, bool aDigest_p, nsMsgDeliverMode aMode, nsIMsgDBHdr *aMsgToReplace, nsIMsgSendListener *aListener, nsIMsgStatusFeedback *aStatusFeedback, const char * aPassword)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void abort (); */
NS_IMETHODIMP nsMsgSend::Abort()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsresult fail (in nsresult aFailureCode, in wstring aErrorMsg); */
NS_IMETHODIMP nsMsgSend::Fail(nsresult aFailureCode, const char16_t * aErrorMsg, nsresult *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setGUINotificationState (in boolean aEnableFlag); */
NS_IMETHODIMP nsMsgSend::SetGUINotificationState(bool aEnableFlag)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void BeginCryptoEncapsulation (); */
NS_IMETHODIMP nsMsgSend::BeginCryptoEncapsulation()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsIMsgSendReport sendReport; */
NS_IMETHODIMP nsMsgSend::GetSendReport(nsIMsgSendReport * *aSendReport)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyListenerOnStartSending (in string aMsgID, in unsigned long aMsgSize); */
NS_IMETHODIMP nsMsgSend::NotifyListenerOnStartSending(const char * aMsgID, uint32_t aMsgSize)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyListenerOnProgress (in string aMsgID, in unsigned long aProgress, in unsigned long aProgressMax); */
NS_IMETHODIMP nsMsgSend::NotifyListenerOnProgress(const char * aMsgID, uint32_t aProgress, uint32_t aProgressMax)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyListenerOnStatus (in string aMsgID, in wstring aMsg); */
NS_IMETHODIMP nsMsgSend::NotifyListenerOnStatus(const char * aMsgID, const char16_t * aMsg)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyListenerOnStopSending (in string aMsgID, in nsresult aStatus, in wstring aMsg, in nsIFile returnFile); */
NS_IMETHODIMP nsMsgSend::NotifyListenerOnStopSending(const char * aMsgID, nsresult aStatus, const char16_t * aMsg, nsIFile *returnFile)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deliverAsMailExit (in nsIURI aUrl, in nsresult aExitCode); */
NS_IMETHODIMP nsMsgSend::DeliverAsMailExit(nsIURI *aUrl, nsresult aExitCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deliverAsNewsExit (in nsIURI aUrl, in nsresult aExitCode); */
NS_IMETHODIMP nsMsgSend::DeliverAsNewsExit(nsIURI *aUrl, nsresult aExitCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void sendDeliveryCallback (in nsIURI aUrl, in boolean inIsNewsDelivery, in nsresult aExitCode); */
NS_IMETHODIMP nsMsgSend::SendDeliveryCallback(nsIURI *aUrl, bool inIsNewsDelivery, nsresult aExitCode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyListenerOnStartCopy (); */
NS_IMETHODIMP nsMsgSend::NotifyListenerOnStartCopy()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyListenerOnProgressCopy (in unsigned long aProgress, in unsigned long aProgressMax); */
NS_IMETHODIMP nsMsgSend::NotifyListenerOnProgressCopy(uint32_t aProgress, uint32_t aProgressMax)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void notifyListenerOnStopCopy (in nsresult aStatus); */
NS_IMETHODIMP nsMsgSend::NotifyListenerOnStopCopy(nsresult aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getMessageId (out ACString messageID); */
NS_IMETHODIMP nsMsgSend::GetMessageId(nsACString & messageID)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute ACString folderUri; */
NS_IMETHODIMP nsMsgSend::GetFolderUri(nsACString & aFolderUri)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* ACString getPartForDomIndex (in long aDomIndex); */
NS_IMETHODIMP nsMsgSend::GetPartForDomIndex(int32_t aDomIndex, nsACString & _retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsMsgKey messageKey; */
NS_IMETHODIMP nsMsgSend::GetMessageKey(nsMsgKey *aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgSend::SetMessageKey(nsMsgKey aMessageKey)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIPrompt getDefaultPrompt (); */
NS_IMETHODIMP nsMsgSend::GetDefaultPrompt(nsIPrompt * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void gatherMimeAttachments (); */
NS_IMETHODIMP nsMsgSend::GatherMimeAttachments()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute boolean processAttachmentsSynchronously; */
NS_IMETHODIMP nsMsgSend::GetProcessAttachmentsSynchronously(bool *aProcessAttachmentsSynchronously)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* [noscript] nsMsgAttachmentHandlerArray getAttachmentHandlers (); */
NS_IMETHODIMP nsMsgSend::GetAttachmentHandlers(nsTArray<nsRefPtr<nsMsgAttachmentHandler>> **_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute unsigned long attachmentCount; */
NS_IMETHODIMP nsMsgSend::GetAttachmentCount(uint32_t *aAttachmentCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute unsigned long pendingAttachmentCount; */
NS_IMETHODIMP nsMsgSend::GetPendingAttachmentCount(uint32_t *aPendingAttachmentCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgSend::SetPendingAttachmentCount(uint32_t aPendingAttachmentCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* readonly attribute nsMsgDeliverMode deliveryMode; */
NS_IMETHODIMP nsMsgSend::GetDeliveryMode(nsMsgDeliverMode *aDeliveryMode)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIMsgProgress getProgress (); */
NS_IMETHODIMP nsMsgSend::GetProgress(nsIMsgProgress * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIOutputStream getOutputStream (); */
NS_IMETHODIMP nsMsgSend::GetOutputStream(nsIOutputStream * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIRequest runningRequest; */
NS_IMETHODIMP nsMsgSend::GetRunningRequest(nsIRequest * *aRunningRequest)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgSend::SetRunningRequest(nsIRequest *aRunningRequest)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsresult status; */
NS_IMETHODIMP nsMsgSend::GetStatus(nsresult *aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgSend::SetStatus(nsresult aStatus)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* attribute nsIMsgComposeSecure cryptoclosure; */
NS_IMETHODIMP nsMsgSend::GetCryptoclosure(nsIMsgComposeSecure * *aCryptoclosure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsMsgSend::SetCryptoclosure(nsIMsgComposeSecure *aCryptoclosure)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsIMsgSend_h__ */
