/////////////////////////////////////////////////////////////////////////////
// Name:        email.h
// Purpose:     wxEmail: portable email client class
// Author:      Julian Smart
// Modified by:
// Created:     2001-08-21
// RCS-ID:      $Id: email.h,v 1.4 2010-04-22 15:26:15 guy Exp $
// Copyright:   (c) Julian Smart
// Licence:     wxWindows licence
/////////////////////////////////////////////////////////////////////////////

#ifndef _WX_EMAIL_H_
#define _WX_EMAIL_H_

/*
 * wxMailMessage
 * Encapsulates an email message
 */

class  wxMailMessage
{
public:

    // A common usage
    wxMailMessage(const wxString& subject, const wxString& to,
        const wxString& body, const wxString& from = wxEmptyString,
        const wxString& attachment = wxEmptyString,
        const wxString& attachmentTitle = wxEmptyString) : m_query_receipt(false)
    {
        m_to.Add(to);
        m_subject = subject;
        m_body = body;
        m_from = from;
        if (!attachment.IsEmpty())
        {
            m_attachments.Add(attachment);
            m_attachmentTitles.Add(attachmentTitle);
        }
    }

    wxMailMessage() : m_query_receipt(false) {}

//// Accessors

    void AddTo(const wxString& to) { m_to.Add(to); }
    void AddCc(const wxString& cc) { m_cc.Add(cc); }
    void AddBcc(const wxString& bcc) { m_bcc.Add(bcc); }
    void AddAttachment(const wxString& attach, const wxString& title = wxEmptyString)
    { m_attachments.Add(attach); m_attachmentTitles.Add(title); }

    void SetSubject(const wxString& subject) { m_subject = subject; }
    void SetBody(const wxString& body) { m_body = body; }
    void SetFrom(const wxString& from) { m_from = from; }

public:
    wxArrayString  m_to;               //The To: Recipients
    wxString       m_from;             //The From: email address (optional)
    wxArrayString  m_cc;               //The CC: Recipients
    wxArrayString  m_bcc;              //The BCC Recipients
    wxString       m_subject;          //The Subject of the message
    wxString       m_body;             //The Body of the message
    wxArrayString  m_attachments;      //Files to attach to the email
    wxArrayString  m_attachmentTitles; //Titles to use for the email file attachments
    bool           m_query_receipt;    //Query receipt message
};

/*
 * wxEmail
 * Miscellaneous email functions
 */

class wxEmail
{
public:
//// Ctor/dtor
    wxEmail() {};

//// Operations

    // Send a message.
    // Specify profile, or leave it to wxWidgets to find the current user name
    static bool Send(wxMailMessage& message, const wxString& profileName = wxEmptyString,
                     bool bShowUI = false, const wxString& sendMail = wxT("/usr/sbin/sendmail -t"));
    
protected:
};


#endif //_WX_EMAIL_H_