Back to index

lightning-sunbird  0.9+nobinonly
nsMsgMdnGenerator.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 2002
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *   Jeff Tsai <jt95070@netscape.net>
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either of the GNU General Public License Version 2 or later (the "GPL"),
00027  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 
00039 #ifndef _nsMsgMdnGenerator_H_
00040 #define _nsMsgMdnGenerator_H_
00041 
00042 #include "nsIMsgMdnGenerator.h"
00043 #include "nsCOMPtr.h"
00044 #include "nsIMimeConverter.h"
00045 #include "nsIUrlListener.h"
00046 #include "nsXPIDLString.h"
00047 #include "nsIMsgIncomingServer.h"
00048 #include "nsFileStream.h"
00049 #include "nsIOutputStream.h"
00050 #include "nsIFileSpec.h"
00051 #include "nsIMsgIdentity.h"
00052 #include "nsIMsgWindow.h"
00053 #include "nsIMimeHeaders.h"
00054 
00055 #define eNeverSendOp ((PRInt32) 0)
00056 #define eAutoSendOp ((PRInt32) 1)
00057 #define eAskMeOp ((PRInt32) 2)
00058 #define eDeniedOp ((PRInt32) 3)
00059 
00060 class nsMsgMdnGenerator : public nsIMsgMdnGenerator, public nsIUrlListener
00061 {
00062 public:
00063     NS_DECL_ISUPPORTS 
00064     NS_DECL_NSIMSGMDNGENERATOR
00065     NS_DECL_NSIURLLISTENER
00066     
00067     nsMsgMdnGenerator();
00068     virtual ~nsMsgMdnGenerator();
00069     
00070 private:
00071     // Sanity Check methods
00072     PRBool ProcessSendMode(); // must called prior ValidateReturnPath
00073     PRBool ValidateReturnPath();
00074     PRBool NotInToOrCc();
00075     PRBool MailAddrMatch(const char *addr1, const char *addr2);
00076     
00077     nsresult StoreMDNSentFlag(nsIMsgFolder *folder, nsMsgKey key);
00078     
00079     nsresult CreateMdnMsg();
00080     nsresult CreateFirstPart(); 
00081     nsresult CreateSecondPart();
00082     nsresult CreateThirdPart();
00083     nsresult SendMdnMsg();
00084 
00085     // string bundle helper methods
00086     nsresult GetStringFromName(const PRUnichar *aName, PRUnichar **aResultString);
00087     nsresult FormatStringFromName(const PRUnichar *aName, 
00088                                                  const PRUnichar *aString, 
00089                                                  PRUnichar **aResultString);
00090     
00091     // other helper methods
00092     nsresult InitAndProcess();
00093     nsresult OutputAllHeaders();
00094     nsresult WriteString(const char *str);
00095   
00096 private:
00097     EDisposeType m_disposeType;
00098     nsCOMPtr<nsIMsgWindow> m_window;
00099     nsCOMPtr<nsIOutputStream> m_outputStream;
00100     nsCOMPtr<nsIFileSpec> m_fileSpec;
00101     nsCOMPtr<nsIMsgIdentity> m_identity;
00102     nsXPIDLCString m_charset;
00103     nsXPIDLCString m_email;
00104     nsXPIDLCString m_mimeSeparator;
00105     nsXPIDLCString m_messageId;
00106     nsCOMPtr<nsIMsgFolder> m_folder;
00107     nsCOMPtr<nsIMsgIncomingServer> m_server;
00108     nsCOMPtr<nsIMimeHeaders> m_headers;
00109     nsXPIDLCString m_dntRrt;
00110     PRInt32 m_notInToCcOp;
00111     PRInt32 m_outsideDomainOp;
00112     PRInt32 m_otherOp;
00113     PRPackedBool m_reallySendMdn;
00114     PRPackedBool m_autoSend;
00115     PRPackedBool m_autoAction;
00116     PRPackedBool m_mdnEnabled;
00117 };
00118 
00119 #endif // _nsMsgMdnGenerator_H_
00120