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

📄 hwsmtp.h

📁 邮件终端发送程序
💻 H
字号:
// HwSMTP.h: interface for the CHwSMTP class.
//
//////////////////////////////////////////////////////////////////////

/*******************************************************************
		说明
	1、这是我自己写的一个利用SMTP服务器发送邮件的类,可以实现附件的
发送。
	2、在 InitInstance() 函数调用 
	if (!AfxSocketInit())
	{
		AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
		return FALSE;
	}
	在 ExitInstance () 中调用 ::WSACleanup ();
*******************************************************************/

/****************************************************************************************************************
投稿说明:
****************************************************************************************************************/
#define NOTE_SpeedPostMail \
_T("\
			【软件名称】\r\n\
	无须SMTP服务器中转直接将E-Mail电子邮件发送到对方邮箱\r\n\
			【版    本】\r\n\
	1.0.0\r\n\
			【操作系统】\r\n\
	Windows 桌面系列\r\n\
			【作    者】\r\n\
	谢红伟 · chrys · chrys@163.com · http://www.viction.net\r\n\
			【软件说明】\r\n\
	大家一定熟悉Foxmail中的“特快专递”,它能直接将邮件发送到对方的邮件服务器中,而不需要经过SMTP服务器中转,\
本代码将向你剖析“特快专递”发送电子邮件的方法。代码中提供了网卡信息获取类,可以获取本机IP地址、子网掩码、DNS、\
Wins、网卡MAC地址等相关信息;还提供了SMTP协议解析类,该类实现了SMTP客户端功能的实现类,实现电子邮件收发;Base64编码实现\
了字符编码的方法。\r\n\
	你可以任意修改复制本代码,但请保留这段文字不要修改。\r\n\
	希望我能为中国的软件行业尽一份薄力!\r\n\
			【开发日期】\r\n\
	2008-11-23 3:54\r\n")

#include <afxsock.h>

#if !defined(AFX_HwSMTP_H__633A52B7_1CBE_41D7_BDA3_188D98D692AF__INCLUDED_)
#define AFX_HwSMTP_H__633A52B7_1CBE_41D7_BDA3_188D98D692AF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CHwSMTP  
{
public:
	CString GetLastErrorText();
	BOOL SendEmail (
		LPCTSTR lpszSmtpSrvHost,
		LPCTSTR lpszUserName,
		LPCTSTR lpszPasswd,
		BOOL bMustAuth,
		LPCTSTR lpszAddrFrom,
		LPCTSTR lpszAddrTo,
		LPCTSTR lpszSenderName,
		LPCTSTR lpszReceiverName,
		LPCTSTR lpszSubject,
		LPCTSTR lpszBody,
		LPCTSTR lpszCharSet,						// 字符集类型,例如:繁体中文这里应输入"big5",简体中文时输入"gb2312"
		CStringArray *pStrAryAttach=NULL,
		CStringArray *pStrAryCC=NULL,
		UINT nSmtpSrvPort=25
		);
	CHwSMTP();
	virtual ~CHwSMTP();

private:
	BOOL SendSubject();
	CStringArray m_StrAryCC;
	BOOL SendHead();
	BOOL auth();
	BOOL SendEmail();
	BOOL Send ( LPCTSTR lpszData, ... );
	BOOL GetResponse( LPCTSTR lpszVerifyCode, int *pnCode=NULL );
	BOOL m_bConnected;
	CSocket m_SendSock;
	CStringArray m_StrAryAttach;
	CString m_csSmtpSrvHost;
	CString m_csUserName;
	CString m_csPasswd;
	CString m_csAddrFrom;
	CString m_csAddrTo;
	CString m_csSenderName;
	CString m_csReceiverName;
	CString m_csSubject;
	CString m_csBody;
private:
	BOOL m_bMustAuth;
	UINT m_nSmtpSrvPort;
	CString m_csCharSet;

	CString m_csLastError;
	BOOL SendOnAttach(LPCTSTR lpszFileName);
	BOOL SendAttach();
	BOOL SendBody();
	CString m_csMIMEContentType;
	CString m_csPartBoundary;
	CString m_csNoMIMEText;

};

BOOL SendEmail (
				  BOOL bViaThreadSend,						// FALSE - 直接发送, TRUE - 在线程中发送,返回线程句柄
				  LPCTSTR lpszSmtpSrvHost,					// SMTP 服务器,如:smtp.21cn.com
				  LPCTSTR lpszUserName,						// 登录服务器验证身份的用户名
				  LPCTSTR lpszPasswd,						// 登录服务器验证身份的密码
				  BOOL bMustAuth,							// SMTP 服务器需要身份验证
				  LPCTSTR lpszAddrFrom,						// 发送者 E-Mail 地址
				  LPCTSTR lpszAddrTo,						// 接收者的 E-Mail 地址
				  LPCTSTR lpszSenderName,					// 发送者的名字,例如:谢红伟
				  LPCTSTR lpszReceiverName,					// 接收者的名字,例如:张飞
				  LPCTSTR lpszSubject,						// 邮件主题
				  LPCTSTR lpszBody,							// 邮件内容
				  LPCTSTR lpszCharSet=NULL,					// 字符集类型,例如:繁体中文这里应输入"big5",简体中文时输入"gb2312"
				  CStringArray *pStrAryAttach=NULL,			// 附件文件路径,可以多个
				  CStringArray *pStrAryCC=NULL,				// 抄送 E-Mail 地址,可以多个
				  UINT nSmtpSrvPort=25						// SMTP 服务器的 TCP 端口号
				  );
void EndOfSMTP ();

#endif // !defined(AFX_HwSMTP_H__633A52B7_1CBE_41D7_BDA3_188D98D692AF__INCLUDED_)

⌨️ 快捷键说明

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