WIP: Mime

This commit is contained in:
spider%netscape.com 1998-10-31 01:28:10 +00:00
parent e5b59a4f10
commit f9e9c2b527
5 changed files with 101 additions and 3 deletions

View File

@ -20,6 +20,8 @@
#define nsMIMEBasicBodyPart_h___
#include "nsMIMEBodyPart.h"
#include "nsString.h"
#include "mime.h"
class nsMIMEBasicBodyPart : public nsMIMEBodyPart
{
@ -29,10 +31,14 @@ public:
NS_DECL_ISUPPORTS
NS_IMETHOD Init() ;
NS_IMETHOD SetBody(nsString& aBody) ;
protected:
~nsMIMEBasicBodyPart();
public:
mime_basicPart_t * mMimeBasicPart ;
};
#endif /* nsMIMEBasicBodyPart_h___ */

View File

@ -21,6 +21,8 @@
#include "nsMessage.h"
#include "nsIMIMEMessage.h"
#include "nsIMIMEBodyPart.h"
#include "mime.h"
class nsMIMEMessage : public nsMessage,
public nsIMIMEMessage
@ -38,6 +40,7 @@ public:
NS_IMETHOD AddAttachment(nsString& aAttachment, nsMIMEEncoding aMIMEEncoding = nsMIMEEncoding_default);
NS_IMETHOD AddText(nsString& aText, nsMIMEEncoding aMIMEEncoding = nsMIMEEncoding_default);
NS_IMETHOD SetBody(nsString& aBody);
NS_IMETHOD AddBodyPart(nsIMIMEBodyPart& aBodyPart);
@ -48,6 +51,10 @@ protected:
private:
nsMIMEBodyType mBodyType;
nsIMIMEBodyPart * mBodyPart;
public:
mime_message_t * mMimeMessageT;
};

View File

@ -14,7 +14,7 @@
#
CFLAGS +=-D_IMPL_NS_XPFC -DNSPR20
INCLUDES += -I../inc -I$(GDEPTH)/include
INCLUDES += -I../inc
LIBRARY_NAME = xpfc_msg
LIBRARY_VERSION = 10

View File

@ -18,6 +18,7 @@
#include "nsMIMEBasicBodyPart.h"
#include "nsxpfcCIID.h"
#include "nspr.h"
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kMIMEBodyPartIID, NS_IMIME_BODY_PART_IID);
@ -25,11 +26,16 @@ static NS_DEFINE_IID(kMIMEBodyPartIID, NS_IMIME_BODY_PART_IID);
nsMIMEBasicBodyPart :: nsMIMEBasicBodyPart() : nsMIMEBodyPart()
{
NS_INIT_REFCNT();
mMimeBasicPart = nsnull;
}
nsMIMEBasicBodyPart :: ~nsMIMEBasicBodyPart()
{
if (nsnull != mMimeBasicPart)
{
mime_basicPart_free_all(mMimeBasicPart);
PR_Free (mMimeBasicPart);
}
}
NS_IMPL_ADDREF(nsMIMEBasicBodyPart)
@ -41,3 +47,35 @@ nsresult nsMIMEBasicBodyPart::Init()
return (nsMIMEBodyPart::Init());
}
nsresult nsMIMEBasicBodyPart::SetBody(nsString& aBody)
{
char * body = aBody.ToNewCString();
mMimeBasicPart = (mime_basicPart_t *) PR_Malloc (sizeof (mime_basicPart_t));
if (mMimeBasicPart == NULL)
return MIME_ERR_OUTOFMEMORY; // XXX convert
else
memset (mMimeBasicPart, 0, sizeof (mime_basicPart_t));
mMimeBasicPart->content_type = MIME_CONTENT_TEXT;
mMimeBasicPart->content_subtype = strdup ("plain");
mMimeBasicPart->content_type_params = strdup ("charset=us-ascii");
mMimeBasicPart->encoding_type = MIME_ENCODING_7BIT;
int ret = mime_basicPart_setDataBuf (mMimeBasicPart, strlen (body), body, TRUE);
if (MIME_OK != ret)
{
delete body;
mime_basicPart_free_all(mMimeBasicPart);
free (mMimeBasicPart);
return ret;
}
delete body;
return NS_OK;
}

View File

@ -18,6 +18,7 @@
#include "nsMIMEMessage.h"
#include "nsxpfcCIID.h"
#include "nsMIMEBasicBodyPart.h"
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIMessageIID, NS_IMESSAGE_IID);
@ -27,10 +28,14 @@ nsMIMEMessage :: nsMIMEMessage() : nsMessage()
{
NS_INIT_REFCNT();
mBodyType = nsMIMEBodyType_empty;
mBodyPart = nsnull;
mMimeMessageT = nsnull;
}
nsMIMEMessage :: ~nsMIMEMessage()
{
NS_IF_RELEASE(mBodyPart);
mime_message_free_all(mMimeMessageT);
}
NS_IMPL_ADDREF(nsMIMEMessage)
@ -59,6 +64,10 @@ nsresult nsMIMEMessage::QueryInterface(REFNSIID aIID, void** aInstancePtr)
nsresult nsMIMEMessage::Init()
{
mMimeMessageT = (mime_message_t *) mime_malloc (sizeof (mime_message_t));
memset (mMimeMessageT, 0, sizeof (mime_message_t));
return (nsMessage::Init());
}
@ -78,12 +87,50 @@ nsresult nsMIMEMessage::GetHeader(nsString& aHeaderName, nsString& aHeaderValue)
}
nsresult nsMIMEMessage::AddAttachment(nsString& aAttachment, nsMIMEEncoding aMIMEEncoding)
{
return (NS_OK);
}
nsresult nsMIMEMessage::SetBody(nsString& aBody)
{
nsMIMEBasicBodyPart * basic = nsnull;
/*
* By default (for now) lets just create a MIMEBasicPart for the Body.
*
* This method overrides that in nsMessage since the consumer has
* explicitly asked for a MIME message
*/
NS_IF_RELEASE(mBodyPart);
nsresult res = NS_OK;
static NS_DEFINE_IID(kIMIMEBodyPartCID, NS_IMIME_BODY_PART_IID);
static NS_DEFINE_IID(kCMIMEBasicBodyPartCID, NS_MIME_BASIC_BODY_PART_CID);
res = nsRepository::CreateInstance(kCMIMEBasicBodyPartCID, nsnull, kIMIMEBodyPartCID, (void**)&mBodyPart);
if (NS_OK != res)
return res;
basic = (nsMIMEBasicBodyPart *) mBodyPart;
basic->Init();
//mime_message_create(body, nsnull, MIME_ENCODING_UNINITIALIZED, &mMimeMessageT);
mMimeMessageT = (mime_message_t *) mime_malloc (sizeof (mime_message_t));
basic->SetBody(aBody);
mime_message_addBasicPart(mMimeMessageT, basic->mMimeBasicPart, FALSE);
return res;
}
nsresult nsMIMEMessage::AddText(nsString& aText, nsMIMEEncoding aMIMEEncoding)
{
return (NS_OK);