diff --git a/libraries/wxSMTP/base64.cpp b/libraries/wxSMTP/base64.cpp new file mode 100644 index 000000000..0884fd063 --- /dev/null +++ b/libraries/wxSMTP/base64.cpp @@ -0,0 +1,123 @@ +//********************************************************************* +//* Base64 - a simple base64 encoder and decoder. +//* +//* Copyright (c) 1999, Bob Withers - bwit@pobox.com +//* +//* This code may be freely used for any purpose, either personal +//* or commercial, provided the authors copyright notice remains +//* intact. +//********************************************************************* +// +// converted to wxWindows by Frank Buß +// + +#include "Base64.h" + +const wxChar fillchar = '='; + + // 00000000001111111111222222 + // 01234567890123456789012345 +static wxString cvt = _T("ABCDEFGHIJKLMNOPQRSTUVWXYZ" + + // 22223333333333444444444455 + // 67890123456789012345678901 + "abcdefghijklmnopqrstuvwxyz" + + // 555555556666 + // 234567890123 + "0123456789+/"); + +wxString wxBase64::Encode(const wxUint8* pData, size_t len) +{ + size_t c; + wxString ret; + ret.Alloc(len * 4 / 3 + len * 2 / 50); + size_t resultLen = 0; + wxString cr(wxT("\x00d\x00a")); + + for (size_t i = 0; i < len; ++i) + { + c = (pData[i] >> 2) & 0x3f; + ret.Append(cvt[c], 1); + if (++resultLen == 72) { ret += cr; resultLen = 0; } + c = (pData[i] << 4) & 0x3f; + if (++i < len) + c |= (pData[i] >> 4) & 0x0f; + + ret.Append(cvt[c], 1); + if (++resultLen == 72) { ret += cr; resultLen = 0; } + if (i < len) + { + c = (pData[i] << 2) & 0x3f; + if (++i < len) + c |= (pData[i] >> 6) & 0x03; + + ret.Append(cvt[c], 1); + } + else + { + ++i; + ret.Append(fillchar, 1); + } + if (++resultLen == 72) { ret += cr; resultLen = 0; } + + if (i < len) + { + c = pData[i] & 0x3f; + ret.Append(cvt[c], 1); + } + else + { + ret.Append(fillchar, 1); + } + if (++resultLen == 72) { ret += cr; resultLen = 0; } + } + + return ret; +} + +wxString wxBase64::Decode(const wxString& data) +{ + int c; + int c1; + size_t len = data.Length(); + wxString ret; + ret.Alloc(data.Length() * 3 / 4); + + for (size_t i = 0; i < len; ++i) + { + // TODO: check all Find results for -1 as result of wrong input data for release build + c = cvt.Find(data[i]); + wxASSERT_MSG(c >= 0, _T("invalid base64 input")); + ++i; + c1 = cvt.Find(data[i]); + wxASSERT_MSG(c1 >= 0, _T("invalid base64 input")); + c = (c << 2) | ((c1 >> 4) & 0x3); + ret.Append(c, 1); + if (++i < len) + { + c = data[i]; + if (fillchar == c) + break; + + c = cvt.Find(c); + wxASSERT_MSG(c >= 0, _T("invalid base64 input")); + c1 = ((c1 << 4) & 0xf0) | ((c >> 2) & 0xf); + ret.Append(c1, 1); + } + + if (++i < len) + { + c1 = data[i]; + if (fillchar == c1) + break; + + c1 = cvt.Find(c1); + wxASSERT_MSG(c1 >= 0, _T("invalid base64 input")); + c = ((c << 6) & 0xc0) | c1; + ret.Append(c, 1); + } + } + + return ret; +} \ No newline at end of file diff --git a/libraries/wxSMTP/base64.h b/libraries/wxSMTP/base64.h new file mode 100644 index 000000000..a15c60494 --- /dev/null +++ b/libraries/wxSMTP/base64.h @@ -0,0 +1,27 @@ +//********************************************************************* +//* C_Base64 - a simple base64 encoder and decoder. +//* +//* Copyright (c) 1999, Bob Withers - bwit@pobox.com +//* +//* This code may be freely used for any purpose, either personal +//* or commercial, provided the authors copyright notice remains +//* intact. +//********************************************************************* +// +// converted to wxWindows by Frank Buß +// + +#ifndef BASE64_H +#define BASE64_H + +#include + +class wxBase64 +{ +public: + static wxString Encode(const wxUint8* pData, size_t length); + + static wxString Decode(const wxString& data); +}; + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/cmdprot.cpp b/libraries/wxSMTP/cmdprot.cpp new file mode 100644 index 000000000..d97ed7bb2 --- /dev/null +++ b/libraries/wxSMTP/cmdprot.cpp @@ -0,0 +1,127 @@ +/* + * Purpose: private wxWindows mail transport implementation + * Author: Frank Buß + * Created: 2002 + */ + +#include + +#include "cmdprot.h" + +#define SOCKET_ID 1 + +class wxCmdlineProtocolSocketEventHandler : public wxEvtHandler +{ +public: + wxCmdlineProtocolSocketEventHandler(wxCmdlineProtocol& callback) : m_callback(callback) + { + } + + void OnSocketEvent(wxSocketEvent& event) + { + m_callback.OnSocketEvent(event); + } + +private: + wxCmdlineProtocol& m_callback; + + DECLARE_EVENT_TABLE() +}; + +BEGIN_EVENT_TABLE(wxCmdlineProtocolSocketEventHandler, wxEvtHandler) + EVT_SOCKET(SOCKET_ID, wxCmdlineProtocolSocketEventHandler::OnSocketEvent) +END_EVENT_TABLE() + + +wxCmdlineProtocol::wxCmdlineProtocol() +{ + m_pCmdlineProtocolSocketEventHandler = new wxCmdlineProtocolSocketEventHandler(*this); +} + +wxCmdlineProtocol::~wxCmdlineProtocol() +{ + delete m_pCmdlineProtocolSocketEventHandler; +} + +void wxCmdlineProtocol::SetHost(const wxString& host, int service, const wxString& user, const wxString& password) +{ + m_host = host; + m_user = user; + m_service = service; + m_password = password; +} + +void wxCmdlineProtocol::Connect() +{ + if (IsConnected()) Close(); + SetTimeout(60); + SetEventHandler(*m_pCmdlineProtocolSocketEventHandler, SOCKET_ID); + SetNotify(wxSOCKET_CONNECTION_FLAG | wxSOCKET_INPUT_FLAG | wxSOCKET_LOST_FLAG); + Notify(TRUE); + + // connect + wxIPV4address addr; + addr.Hostname(m_host); + addr.Service(m_service); // TODO: perhaps the port should not be hardcoded? + wxSocketClient::Connect(addr, FALSE); +} + +void wxCmdlineProtocol::OnInput(wxSocketEvent& event) +{ + // TODO: implementing response timeout somewhere + + // get data + const int bufsize = 256; + +#if wxUSE_UNICODE + wchar_t buf[bufsize]; +#else + char buf[bufsize]; +#endif + + Read(buf, bufsize); + m_inputLine += wxString(buf, LastCount()); +// search for a newline + while (true) { + size_t pos = 0; + while (pos < m_inputLine.Length() - 1) { + if (m_inputLine[pos] == 13) { + if (m_inputLine[pos + 1] == 10) + { + // line found, evaluate + EvaluateLine(m_inputLine.Mid(0, pos)); + + // adjust buffer + m_inputLine = m_inputLine.Mid(pos + 2); + return; + } + break; + } + pos++; + } + } +} + +void wxCmdlineProtocol::OnSocketEvent(wxSocketEvent& event) +{ + wxString s = _("OnSocketEvent: "); + + switch(event.GetSocketEvent()) + { + case wxSOCKET_INPUT: + OnInput(event); + break; + case wxSOCKET_LOST: + // TODO: error handling + break; + case wxSOCKET_CONNECTION: + OnConnect(event); + break; + } +} + +void wxCmdlineProtocol::Write(const wxString& msg) +{ + wxSocketClient::Write(msg, msg.Length()); +} + \ No newline at end of file diff --git a/libraries/wxSMTP/cmdprot.h b/libraries/wxSMTP/cmdprot.h new file mode 100644 index 000000000..df0f1deda --- /dev/null +++ b/libraries/wxSMTP/cmdprot.h @@ -0,0 +1,51 @@ +/* + * Purpose: base class for all command line oriented internet protocols + * Author: Frank Buß + * Created: 2002 + */ + +#ifndef CMDPROT_H +#define CMDPROT_H + +#include + +#include "dllimpexp.h" +#include "email.h" + + +class WXDLLIMPEXP_SMTP wxCmdlineProtocolSocketEventHandler; + +class WXDLLIMPEXP_SMTP wxCmdlineProtocol : public wxSocketClient +{ +public: + wxCmdlineProtocol(); + + ~wxCmdlineProtocol(); + + void SetHost(const wxString& host, int service = 25, const wxString& user = wxT(""), const wxString& password = wxT("")); + + void Connect(); + + // handling for wxSOCKET_INPUT + + virtual void EvaluateLine(const wxString& line) = 0; + + virtual void OnConnect(wxSocketEvent& event) = 0; + + void OnInput(wxSocketEvent& event); + + void OnSocketEvent(wxSocketEvent& event); + + void Write(const wxString& msg); + +private: + wxCmdlineProtocolSocketEventHandler* m_pCmdlineProtocolSocketEventHandler; + bool m_bConnected; + wxString m_inputLine; + wxString m_host; + int m_service; + wxString m_user; + wxString m_password; +}; + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/dllimpexp.h b/libraries/wxSMTP/dllimpexp.h new file mode 100644 index 000000000..1330cb449 --- /dev/null +++ b/libraries/wxSMTP/dllimpexp.h @@ -0,0 +1,12 @@ +#ifndef DLLIMPEXP_H +#define DLLIMPEXP_H + +#ifdef WXMAKINGDLL_SMTP +#define WXDLLIMPEXP_SMTP WXEXPORT +#elif defined(WXUSINGDLL) +#define WXDLLIMPEXP_SMTP WXIMPORT +#else // not making nor using DLL +#define WXDLLIMPEXP_SMTP +#endif + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/email.cpp b/libraries/wxSMTP/email.cpp new file mode 100644 index 000000000..0aa2705b5 --- /dev/null +++ b/libraries/wxSMTP/email.cpp @@ -0,0 +1,120 @@ +/* + * Purpose: wxWindows email implementation + * Author: Frank Buß + * Created: 2002 + */ + +#include "email.h" +#include "Base64.h" + + +wxEmailMessage::wxEmailMessage(const wxString& subject, const wxString& text, const wxString& from) : + m_subject(subject), + m_text(text), + m_from(from) +{ +} + +const wxString& wxEmailMessage::GetFrom() +{ + return m_from; +} + +void wxEmailMessage::AddRecipient(const wxString& address) +{ + m_rcptArray.Add(address); +} + +void wxEmailMessage::AddTo(const wxString& address) +{ + m_toArray.Add(address); +} + +void wxEmailMessage::AddCc(const wxString& address) +{ + m_ccArray.Add(address); +} + +void wxEmailMessage::AddBcc(const wxString& address) +{ + m_bccArray.Add(address); +} + +void wxEmailMessage::AddFile(const wxFileName& fileName, const wxString mimeMainType, const wxString mimeSubType) +{ + // add new entry + m_mimeParts.Add(wxMimePart(fileName)); +} + +wxRecipientsIterator wxEmailMessage::GetRecipientsIterator() +{ + return wxRecipientsIterator(*this); +} + +void wxEmailMessage::Encode(wxOutputStream& out) +{ + // TODO: use only MIME if neccessary + wxString header; + wxString cr(wxT("\x00d\x00a")); + // TODO: calculate a more random boundary + wxString boundary(wxT("---_0123456789-boundary-9876543210_---")); + wxString boundarySep = wxT("--") + boundary + cr; + header << wxT("From: ") << m_from << cr; + // TODO: add to, cc and bcc in the right format with line breaking, if too long + header << wxT("Bcc:") << cr + << wxT("Subject: ") << m_subject << cr // TODO: add Date: + << wxT("MIME-Version: 1.0") << cr + << wxT("Content-Type: multipart/mixed; boundary=\"") << boundary << wxT("\"") << cr + << cr + << cr + << wxT("This is a multi-part message in MIME format") << cr + << cr + << boundarySep + << wxT("Content-Type: text/plain; charset=iso-8859-1") << cr + << wxT("Content-Transfer-Encoding: 8bit") << cr + << cr + << m_text << cr; // TODO: is it possible in MIME message to have a single '.' on a line? + out.Write((const char*) header.mb_str(), header.Length()); + for (size_t i = 0; i < m_mimeParts.GetCount(); i++) { + out.Write((const char*) boundarySep.mb_str(), boundarySep.Length()); + m_mimeParts[i].Encode(out); + } + wxString footer = wxT("--") + boundary + wxT("--") + cr + wxT(".") + cr; // TODO: perhaps moving the '.\r\n' sequence to another place + out.Write((const char*) footer.mb_str(), footer.Length()); +} + +wxRecipientsIterator::wxRecipientsIterator(const wxEmailMessage& emailMessage) : + m_emailMessage(emailMessage) +{ + m_rcptCount = 0; + m_toCount = 0; + m_ccCount = 0; + m_bccCount = 0; +} + +bool wxRecipientsIterator::HasNext() +{ + if (m_rcptCount < m_emailMessage.m_rcptArray.GetCount() || + m_toCount < m_emailMessage.m_toArray.GetCount() || + m_ccCount < m_emailMessage.m_ccArray.GetCount() || + m_bccCount < m_emailMessage.m_bccArray.GetCount()) + { + return true; + } + return false; +} + +wxString wxRecipientsIterator::GetNext() +{ + if (m_rcptCount < m_emailMessage.m_rcptArray.GetCount()) { + return m_emailMessage.m_rcptArray[m_rcptCount++]; + } else if (m_toCount < m_emailMessage.m_toArray.GetCount()) { + return m_emailMessage.m_toArray[m_toCount++]; + } else if (m_ccCount < m_emailMessage.m_ccArray.GetCount()) { + return m_emailMessage.m_ccArray[m_ccCount++]; + } else if (m_bccCount < m_emailMessage.m_bccArray.GetCount()) { + return m_emailMessage.m_bccArray[m_bccCount++]; + } + return wxT(""); +} + \ No newline at end of file diff --git a/libraries/wxSMTP/email.h b/libraries/wxSMTP/email.h new file mode 100644 index 000000000..11dd3051c --- /dev/null +++ b/libraries/wxSMTP/email.h @@ -0,0 +1,77 @@ +/* + * Purpose: wxWindows email implementation + * Author: Frank Buß + * Created: 2002 + */ + +#ifndef EMAIL_H +#define EMAIL_H + +#include +#include +#include + +#include "dllimpexp.h" +#include "mime.h" + +// forward declaration +class wxRecipientsIterator; + +class WXDLLIMPEXP_SMTP wxEmailMessage +{ +public: + wxEmailMessage(const wxString& subject, const wxString& text, const wxString& from); + + const wxString& GetFrom(); + + void AddRecipient(const wxString& address); + + void AddTo(const wxString& address); + + void AddCc(const wxString& address); + + void AddBcc(const wxString& address); + + // loads the file in memory and adds it to the message. + + void AddFile(const wxFileName& fileName, const wxString mimeMainType = wxT(""), const wxString mimeSubType = wxT("")); + + wxRecipientsIterator GetRecipientsIterator(); + + // + void Encode(wxOutputStream& out); + +private: + wxString m_subject; + wxString m_text; + wxString m_from; + wxArrayString m_rcptArray; + wxArrayString m_toArray; + wxArrayString m_ccArray; + wxArrayString m_bccArray; + wxArrayMimePart m_mimeParts; + + friend class wxRecipientsIterator; +}; + + +class wxRecipientsIterator +{ +public: + wxRecipientsIterator(const wxEmailMessage& emailMessage); + + bool HasNext(); + + wxString GetNext(); + +private: + const wxEmailMessage& m_emailMessage; + size_t m_rcptCount; + size_t m_toCount; + size_t m_ccCount; + size_t m_bccCount; + +}; + + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/lib/vc_dll/wxsmtp.dll b/libraries/wxSMTP/lib/vc_dll/wxsmtp.dll new file mode 100644 index 000000000..7de865f44 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll/wxsmtp.dll differ diff --git a/libraries/wxSMTP/lib/vc_dll/wxsmtp.exp b/libraries/wxSMTP/lib/vc_dll/wxsmtp.exp new file mode 100644 index 000000000..d172da422 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll/wxsmtp.exp differ diff --git a/libraries/wxSMTP/lib/vc_dll/wxsmtp.lib b/libraries/wxSMTP/lib/vc_dll/wxsmtp.lib new file mode 100644 index 000000000..964a6b983 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_dll/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_dll/wxsmtp.pdb new file mode 100644 index 000000000..edbdd472e Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.dll b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.dll new file mode 100644 index 000000000..2dc0caf44 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.dll differ diff --git a/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.exp b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.exp new file mode 100644 index 000000000..f05bb1bbf Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.exp differ diff --git a/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.ilk b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.ilk new file mode 100644 index 000000000..999632470 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.ilk differ diff --git a/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.lib b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.lib new file mode 100644 index 000000000..964a6b983 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.pdb new file mode 100644 index 000000000..968dd83a2 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_d/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.dll b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.dll new file mode 100644 index 000000000..a73eecbd9 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.dll differ diff --git a/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.exp b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.exp new file mode 100644 index 000000000..a45ec8f1f Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.exp differ diff --git a/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.lib b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.lib new file mode 100644 index 000000000..1ada51dd8 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.pdb new file mode 100644 index 000000000..ca195d300 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_m/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.dll b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.dll new file mode 100644 index 000000000..1ea8b6ca6 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.dll differ diff --git a/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.exp b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.exp new file mode 100644 index 000000000..e6884165a Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.exp differ diff --git a/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.ilk b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.ilk new file mode 100644 index 000000000..7e13b49f0 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.ilk differ diff --git a/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.lib b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.lib new file mode 100644 index 000000000..1ada51dd8 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.pdb new file mode 100644 index 000000000..453bdc20f Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_md/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_dll_ud/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_dll_ud/wxsmtp.pdb new file mode 100644 index 000000000..2d58993a8 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_ud/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.exp b/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.exp new file mode 100644 index 000000000..ce6814c28 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.exp differ diff --git a/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.lib b/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.lib new file mode 100644 index 000000000..fff18d506 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.pdb new file mode 100644 index 000000000..a622c7d1e Binary files /dev/null and b/libraries/wxSMTP/lib/vc_dll_umd/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_lib/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib/wxsmtp.lib new file mode 100644 index 000000000..8aa414db1 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_lib/wxsmtp.pdb new file mode 100644 index 000000000..4a97dff1c Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_lib_d/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib_d/wxsmtp.lib new file mode 100644 index 000000000..0a2f45347 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_d/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib_d/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_lib_d/wxsmtp.pdb new file mode 100644 index 000000000..3502b966c Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_d/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_lib_m/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib_m/wxsmtp.lib new file mode 100644 index 000000000..61da46420 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_m/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib_md/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib_md/wxsmtp.lib new file mode 100644 index 000000000..3634ea61c Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_md/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib_md/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_lib_md/wxsmtp.pdb new file mode 100644 index 000000000..a2d4cfafa Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_md/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_lib_u/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib_u/wxsmtp.lib new file mode 100644 index 000000000..9c2934001 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_u/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib_ud/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib_ud/wxsmtp.lib new file mode 100644 index 000000000..0e25521aa Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_ud/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib_ud/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_lib_ud/wxsmtp.pdb new file mode 100644 index 000000000..5258ed595 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_ud/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/lib/vc_lib_um/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib_um/wxsmtp.lib new file mode 100644 index 000000000..241dc3c26 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_um/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib_umd/wxsmtp.lib b/libraries/wxSMTP/lib/vc_lib_umd/wxsmtp.lib new file mode 100644 index 000000000..bcb0a4123 Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_umd/wxsmtp.lib differ diff --git a/libraries/wxSMTP/lib/vc_lib_umd/wxsmtp.pdb b/libraries/wxSMTP/lib/vc_lib_umd/wxsmtp.pdb new file mode 100644 index 000000000..e05ee3bdf Binary files /dev/null and b/libraries/wxSMTP/lib/vc_lib_umd/wxsmtp.pdb differ diff --git a/libraries/wxSMTP/mime.cpp b/libraries/wxSMTP/mime.cpp new file mode 100644 index 000000000..16fb49f81 --- /dev/null +++ b/libraries/wxSMTP/mime.cpp @@ -0,0 +1,91 @@ +/* + * Purpose: wxWindows mime implementation + * Author: Frank Buß + * Created: 2002 + */ + +#include "email.h" +#include "Base64.h" + + +#include "wx/arrimpl.cpp" +WX_DEFINE_OBJARRAY(wxArrayMimePart); + +struct wxMimeTypeMapping +{ + const wxChar* extension; + const wxChar* mainType; + const wxChar* subType; +}; + +// extension, main type, sub type +// TODO: must be merged / integrated / substituted with wxFileType +static const wxMimeTypeMapping g_mimeTypeMappings[] = +{ + { _T("txt"), _T("text"), _T("plain") }, + { _T("htm"), _T("text"), _T("html") }, + { _T("html"), _T("text"), _T("html") }, + { _T("gif"), _T("image"), _T("gif") }, + { _T("png"), _T("image"), _T("png") }, + { _T("jpg"), _T("image"), _T("jpeg") }, + { _T("jpeg"), _T("image"), _T("jpeg") }, + { _T("pdf"), _T("application"), _T("pdf") }, + { _T("doc"), _T("application"), _T("msword") } +}; + +wxMimePart::wxMimePart(const wxFileName& fileName) : + m_fileName(fileName) +{ + // setup default encoding + m_mainType = _T("application"); + m_subType = _T("octet-stream"); + + // try to determine encoding by filename extension + wxString ext = fileName.GetExt().Lower(); + for (int i = 0; i < sizeof(g_mimeTypeMappings) / sizeof(wxMimeTypeMapping); i++) { + if (g_mimeTypeMappings[i].extension == ext) { + m_mainType = g_mimeTypeMappings[i].mainType; + m_subType = g_mimeTypeMappings[i].subType; + break; + } + } +} + +void wxMimePart::Encode(wxOutputStream& out) +{ + // TODO: error handling for every return + // TODO: encoding it on-the-fly without loading it all in memory + wxFileInputStream in(m_fileName.GetFullPath()); + if (!in.Ok()) return; + + // determine file length + // TODO: perhaps this can be added to wxFileName for size() + in.SeekI(0, wxFromEnd); + size_t len = (size_t) in.TellI(); + in.SeekI(0); + // that's possible for windows (#include and #include ): + // struct _stat lenStat; + // if (_stat(filename, &lenStat) == -1) return error; + // size_t len = (size_t) lenStat.st_size; + + if (len == 0) return; + + // read file + wxUint8* pData = new wxUint8[len]; + if (!pData) { + wxASSERT_MSG(pData != NULL, _T("out of memory")); + return; + } + in.Read(pData, len); + + // write encoded mime part to stream + wxString cr(wxT("\x00d\x00a")); + wxString result; + result << wxT("Content-Type: ") << m_mainType << wxT("/") << m_subType << wxT("; name=\"") << m_fileName.GetFullName() + wxT("\"") + cr + << wxT("Content-Transfer-Encoding: base64") << cr + << wxT("Content-Disposition: attachment; filename=\"") << m_fileName.GetName() << wxT("\"") << cr + << cr + << wxBase64::Encode(pData, len) << cr; + out.Write((const char*) result.mb_str(), result.Length()); +} + \ No newline at end of file diff --git a/libraries/wxSMTP/mime.h b/libraries/wxSMTP/mime.h new file mode 100644 index 000000000..eb9905102 --- /dev/null +++ b/libraries/wxSMTP/mime.h @@ -0,0 +1,29 @@ +/* + * Purpose: wxWindows mime implementation + * Author: Frank Buß + * Created: 2002 + */ + +#ifndef MIME_H +#define MIME_H + +#include +#include +#include + +class WXDLLIMPEXP_SMTP wxMimePart +{ +public: + wxMimePart(const wxFileName& fileName); + + void Encode(wxOutputStream& out); + +private: + wxFileName m_fileName; + wxString m_mainType; + wxString m_subType; +}; + +WX_DECLARE_OBJARRAY(wxMimePart, wxArrayMimePart); + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/smtp.cpp b/libraries/wxSMTP/smtp.cpp new file mode 100644 index 000000000..3aa508e7b --- /dev/null +++ b/libraries/wxSMTP/smtp.cpp @@ -0,0 +1,105 @@ +/* + * Purpose: private wxWindows mail transport implementation + * Author: Frank Buß + * Created: 2002 + */ + +#include + +#include "smtp.h" +#include "states.h" + +#define SOCKET_ID 1 + +wxSMTPListener g_nullListener; + +wxSMTP::wxSMTP(wxSMTPListener* pListener) : + m_pMailState(&g_initialState) +{ + if (pListener) { + m_pListener = pListener; + } else { + m_pListener = &g_nullListener; + } + m_pMessage = NULL; +} + +wxSMTP::~wxSMTP() +{ +} + +void wxSMTP::EvaluateLine(const wxString& line) +{ + // TODO: implementing response timeout somewhere + // TODO: implementing multiline response + + // get command + unsigned long cmd = 0; + line.ToULong(&cmd); + m_pMailState->onResponse(*this, cmd); +} + +void wxSMTP::OnConnect(wxSocketEvent& event) +{ + m_pMailState->onConnect(*this, event); +} + +void wxSMTP::Send(wxEmailMessage* pMessage) +{ + // no message means nothing to do + if (!pMessage) return; + m_pMessage = pMessage; + + // add recipients from message + wxRecipientsIterator ri = m_pMessage->GetRecipientsIterator(); + while (ri.HasNext()) m_recipients.Add(ri.GetNext()); + m_count = 0; + + // init new socket connection + m_pMailState = &g_initialState; + Connect(); +} + +void wxSMTP::ChangeState(const MailState& mailState) +{ + m_pMailState = &mailState; +} + +void wxSMTP::SendNextRecipient() +{ + if (m_count < m_recipients.GetCount()) { + m_currentRecipient = m_recipients[m_count++]; + Write(wxT("RCPT TO:<") + m_currentRecipient + wxT(">\x00d\x00a")); + } else { + ChangeState(g_startDataState); + Write(wxT("DATA\x00d\x00a")); + } +} + +void wxSMTP::OnRecipientError() +{ + m_pListener->OnRecipientAdded(m_currentRecipient, 0); +} + +void wxSMTP::OnRecipientSuccess() +{ + m_pListener->OnRecipientAdded(m_currentRecipient, 1); +} + +void wxSMTP::OnDataSuccess() +{ + m_pListener->OnDataSent(1); +} + +void wxSMTP::SendFrom() +{ + Write(wxT("MAIL FROM:<") + m_pMessage->GetFrom() + wxT(">\x00d\x00a")); +} + +void wxSMTP::SendData() +{ + wxSocketOutputStream out(*this); +// wxFileOutputStream out("mail.txt"); + m_pMessage->Encode(out); +} + \ No newline at end of file diff --git a/libraries/wxSMTP/smtp.h b/libraries/wxSMTP/smtp.h new file mode 100644 index 000000000..46b0c74ec --- /dev/null +++ b/libraries/wxSMTP/smtp.h @@ -0,0 +1,69 @@ +/* + * Purpose: private wxWindows mail transport implementation + * Author: Frank Buß + * Created: 2002 + */ + +#ifndef SMPT_H +#define SMPT_H + +#include +#include + +#include "email.h" +#include "cmdprot.h" + +class WXDLLIMPEXP_SMTP wxSMTPListener +{ +public: + virtual void OnSocketError(int errorCode) {}; + + virtual void OnRecipientAdded(const wxString& address, int errorCode) {}; + + virtual void OnDataSent(int errorCode) {}; +}; + +class MailState; + +class WXDLLIMPEXP_SMTP wxSMTP : public wxCmdlineProtocol //, public wxEvtHandler +{ +public: + wxSMTP(wxSMTPListener* pListener = NULL); + + ~wxSMTP(); + + void Send(wxEmailMessage* pMessage); + + void EvaluateLine(const wxString& line); + void OnConnect(wxSocketEvent& event); + + // MailStateContext interface + + void ChangeState(const MailState& mailState); + + void SendNextRecipient(); + + void OnRecipientError(); + + void OnRecipientSuccess(); + + void OnDataSuccess(); + + void SendFrom(); + + void SendData(); + +private: + const MailState* m_pMailState; + wxSMTPListener* m_pListener; + wxEmailMessage* m_pMessage; + + // current recipient and counts + size_t m_count; + wxString m_currentRecipient; + + // all recipients + wxArrayString m_recipients; +}; + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/snddlg.cpp b/libraries/wxSMTP/snddlg.cpp new file mode 100644 index 000000000..67fa6adf4 --- /dev/null +++ b/libraries/wxSMTP/snddlg.cpp @@ -0,0 +1,251 @@ +/* + * Purpose: Sample application for demonstrating and testing the wxWindows email support + * Author: Frank Buß + * Created: 2002 + */ + +#include + +#include "snddlg.h" +#include "wino.h" + +static const wxUint32 g_admFileId = ('a' | ('d' << 8) | ('m' << 16)); +static const wxUint32 g_admFileVersion = 1; + +// file format tags +enum { + admTagEnd = 0, + admTagGrid = 2 +}; + +BEGIN_EVENT_TABLE(SendDialog, wxDialog) +END_EVENT_TABLE() + +size_t g_emailCount; + +static bool checkEmail(wxString& email) +{ + static bool validChars[256]; + static bool initialized = false; + if (!initialized) { + unsigned i; + for (i = 0; i <= 255; i++) validChars[i] = false; + for (i = 'a'; i <= 'z'; i++) validChars[i] = true; + for (i = 'A'; i <= 'Z'; i++) validChars[i] = true; + for (i = '0'; i <= '9'; i++) validChars[i] = true; + validChars['@'] = true; + validChars['.'] = true; + validChars['_'] = true; + validChars['-'] = true; + validChars['~'] = true; + initialized = true; + } + + // check for valid emails + unsigned atcount = 0; + unsigned atposition = 0; + if (email.Length() < 3) return false; + for (unsigned i = 0; i < email.Length(); i++) { + wxChar c = email[i]; + if (!validChars[c]) return false; + if (c == '@') { + atcount++; + atposition = i; + if (atcount > 1) return false; + } + } + if (atcount != 1) return false; + if (atposition == 0 || atposition == email.Length() - 1) return false; + + // valid + return true; +} + +static void addEmails(wxEmailMessage* pMessage, wxFileName* pFilename) +{ + // open file; TODO: file locking + wxFileInputStream fileInStream(pFilename->GetFullPath()); + wxDataInputStream in(fileInStream); + + // check if right file format and file is readable + wxUint32 id = in.Read32(); + wxUint32 version = in.Read32(); + if (!in.IsOk() || id != g_admFileId || version > g_admFileVersion) { + wxMessageDialog errorDialog(NULL, "Fehler beim Öffnen der Datei " + pFilename->GetFullPath() + ", diese Datei wird ignoriert.", "Wino", wxOK | wxICON_INFORMATION); + errorDialog.ShowModal(); + return; + } + + // read file + bool end = false; + while (!end) { + wxUint32 tag = in.Read32(); + wxUint32 size = in.Read32(); + switch (tag) { + case admTagGrid: + { + // read number of cols and rows + size_t cols = in.Read32(); + size_t rows = in.Read32(); + + // read column labels and widths + bool found = false; + size_t emailIndex = 0; + size_t i; + for (i = 0; i < cols; i++) { + wxString colLabel = in.ReadString(); + if (colLabel.CmpNoCase("email") == 0) { + found = true; + emailIndex = i; + } + in.Read32(); + } + if (!found) { + wxString error; + error << "Die Datei " << pFilename->GetFullPath() << " enthält keine Tabellenspalte\n" + << "mit dem Namen 'eMail' und wird daher ignoriert."; + wxMessageDialog errorDialog(NULL, error, "Wino", wxOK | wxICON_INFORMATION); + errorDialog.ShowModal(); + return; + } + + // read emails + for (i = 0; i < rows; i++) { + for (size_t j = 0; j < cols; j++) { + if (j == emailIndex) { + wxString email = in.ReadString(); + if (checkEmail(email)) { + pMessage->AddRecipient(email); + g_emailCount++; + } + } else { + in.ReadString(); + } + } + } + return; + } + break; + case admTagEnd: + end = true; + break; + default: + fileInStream.SeekI(size, wxFromCurrent); + } + } +} + +SendDialog::SendDialog(WinoDialog& winoDialog) + : wxDialog(&winoDialog, -1, + _("Wino eMail Versand"), + wxDefaultPosition, + wxDefaultSize, + wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL) +{ + wxString server = winoDialog.m_pServerTextCtrl->GetValue().Trim(); + wxString subject = winoDialog.m_pSubjectTextCtrl->GetValue().Trim(); + wxString text = winoDialog.m_pTextTextCtrl->GetValue().Trim(); + wxString from = winoDialog.m_pFromTextCtrl->GetValue().Trim(); + wxString to = winoDialog.m_pToTextCtrl->GetValue().Trim(); + + g_emailCount = 0; + m_successCount = 0; + wxBusyCursor wait; + + // create transport class + m_pSMTP = new wxSMTP(this); + m_pSMTP->SetHost(server); + + // create message class + m_pMessage = new wxEmailMessage(subject, text, from); + + // add 'to'-recipient to message + m_pMessage->AddTo(to); + + // add files to message + int i; + for (i = 0; i < winoDialog.m_pFilelist->GetCount(); i++) { + wxFileName* pFilename = (wxFileName*) winoDialog.m_pFilelist->GetClientData(i); + m_pMessage->AddFile(*pFilename); + } + + // add emails to message + for (i = 0; i < winoDialog.m_pAddresslist->GetCount(); i++) { + wxFileName* pFilename = (wxFileName*) winoDialog.m_pAddresslist->GetClientData(i); + addEmails(m_pMessage, pFilename); + } + + // convert email count to string + wxString emailCount; + emailCount << g_emailCount; + + // create dialog + wxBoxSizer* pTopSizer = new wxBoxSizer(wxVERTICAL); + + wxBoxSizer* pStatusSizer = new wxBoxSizer(wxHORIZONTAL); + pStatusSizer->Add(new wxStaticText(this, -1, "Status:"), 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10); + m_pStatusText = new wxStaticText(this, -1, "eMail-Adressen werden gesendet...", wxDefaultPosition, wxSize(100, 10)); + pStatusSizer->Add(m_pStatusText, 3, wxLEFT | wxTOP | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER | wxEXPAND, 10); + pTopSizer->Add(pStatusSizer, 0, wxEXPAND); + + wxBoxSizer* pEmailCountSizer = new wxBoxSizer(wxHORIZONTAL); + pEmailCountSizer->Add(new wxStaticText(this, -1, "Anzahl gültiger eMail Adressen:"), 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10); + m_pEmailCountText = new wxStaticText(this, -1, emailCount, wxDefaultPosition, wxSize(100, 10)); + pEmailCountSizer->Add(m_pEmailCountText, 3, wxLEFT | wxTOP | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER | wxEXPAND, 10); + pTopSizer->Add(pEmailCountSizer, 0, wxEXPAND); + + wxBoxSizer* pEmailSuccessSizer = new wxBoxSizer(wxHORIZONTAL); + pEmailSuccessSizer->Add(new wxStaticText(this, -1, "Davon erfolgreich versendet:"), 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10); + m_pEmailSuccessText = new wxStaticText(this, -1, "0", wxDefaultPosition, wxSize(100, 10)); + pEmailSuccessSizer->Add(m_pEmailSuccessText, 3, wxLEFT | wxTOP | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER | wxEXPAND, 10); + pTopSizer->Add(pEmailSuccessSizer, 0, wxEXPAND); + + wxStaticBoxSizer* pLogSizer = new wxStaticBoxSizer(new wxStaticBox(this, -1, "Bericht"), wxVERTICAL); + m_pLogTextCtrl = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(500, 300), wxTE_MULTILINE | wxTE_READONLY); + pLogSizer->Add(m_pLogTextCtrl, 0, wxEXPAND | wxALL, 10); + pTopSizer->Add(pLogSizer, 0, wxEXPAND | wxALL, 10); + + wxBoxSizer* pSendCloseSizer = new wxBoxSizer(wxHORIZONTAL); + wxButton* pCloseButton = new wxButton(this, wxID_CANCEL, "Beenden"); + pCloseButton->SetDefault(); + pSendCloseSizer->Add(pCloseButton, 0, wxALL, 10); + pTopSizer->Add(pSendCloseSizer, 0, wxALIGN_RIGHT); + + SetAutoLayout(true); + SetSizer(pTopSizer); + pTopSizer->Fit(this); + pTopSizer->SetSizeHints(this); + + // show dialog + Centre(wxBOTH | wxCENTRE_ON_SCREEN); + + // start email sending + m_pSMTP->Send(m_pMessage); +} + +SendDialog::~SendDialog() +{ + delete m_pSMTP; + delete m_pMessage; +} + + +void SendDialog::OnSocketError(int errorCode) +{ +} + +void SendDialog::OnRecipientAdded(const wxString& address, int errorCode) +{ + if (errorCode) { + m_successCount++; + wxString l; + l << m_successCount; + m_pEmailSuccessText->SetLabel(l); + } +} + +void SendDialog::OnDataSent(int errorCode) +{ + m_pStatusText->SetLabel("eMail-Versand beendet."); + wxMessageBox(_("eMail-Versand beendet."), _("Wino"), wxOK | wxICON_INFORMATION); +} \ No newline at end of file diff --git a/libraries/wxSMTP/snddlg.h b/libraries/wxSMTP/snddlg.h new file mode 100644 index 000000000..5062b8eae --- /dev/null +++ b/libraries/wxSMTP/snddlg.h @@ -0,0 +1,45 @@ +/* + * Purpose: Sample application for demonstrating and testing the wxWindows email support + * Author: Frank Buß + * Created: 2002 + */ + +#ifndef SNDDLG_H +#define SNDDLG_H + +#include +#include + +#include "smtp.h" + +class WinoDialog; + +class SendDialog : public wxDialog, public wxSMTPListener +{ +public: + SendDialog(WinoDialog& winoDialog); + + virtual ~SendDialog(); + + void OnSocketError(int errorCode); + + void OnRecipientAdded(const wxString& address, int errorCode); + + void OnDataSent(int errorCode); + +private: + wxSMTP* m_pSMTP; + wxEmailMessage* m_pMessage; + + wxStaticText* m_pStatusText; + wxStaticText* m_pEmailCountText; + wxStaticText* m_pEmailSuccessText; + wxTextCtrl* m_pLogTextCtrl; + + size_t m_successCount; + + DECLARE_EVENT_TABLE() +}; + + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/states.cpp b/libraries/wxSMTP/states.cpp new file mode 100644 index 000000000..32283f0d9 --- /dev/null +++ b/libraries/wxSMTP/states.cpp @@ -0,0 +1,94 @@ +/* + * Purpose: private wxWindows helper classes for SMTP + * Author: Frank Buß + * Created: 2002 + */ + +#include "states.h" + + +const InitialState g_initialState; +const ConnectedState g_connectedState; +const HeloState g_heloState; +const SendMailFromState g_sendMailFromState; +const RcptListState g_rcptListState; +const StartDataState g_startDataState; +const DataState g_dataState; + + +void InitialState::onConnect(wxSMTP& context, wxSocketEvent& event) const +{ + if (event.GetSocketEvent() == wxSOCKET_CONNECTION) { + context.ChangeState(g_connectedState); + } else { + // error + } +} + + +void ConnectedState::onResponse(wxSMTP& context, int smtpCode) const +{ + if (smtpCode == 220) { + context.ChangeState(g_heloState); + // TODO: using some wxWindows function for getting the hostname + context.Write(wxT("HELO localhost\x00d\x00a")); + } else { + // error + } +} + + +void HeloState::onResponse(wxSMTP& context, int smtpCode) const +{ + if (smtpCode == 250) { + context.ChangeState(g_sendMailFromState); + context.SendFrom(); + } else { + // error + } +} + + +void SendMailFromState::onResponse(wxSMTP& context, int smtpCode) const +{ + if (smtpCode == 250) { + context.ChangeState(g_rcptListState); + context.SendNextRecipient(); + } else { + // error + } +} + + +void RcptListState::onResponse(wxSMTP& context, int smtpCode) const +{ + switch (smtpCode) { + case 250: + case 251: + context.OnRecipientSuccess(); + break; + case 421: // service not available + // error + break; + default: + context.OnRecipientError(); + } + context.SendNextRecipient(); +} + + +void StartDataState::onResponse(wxSMTP& context, int smtpCode) const +{ + if (smtpCode == 354) { + context.ChangeState(g_dataState); + context.SendData(); + } +} + + +void DataState::onResponse(wxSMTP& context, int smtpCode) const +{ + if (smtpCode == 250) { + context.OnDataSuccess(); + } +} \ No newline at end of file diff --git a/libraries/wxSMTP/states.h b/libraries/wxSMTP/states.h new file mode 100644 index 000000000..229b18489 --- /dev/null +++ b/libraries/wxSMTP/states.h @@ -0,0 +1,78 @@ +/* + * Purpose: private wxWindows helper classes for SMTP + * Author: Frank Buß + * Created: 2002 + */ + +#ifndef STATES_H +#define STATES_H + +#include +#include + +#include "smtp.h" + +class MailState +{ +public: + virtual void onConnect(wxSMTP& context, wxSocketEvent& event) const {} + virtual void onResponse(wxSMTP& context, int smtpCode) const {} +}; + +class InitialState : public MailState +{ +public: + void onConnect(wxSMTP& context, wxSocketEvent& event) const ; +}; + + +class ConnectedState : public MailState +{ +public: + void onResponse(wxSMTP& context, int smtpCode) const ; +}; + + +class HeloState : public MailState +{ +public: + void onResponse(wxSMTP& context, int smtpCode) const ; +}; + + +class SendMailFromState : public MailState +{ +public: + void onResponse(wxSMTP& context, int smtpCode) const ; +}; + + +class RcptListState : public MailState +{ +public: + void onResponse(wxSMTP& context, int smtpCode) const ; +}; + + +class StartDataState : public MailState +{ +public: + void onResponse(wxSMTP& context, int smtpCode) const ; +}; + + +class DataState : public MailState +{ +public: + void onResponse(wxSMTP& context, int smtpCode) const ; +}; + +extern const InitialState g_initialState; +extern const ConnectedState g_connectedState; +extern const HeloState g_heloState; +extern const SendMailFromState g_sendMailFromState; +extern const RcptListState g_rcptListState; +extern const StartDataState g_startDataState; +extern const DataState g_dataState; + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/wino.cpp b/libraries/wxSMTP/wino.cpp new file mode 100644 index 000000000..f76f5eec3 --- /dev/null +++ b/libraries/wxSMTP/wino.cpp @@ -0,0 +1,178 @@ +/* + * Purpose: Sample application for demonstrating and testing the wxWindows email support + * Author: Frank Buß + * Created: 2002 + */ + +#include "wino.h" +#include "snddlg.h" + +static const char sccsid[] = "%W% %G%"; + +#include "wino.xpm" +#include "snddlg.h" + +enum { + ID_SEND_BUTTON = 1, + ID_FILE_ADD_BUTTON, + ID_FILE_REMOVE_BUTTON, + ID_ADDRESS_ADD_BUTTON, + ID_ADDRESS_REMOVE_BUTTON +}; + + +BEGIN_EVENT_TABLE(WinoDialog, wxDialog) +EVT_BUTTON(ID_SEND_BUTTON, WinoDialog::OnSendButton) +EVT_BUTTON(ID_FILE_ADD_BUTTON, WinoDialog::OnFileAddButton) +EVT_BUTTON(ID_FILE_REMOVE_BUTTON, WinoDialog::OnFileRemoveButton) +EVT_BUTTON(ID_ADDRESS_ADD_BUTTON, WinoDialog::OnAddressAddButton) +EVT_BUTTON(ID_ADDRESS_REMOVE_BUTTON, WinoDialog::OnAddressRemoveButton) +END_EVENT_TABLE() + + +IMPLEMENT_APP(WinoApp) + + +bool WinoApp::OnInit(void) +{ + WinoDialog dialog(NULL); + dialog.ShowModal(); + + return FALSE; +} + +#include "base64.h" + +WinoDialog::WinoDialog(wxWindow *parent) + : wxDialog(parent, -1, + _("Wino - Wino Is Not Outlook"), + wxDefaultPosition, + wxDefaultSize, + wxDEFAULT_DIALOG_STYLE | wxDIALOG_MODAL) +{ + + // TODO: save pointers to member variables in delete it in destructor + wxBoxSizer* pTopSizer = new wxBoxSizer(wxVERTICAL); + + wxBoxSizer* pServerSizer = new wxBoxSizer(wxHORIZONTAL); + pServerSizer->Add(new wxStaticText(this, -1, "SMTP Server:"), 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10); + m_pServerTextCtrl = new wxTextCtrl(this, -1); + pServerSizer->Add(m_pServerTextCtrl, 5, wxLEFT | wxTOP | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER | wxEXPAND, 10); + pTopSizer->Add(pServerSizer, 0, wxEXPAND); + + wxBoxSizer* pFromSizer = new wxBoxSizer(wxHORIZONTAL); + pFromSizer->Add(new wxStaticText(this, -1, "Absender:"), 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10); + m_pFromTextCtrl = new wxTextCtrl(this, -1); + pFromSizer->Add(m_pFromTextCtrl, 5, wxLEFT | wxTOP | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER | wxEXPAND, 10); + pTopSizer->Add(pFromSizer, 0, wxEXPAND); + + wxBoxSizer* pToSizer = new wxBoxSizer(wxHORIZONTAL); + pToSizer->Add(new wxStaticText(this, -1, "An:"), 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10); + m_pToTextCtrl = new wxTextCtrl(this, -1); + pToSizer->Add(m_pToTextCtrl, 5, wxLEFT | wxTOP | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER | wxEXPAND, 10); + pTopSizer->Add(pToSizer, 0, wxEXPAND); + + wxBoxSizer* pSubjectSizer = new wxBoxSizer(wxHORIZONTAL); + pSubjectSizer->Add(new wxStaticText(this, -1, "Betreff:"), 1, wxALIGN_CENTER | wxLEFT | wxTOP, 10); + m_pSubjectTextCtrl = new wxTextCtrl(this, -1); + pSubjectSizer->Add(m_pSubjectTextCtrl, 5, wxLEFT | wxTOP | wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER | wxEXPAND, 10); + pTopSizer->Add(pSubjectSizer, 0, wxEXPAND); + + m_pTextTextCtrl = new wxTextCtrl(this, -1, "", wxDefaultPosition, wxSize(100, 200), wxTE_MULTILINE); + pTopSizer->Add(m_pTextTextCtrl, 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 10); + + // list ctrls + wxBoxSizer* pListsSizer = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer* pFilelistSizer = new wxStaticBoxSizer(new wxStaticBox(this, -1, "Dateianhänge"), wxVERTICAL); + wxBoxSizer* pFilelistButtonsSizer = new wxBoxSizer(wxHORIZONTAL); + pFilelistButtonsSizer->Add(new wxButton(this, ID_FILE_ADD_BUTTON, "Datei hinzufügen"), 1, wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, 10); + pFilelistButtonsSizer->Add(new wxButton(this, ID_FILE_REMOVE_BUTTON, "Markierte entfernen"), 1, wxEXPAND | wxALL, 10); + m_pFilelist = new wxListBox(this, -1, wxDefaultPosition, wxSize(50, 50)); + pFilelistSizer->Add(m_pFilelist, 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 10); + pFilelistSizer->Add(pFilelistButtonsSizer, 0, wxEXPAND); + pListsSizer->Add(pFilelistSizer, 1, wxEXPAND | wxLEFT | wxTOP, 10); + wxBoxSizer* pAddresslistSizer = new wxStaticBoxSizer(new wxStaticBox(this, -1, "Address Manager Dateien"), wxVERTICAL); + wxBoxSizer* pAddresslistButtonsSizer = new wxBoxSizer(wxHORIZONTAL); + pAddresslistButtonsSizer->Add(new wxButton(this, ID_ADDRESS_ADD_BUTTON, "Datei hinzufügen"), 1, wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, 10); + pAddresslistButtonsSizer->Add(new wxButton(this, ID_ADDRESS_REMOVE_BUTTON, "Markierte entfernen"), 1, wxEXPAND | wxALL, 10); + m_pAddresslist = new wxListBox(this, -1, wxDefaultPosition, wxSize(50, 50)); + pAddresslistSizer->Add(m_pAddresslist, 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 10); + pAddresslistSizer->Add(pAddresslistButtonsSizer, 0, wxEXPAND); + pListsSizer->Add(pAddresslistSizer, 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 10); + pTopSizer->Add(pListsSizer, 0, wxEXPAND); + + // send close button + wxBoxSizer* pSendCloseSizer = new wxBoxSizer(wxHORIZONTAL); + pSendCloseSizer->Add(new wxButton(this, ID_SEND_BUTTON, "eMail verschicken"), 0, wxTOP | wxBOTTOM, 10); + wxButton* pCloseButton = new wxButton(this, wxID_CANCEL, "Beenden"); + pCloseButton->SetDefault(); + pSendCloseSizer->Add(pCloseButton, 0, wxALL, 10); + pTopSizer->Add(pSendCloseSizer, 0, wxALIGN_RIGHT); + + SetAutoLayout(true); + SetSizer(pTopSizer); + pTopSizer->Fit(this); + pTopSizer->SetSizeHints(this); + + // set some default values for testing + m_pServerTextCtrl->SetValue("merlin"); // my local unix server + m_pSubjectTextCtrl->SetValue(""); + m_pTextTextCtrl->SetValue(""); + m_pFromTextCtrl->SetValue("fb@frank-buss.de"); + m_pToTextCtrl->SetValue("somebody@frank-buss.de"); + + // show dialog + Centre(wxBOTH | wxCENTRE_ON_SCREEN); +} + + +WinoDialog::~WinoDialog() +{ +} + + +void WinoDialog::OnSendButton(wxCommandEvent &event) +{ + SendDialog dialog(*this); + dialog.ShowModal(); +} + + +void WinoDialog::OnFileAddButton(wxCommandEvent &event) +{ + wxFileDialog dialog(this, "Datei Hinzufügen", "", "", "Alle Dateien (*)|*", wxOPEN); + if (dialog.ShowModal() == wxID_OK) { + wxFileName* pFilename = new wxFileName(dialog.GetPath()); + m_pFilelist->Append(pFilename->GetFullName(), pFilename); + } +} + +void WinoDialog::OnFileRemoveButton(wxCommandEvent &event) +{ + int sel = m_pFilelist->GetSelection(); + if (sel != -1) { + wxFileName* pFilename = (wxFileName*) m_pFilelist->GetClientData(sel); + m_pFilelist->Delete(sel); + delete pFilename; + } +} + +void WinoDialog::OnAddressAddButton(wxCommandEvent &event) +{ + wxFileDialog dialog(this, "Address Manager Datei Empfängerliste Hinzufügen", "", "", "Address Manager Dateien (*.adm)|*.adm", wxOPEN); + if (dialog.ShowModal() == wxID_OK) { + wxFileName* pFilename = new wxFileName(dialog.GetPath()); + m_pAddresslist->Append(pFilename->GetFullName(), pFilename); + } +} + +void WinoDialog::OnAddressRemoveButton(wxCommandEvent &event) +{ + int sel = m_pAddresslist->GetSelection(); + if (sel != -1) { + wxFileName* pFilename = (wxFileName*) m_pAddresslist->GetClientData(sel); + m_pAddresslist->Delete(sel); + delete pFilename; + } +} + \ No newline at end of file diff --git a/libraries/wxSMTP/wino.h b/libraries/wxSMTP/wino.h new file mode 100644 index 000000000..1d904602e --- /dev/null +++ b/libraries/wxSMTP/wino.h @@ -0,0 +1,54 @@ +/* + * Purpose: Sample application for demonstrating and testing the wxWindows email support + * Author: Frank Buß + * Created: 2002 + */ + +#ifndef WINO_H +#define WINO_H + +#include +#include + +#if !defined(__WXMSW__) +extern char* wino_xpm[]; +#endif + +class WinoApp : public wxApp +{ +public: + bool OnInit(); +}; + +class WinoDialog : public wxDialog +{ +public: + WinoDialog(wxWindow *parent); + ~WinoDialog(); + + void OnSendButton(wxCommandEvent &event); + + void OnFileAddButton(wxCommandEvent &event); + + void OnFileRemoveButton(wxCommandEvent &event); + + void OnAddressAddButton(wxCommandEvent &event); + + void OnAddressRemoveButton(wxCommandEvent &event); + +private: + wxTextCtrl* m_pServerTextCtrl; + wxTextCtrl* m_pFromTextCtrl; + wxTextCtrl* m_pToTextCtrl; + wxTextCtrl* m_pSubjectTextCtrl; + wxTextCtrl* m_pTextTextCtrl; + wxListBox* m_pFilelist; + wxListBox* m_pAddresslist; + + DECLARE_EVENT_TABLE() + + friend class SendDialog; +}; + + +#endif \ No newline at end of file diff --git a/libraries/wxSMTP/wxsmtp.sln b/libraries/wxSMTP/wxsmtp.sln new file mode 100644 index 000000000..dd7edcd54 --- /dev/null +++ b/libraries/wxSMTP/wxsmtp.sln @@ -0,0 +1,117 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.34930.48 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxsmtp", "wxsmtp.vcxproj", "{ECA5FC4D-29CE-5030-9175-551834BF6CB0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + DLL ANSI Debug Monolithic|Win32 = DLL ANSI Debug Monolithic|Win32 + DLL ANSI Debug Multilib|Win32 = DLL ANSI Debug Multilib|Win32 + DLL ANSI Release Monolithic|Win32 = DLL ANSI Release Monolithic|Win32 + DLL ANSI Release Multilib|Win32 = DLL ANSI Release Multilib|Win32 + DLL Debug|Win32 = DLL Debug|Win32 + DLL Release|Win32 = DLL Release|Win32 + DLL Unicode Debug Monolithic|Win32 = DLL Unicode Debug Monolithic|Win32 + DLL Unicode Debug Multilib|Win32 = DLL Unicode Debug Multilib|Win32 + DLL Unicode Debug|Win32 = DLL Unicode Debug|Win32 + DLL Unicode Release Monolithic|Win32 = DLL Unicode Release Monolithic|Win32 + DLL Unicode Release Multilib|Win32 = DLL Unicode Release Multilib|Win32 + DLL Unicode Release|Win32 = DLL Unicode Release|Win32 + DLL Universal Debug|Win32 = DLL Universal Debug|Win32 + DLL Universal Release|Win32 = DLL Universal Release|Win32 + DLL Universal Unicode Debug|Win32 = DLL Universal Unicode Debug|Win32 + DLL Universal Unicode Release|Win32 = DLL Universal Unicode Release|Win32 + Release|Win32 = Release|Win32 + Static ANSI Debug Monolithic|Win32 = Static ANSI Debug Monolithic|Win32 + Static ANSI Debug Multilib|Win32 = Static ANSI Debug Multilib|Win32 + Static ANSI Release Monolithic|Win32 = Static ANSI Release Monolithic|Win32 + Static ANSI Release Multilib|Win32 = Static ANSI Release Multilib|Win32 + Static Unicode Debug Monolithic|Win32 = Static Unicode Debug Monolithic|Win32 + Static Unicode Debug Multilib|Win32 = Static Unicode Debug Multilib|Win32 + Static Unicode Release Monolithic|Win32 = Static Unicode Release Monolithic|Win32 + Static Unicode Release Multilib|Win32 = Static Unicode Release Multilib|Win32 + Template|Win32 = Template|Win32 + Unicode Debug|Win32 = Unicode Debug|Win32 + Unicode Release|Win32 = Unicode Release|Win32 + Universal Debug|Win32 = Universal Debug|Win32 + Universal Release|Win32 = Universal Release|Win32 + Universal Unicode Debug|Win32 = Universal Unicode Debug|Win32 + Universal Unicode Release|Win32 = Universal Unicode Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Debug|Win32.ActiveCfg = Static Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Debug|Win32.Build.0 = Static Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Debug Monolithic|Win32.ActiveCfg = DLL ANSI Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Debug Monolithic|Win32.Build.0 = DLL ANSI Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Debug Multilib|Win32.ActiveCfg = DLL ANSI Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Debug Multilib|Win32.Build.0 = DLL ANSI Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Release Monolithic|Win32.ActiveCfg = DLL ANSI Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Release Monolithic|Win32.Build.0 = DLL ANSI Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Release Multilib|Win32.ActiveCfg = DLL ANSI Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL ANSI Release Multilib|Win32.Build.0 = DLL ANSI Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Debug|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Debug|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Release|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Release|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Debug Monolithic|Win32.ActiveCfg = DLL Unicode Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Debug Monolithic|Win32.Build.0 = DLL Unicode Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Debug Multilib|Win32.ActiveCfg = DLL Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Debug Multilib|Win32.Build.0 = DLL Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Debug|Win32.ActiveCfg = DLL Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Debug|Win32.Build.0 = DLL Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Release Monolithic|Win32.ActiveCfg = DLL Unicode Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Release Monolithic|Win32.Build.0 = DLL Unicode Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Release Multilib|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Release Multilib|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Release|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Unicode Release|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Debug|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Debug|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Release|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Release|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Unicode Debug|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Unicode Debug|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Unicode Release|Win32.ActiveCfg = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.DLL Universal Unicode Release|Win32.Build.0 = DLL Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Release|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Release|Win32.Build.0 = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Debug Monolithic|Win32.ActiveCfg = Static ANSI Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Debug Monolithic|Win32.Build.0 = Static ANSI Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Debug Multilib|Win32.ActiveCfg = Static ANSI Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Debug Multilib|Win32.Build.0 = Static ANSI Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Release Monolithic|Win32.ActiveCfg = Static ANSI Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Release Monolithic|Win32.Build.0 = Static ANSI Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Release Multilib|Win32.ActiveCfg = Static ANSI Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static ANSI Release Multilib|Win32.Build.0 = Static ANSI Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Debug Monolithic|Win32.ActiveCfg = Static Unicode Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Debug Monolithic|Win32.Build.0 = Static Unicode Debug Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Debug Multilib|Win32.ActiveCfg = Static Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Debug Multilib|Win32.Build.0 = Static Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Release Monolithic|Win32.ActiveCfg = Static Unicode Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Release Monolithic|Win32.Build.0 = Static Unicode Release Monolithic|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Release Multilib|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Static Unicode Release Multilib|Win32.Build.0 = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Template|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Template|Win32.Build.0 = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Unicode Debug|Win32.ActiveCfg = Static Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Unicode Debug|Win32.Build.0 = Static Unicode Debug Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Unicode Release|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Unicode Release|Win32.Build.0 = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Debug|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Debug|Win32.Build.0 = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Release|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Release|Win32.Build.0 = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Unicode Debug|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Unicode Debug|Win32.Build.0 = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Unicode Release|Win32.ActiveCfg = Static Unicode Release Multilib|Win32 + {ECA5FC4D-29CE-5030-9175-551834BF6CB0}.Universal Unicode Release|Win32.Build.0 = Static Unicode Release Multilib|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3EF6ACB4-F0B8-4360-9E31-87F7891CCCEE} + EndGlobalSection +EndGlobal diff --git a/libraries/wxSMTP/wxsmtp.vcxproj b/libraries/wxSMTP/wxsmtp.vcxproj new file mode 100644 index 000000000..bfb6f200f --- /dev/null +++ b/libraries/wxSMTP/wxsmtp.vcxproj @@ -0,0 +1,1038 @@ + + + + + DLL ANSI Debug Monolithic + Win32 + + + DLL ANSI Debug Multilib + Win32 + + + DLL ANSI Release Monolithic + Win32 + + + DLL ANSI Release Multilib + Win32 + + + DLL Unicode Debug Monolithic + Win32 + + + DLL Unicode Debug Multilib + Win32 + + + DLL Unicode Release Monolithic + Win32 + + + DLL Unicode Release Multilib + Win32 + + + Static ANSI Debug Monolithic + Win32 + + + Static ANSI Debug Multilib + Win32 + + + Static ANSI Release Monolithic + Win32 + + + Static ANSI Release Multilib + Win32 + + + Static Unicode Debug Monolithic + Win32 + + + Static Unicode Debug Multilib + Win32 + + + Static Unicode Release Monolithic + Win32 + + + Static Unicode Release Multilib + Win32 + + + + + + + + + + + + + + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + false + false + false + false + false + false + false + false + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + + + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + false + false + false + false + false + false + false + false + + + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + false + false + false + false + false + false + false + false + + + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + false + false + false + false + false + false + false + false + + + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + false + false + false + false + false + false + false + false + + + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + false + false + false + false + false + false + false + false + + + + wxsmtp + {ECA5FC4D-29CE-5030-9175-551834BF6CB0} + 10.0.17763.0 + + + + DynamicLibrary + false + Unicode + v141 + + + DynamicLibrary + false + Unicode + v141 + + + DynamicLibrary + false + Unicode + v141 + + + DynamicLibrary + false + Unicode + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + DynamicLibrary + false + v141 + + + StaticLibrary + false + Unicode + v141 + + + StaticLibrary + false + Unicode + v141 + + + StaticLibrary + false + Unicode + v141 + + + StaticLibrary + false + Unicode + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + StaticLibrary + false + v141 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + lib\vc_lib_m\ + obj/lib_m/ + lib\vc_lib\ + obj/lib/ + lib\vc_lib_md\ + obj/lib_md/ + lib\vc_lib_d\ + obj/lib_d/ + lib\vc_lib_um\ + obj/lib_um/ + lib\vc_lib_u\ + obj/lib_u/ + lib\vc_lib_umd\ + obj/lib_umd/ + lib\vc_lib_ud\ + obj/lib_ud/ + lib\vc_dll_m\ + obj/dl_m/ + false + lib\vc_dll\ + obj/dl/ + false + lib\vc_dll_md\ + obj/dl_md/ + true + lib\vc_dll_d\ + obj/dl_d/ + true + lib\vc_dll_um\ + obj/dll_um/ + false + lib\vc_dll_u\ + obj/dl_u/ + false + lib\vc_dll_umd\ + obj/dl_umd\ + true + lib\vc_dll_ud\ + obj/dll_ud/ + true + + + wxsmtp + + + wxsmtp + + + + WIN32;_LIB;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;__WXMSW__;%(PreprocessorDefinitions) + Sync + MultiThreadedDLL + true + obj/lib_m/ + lib\vc_lib_m\wxsmtp.pdb + Level4 + true + + + + + __WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib_m\wxsmtp.lib + true + + + lib\vc_lib_m\wxsmtp.bsc + true + + + + + WIN32;_LIB;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;__WXMSW__;%(PreprocessorDefinitions) + Sync + MultiThreadedDLL + true + obj/lib/ + lib\vc_lib\wxsmtp.pdb + Level4 + true + + + + + __WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib\wxsmtp.lib + true + + + lib\vc_lib\wxsmtp.bsc + true + + + + + WIN32;_LIB;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + true + Sync + EnableFastChecks + MultiThreadedDebugDLL + true + true + obj/lib_md/ + lib\vc_lib_md\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + __WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib_md\wxsmtp.lib + true + + + lib\vc_lib_md\wxsmtp.bsc + true + + + + + WIN32;_LIB;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + true + Sync + EnableFastChecks + MultiThreadedDebugDLL + true + true + obj/lib_d/ + lib\vc_lib_d\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + __WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib_d\wxsmtp.lib + true + + + lib\vc_lib_d\wxsmtp.bsc + true + + + + + WIN32;_LIB;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + Sync + MultiThreadedDLL + true + obj/lib_um/ + lib\vc_lib_um\wxsmtp.pdb + Level4 + true + + + + + _UNICODE;__WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib_um\wxsmtp.lib + true + + + lib\vc_lib_um\wxsmtp.bsc + true + + + + + WIN32;_LIB;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + Sync + MultiThreadedDLL + true + obj/lib_u/ + lib\vc_lib_u\wxsmtp.pdb + Level4 + true + + + + + _UNICODE;__WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib_u\wxsmtp.lib + true + + + lib\vc_lib_u\wxsmtp.bsc + true + + + + + WIN32;_LIB;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + true + Sync + EnableFastChecks + MultiThreadedDebugDLL + true + true + obj/lib_umd/ + lib\vc_lib_umd\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + _UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib_umd\wxsmtp.lib + true + + + lib\vc_lib_umd\wxsmtp.bsc + true + + + + + WIN32;_LIB;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_lib\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_LIB;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + true + Sync + EnableFastChecks + MultiThreadedDebugDLL + true + true + obj/lib_ud/ + lib\vc_lib_ud\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + _UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_lib\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + lib\vc_lib_ud\wxsmtp.lib + true + + + lib\vc_lib_ud\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;__WXMSW__ + Sync + MultiThreaded + true + obj/dl_m/ + lib\vc_dll_m\wxsmtp.pdb + Level4 + true + + + + + WXUSINGDLL;__WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28.lib;wxbase28_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll_m\wxsmtp.dll + lib\vc_dll_m\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + lib\vc_dll_m\wxsmtp.pdb + MachineX86 + + + lib\vc_dll_m\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;__WXMSW__;%(PreprocessorDefinitions) + Sync + MultiThreadedDLL + true + obj/dl/ + lib\vc_dll\wxsmtp.pdb + Level4 + true + + + + + WXUSINGDLL;__WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\msw;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28.lib;wxbase28_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll\wxsmtp.dll + lib\vc_dll\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + lib\vc_dll\wxsmtp.pdb + MachineX86 + + + lib\vc_dll\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + true + Sync + EnableFastChecks + MultiThreadedDebug + true + true + obj/dl_md/ + lib\vc_dll_md\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + WXUSINGDLL;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28d.lib;wxbase28d_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll_md\wxsmtp.dll + lib\vc_dll_md\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + true + lib\vc_dll_md\wxsmtp.pdb + MachineX86 + + + lib\vc_dll_md\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + false + Sync + EnableFastChecks + MultiThreadedDebugDLL + true + true + obj/dl_d/ + lib\vc_dll_d\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + WXUSINGDLL;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\mswd;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28d.lib;wxbase28d_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll_d\wxsmtp.dll + lib\vc_dll_d\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + true + lib\vc_dll_d\wxsmtp.pdb + MachineX86 + + + lib\vc_dll_d\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + Sync + MultiThreadedDLL + true + obj/dll_um/ + lib\vc_dll_um\wxsmtp.pdb + Level4 + true + + + + + WXUSINGDLL;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28.lib;wxmsw28_core.lib;wxbase28_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll_um\wxsmtp.dll + lib\vc_dll\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + lib\vc_dll\wxsmtp.pdb + MachineX86 + + + lib\vc_dll_um\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + MaxSpeed + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + Sync + MultiThreadedDLL + true + obj/dl_u/ + lib\vc_dll_u\wxsmtp.pdb + Level4 + true + + + + + WXUSINGDLL;_UNICODE;__WXMSW__;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\mswu;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28.lib;wxbase28_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll_u\wxsmtp.dll + lib\vc_dll\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + lib\vc_dll\wxsmtp.pdb + MachineX86 + + + lib\vc_dllobj/dl_u/\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + true + Sync + EnableFastChecks + MultiThreadedDebugDLL + true + true + obj/dl_umd\ + lib\vc_dll_umd\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + WXUSINGDLL;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28d.lib;wxbase28d_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll_umd\wxsmtp.dll + lib\vc_dll_umd\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + true + lib\vc_dll_umd\wxsmtp.pdb + MachineX86 + + + lib\vc_dll_umd\wxsmtp.bsc + true + + + + + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + $(WXWIN)\lib\vc_dll\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + Disabled + ..\wx28X\lib\vc_dll\mswd;..\wx28X\include;../include;%(AdditionalIncludeDirectories) + WIN32;_USRDLL;DLL_EXPORTS;WXUSINGDLL;WXMAKINGDLL_SMTP;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + true + Sync + EnableFastChecks + MultiThreadedDebugDLL + true + true + obj/dll_ud/ + lib\vc_dll_ud\wxsmtp.pdb + Level4 + true + ProgramDatabase + + + WXUSINGDLL;_UNICODE;__WXDEBUG__;__WXMSW__;_DEBUG;%(PreprocessorDefinitions) + 0x0409 + $(WXWIN)\lib\vc_dll\mswud;$(WXWIN)\include;..\include;%(AdditionalIncludeDirectories) + + + %(AdditionalOptions) + wxbase28d.lib;wxbase28d_net.lib;kernel32.lib;user32.lib;gdi32.lib;comdlg32.lib;winspool.lib;winmm.lib;shell32.lib;comctl32.lib;ole32.lib;oleaut32.lib;uuid.lib;rpcrt4.lib;advapi32.lib;wsock32.lib;odbc32.lib;%(AdditionalDependencies) + lib\vc_dll_ud\wxsmtp.dll + lib\vc_dll\wxsmtp.lib + true + ..\wx28X\lib\vc_dll;%(AdditionalLibraryDirectories) + true + true + lib\vc_dll_ud\wxsmtp.pdb + MachineX86 + + + lib\vc_dll_ud\wxsmtp.bsc + true + + + + + + \ No newline at end of file diff --git a/libraries/wxSMTP/wxsmtp.vcxproj.filters b/libraries/wxSMTP/wxsmtp.vcxproj.filters new file mode 100644 index 000000000..15bb5b51f --- /dev/null +++ b/libraries/wxSMTP/wxsmtp.vcxproj.filters @@ -0,0 +1,54 @@ + + + + + {0b9dfa36-5e19-4996-99a3-f8db11300859} + + + {14ba8cad-ddd9-476d-ab91-87c47dd00807} + + + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + Headers + + + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + Sources + + + \ No newline at end of file diff --git a/src/ba/ba0100m.h b/src/ba/ba0100m.h new file mode 100644 index 000000000..d82e8e5c3 --- /dev/null +++ b/src/ba/ba0100m.h @@ -0,0 +1,9 @@ +#define F_SERVER 101 +#define F_PORT 102 +#define F_TYPE 103 +#define F_MUSR 104 +#define F_MPWD 105 +#define F_FROM 106 +#define F_RETRY 107 +#define F_FIRM 108 +#define F_CCN 109 \ No newline at end of file