⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpleemailclientx.cpp

📁 email收发软件例子源代码
💻 CPP
字号:
// SimpleEmailClientX.cpp : Implementation of CSimpleEmailClientX
#include "stdafx.h"
#include <comdef.h>
#include "SimpleEmailClient.h"
#include "SimpleEmailClientX.h"
#include "SimpleSMTPClient.h"

/////////////////////////////////////////////////////////////////////////////
// CSimpleEmailClientX

STDMETHODIMP CSimpleEmailClientX::InterfaceSupportsErrorInfo(REFIID riid)
{
	static const IID* arr[] = 
	{
		&IID_ISimpleEmailClientX
	};
	for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
	{
        if (IsEqualGUID((REFGUID)*arr[i],(REFGUID)riid))
			return S_OK;
	}
	return S_FALSE;
}


STDMETHODIMP CSimpleEmailClientX::SendEmail(BSTR BFrom, BSTR BTo, BSTR BSubject, BSTR BBody, BSTR BServerName)
{
    HRESULT hReturnCode = S_OK;
    _bstr_t szFrom = BFrom;
    _bstr_t szTo = BTo;
    _bstr_t szSubject = BSubject;
    _bstr_t szBody = BBody;
    _bstr_t szServerName = BServerName;
    CSimpleSMTPClient oMailClient(szServerName, 25, m_uTimeOut);
    USES_CONVERSION;

    hReturnCode = oMailClient.SendEmail(szFrom, szTo, szSubject, szBody);
    if (FAILED(hReturnCode)) {
        // Build error info object
        ICreateErrorInfo *pcerrinfo = NULL;
        IErrorInfo *perrinfo = NULL;
        HRESULT hr;

        hr = CreateErrorInfo(&pcerrinfo);

        // Fill error info object
        pcerrinfo->SetDescription(T2OLE(oMailClient.GetLastErrorMessage()));
        pcerrinfo->SetSource(T2OLE("Emmanuel.SimpleEmailClientX"));
        pcerrinfo->SetGUID(IID_ISimpleEmailClientX);

        // Set error info object for current thread
        hr = pcerrinfo->QueryInterface(IID_IErrorInfo, (LPVOID FAR*) &perrinfo);
        if (SUCCEEDED(hr))
        {
            SetErrorInfo(0, perrinfo);
            perrinfo->Release();
        }
        pcerrinfo->Release();
    }

	return(hReturnCode);
}

STDMETHODIMP CSimpleEmailClientX::get_TimeOut(long *pVal)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

    if (pVal) {
        *pVal = m_uTimeOut;
    }

	return S_OK;
}

STDMETHODIMP CSimpleEmailClientX::put_TimeOut(long newVal)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState())

    m_uTimeOut = (UINT)newVal;

	return S_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -