зеркало из https://github.com/mozilla/pjs.git
130 строки
3.8 KiB
C++
130 строки
3.8 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
#ifndef MSGMDN_H
|
|
#define MSGMDN_H
|
|
|
|
#include "xp.h"
|
|
#include "msgzap.h"
|
|
#include "libmime.h"
|
|
|
|
class MSG_Pane;
|
|
class MSG_FolderInfo;
|
|
struct message_header;
|
|
|
|
#define MDN_NOT_IN_TO_CC ((int) 0x0001)
|
|
#define MDN_OUTSIDE_DOMAIN ((int) 0x0002)
|
|
|
|
#define HEADER_RETURN_PATH "Return-Path"
|
|
#define HEADER_DISPOSITION_NOTIFICATION_TO "Disposition-Notification-To"
|
|
#define HEADER_APPARENTLY_TO "Apparently-To"
|
|
#define HEADER_ORIGINAL_RECIPIENT "Original-Recipient"
|
|
#define HEADER_REPORTING_UA "Reporting-UA"
|
|
#define HEADER_MDN_GATEWAY "MDN-Gateway"
|
|
#define HEADER_FINAL_RECIPIENT "Final-Recipient"
|
|
#define HEADER_DISPOSITION "Disposition"
|
|
#define HEADER_ORIGINAL_MESSAGE_ID "Original-Message-ID"
|
|
#define HEADER_FAILURE "Failure"
|
|
#define HEADER_ERROR "Error"
|
|
#define HEADER_WARNING "Warning"
|
|
#define HEADER_RETURN_RECEIPT_TO "Return-Receipt-To"
|
|
|
|
|
|
class MSG_ProcessMdnNeededState : public MSG_ZapIt
|
|
{
|
|
public:
|
|
enum EDisposeType {
|
|
eDisplayed = 0x0,
|
|
eDispatched,
|
|
eProcessed,
|
|
eDeleted,
|
|
eDenied,
|
|
eFailed
|
|
};
|
|
|
|
public:
|
|
MSG_ProcessMdnNeededState (EDisposeType intendedType,
|
|
MSG_Pane *pane,
|
|
MSG_FolderInfo *folder,
|
|
uint32 key,
|
|
MimeHeaders *srcHeader,
|
|
XP_Bool autoAction = FALSE);
|
|
|
|
MSG_ProcessMdnNeededState (EDisposeType intendedType,
|
|
MSG_Pane *pane,
|
|
MSG_FolderInfo *folder,
|
|
uint32 key,
|
|
struct message_header *returnPath,
|
|
struct message_header *dnt,
|
|
struct message_header *to,
|
|
struct message_header *cc,
|
|
struct message_header *subject,
|
|
struct message_header *date,
|
|
struct message_header *originalRecipient,
|
|
struct message_header *messageId,
|
|
char *allHeaders,
|
|
int32 allHeadersSize,
|
|
XP_Bool autoAction = TRUE);
|
|
|
|
virtual ~MSG_ProcessMdnNeededState ();
|
|
static void PostSendMdn(URL_Struct *url, int status, MWContext *context);
|
|
|
|
protected:
|
|
|
|
XP_Bool ProcessSendMode(); // this should be called prior to
|
|
// ValidateReturnPath();
|
|
XP_Bool ValidateReturnPath();
|
|
XP_Bool MailAddrMatch(const char *addr1, const char *addr2);
|
|
XP_Bool NotInToOrCc();
|
|
|
|
void StoreImapMDNSentFlag(MSG_FolderInfo *folder, uint32 key);
|
|
|
|
void CreateMdnMsg();
|
|
int32 CreateFirstPart();
|
|
int32 CreateSecondPart();
|
|
int32 CreateThirdPart();
|
|
void DoSendMdn();
|
|
|
|
// helper fucntion
|
|
void InitAndProcess();
|
|
int32 OutputAllHeaders();
|
|
int32 WriteString(const char *str);
|
|
|
|
protected:
|
|
EDisposeType m_disposeType;
|
|
MSG_Pane *m_pane;
|
|
XP_File m_outFile;
|
|
int16 m_csid;
|
|
char *m_msgFileName;
|
|
char *m_mimeSeparator;
|
|
XP_Bool m_reallySendMdn; /* really send mdn? */
|
|
XP_Bool m_autoSend; /* automatic vs manual send mode */
|
|
XP_Bool m_autoAction; /* automatic vs manual action */
|
|
char *m_returnPath;
|
|
char *m_dispositionNotificationTo;
|
|
char *m_date;
|
|
char *m_to;
|
|
char *m_cc;
|
|
char *m_subject;
|
|
char *m_messageId;
|
|
char *m_originalRecipient;
|
|
char *m_all_headers;
|
|
int32 m_all_headers_size;
|
|
};
|
|
|
|
#endif
|