mail: [email protected]
解决方案 »
- LPSTR、LPCSTR、LPTSTR、LPCTSTR的区别
- MFC中建立动态坐标系 在线等!
- 键盘 vk 值
- 程序在任务管理器中可以看到,但是无法加载界面,可能是什么问题?
- 查错--一个编译不过去的dll项目
- 如何在CListCtr中设置某一行的文本颜色
- 求字符串加密源码,100分。
- 请教如何使用画椭圆函数ellipse-----请春节大散分!!!!!!!!!!!!
- 用.net 能开发出 win32 应用程序么?
- 谁能给我一个ISAPI中连接、打开数据库,并进行追加、删除、编辑记录的功能范例??100分!!!
- 大家有看过the c++ programming language (special edition)英文版的吗?我觉得这本书巨烂!大家进来讨论讨论!
- 怎样在自己生成的函数里调用系统的(lpszPathName)参数?
//
//////////////////////////////////////////////////////////////////////#if !defined(AFX_AUTHSMTP_H__FC092A06_E5D1_4CDD_A92E_9DF621BD309A__INCLUDED_)
#define AFX_AUTHSMTP_H__FC092A06_E5D1_4CDD_A92E_9DF621BD309A__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000class CAuthSMTP
{
public:
BOOL DisConnect();
BOOL SendEmail(CString Subject,CString Body);
BOOL FromTo(CString mailFrom,CString mailTo);
BOOL Authent(CString mailUser,CString mailPwd);
BOOL Connect(CString SMTPHost);
CAuthSMTP();
virtual ~CAuthSMTP();private:
CSocket m_sock;
public:
CString m_info[10];
int m_num;
};#endif // !defined(AFX_AUTHSMTP_H__FC092A06_E5D1_4CDD_A92E_9DF621BD309A__INCLUDED_)// AuthSMTP.cpp: implementation of the CAuthSMTP class.
//
//////////////////////////////////////////////////////////////////////#include "stdafx.h"
个人编写的一个认证smtp类#include "sendmail.h"
#include "AuthSMTP.h"#include "base64.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////CAuthSMTP::CAuthSMTP()
{
m_sock.Create();
m_num=0;
}CAuthSMTP::~CAuthSMTP()
{
m_sock.Close();
}BOOL CAuthSMTP::Connect(CString SMTPHost)
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0'; m_sock.Connect((LPCTSTR)SMTPHost,25);
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; CString strSend=_T("EHLO 163.com\r\n");
for (i=0;i < 512;i++)
buf[i]='\0';
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf;
return TRUE;
}BOOL CAuthSMTP::Authent(CString mailUser, CString mailPwd)
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0'; CString strSend=_T("AUTH LOGIN\r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; CBase64 cb;
CString strAuth = mailUser;
char chTemp[1024];
ZeroMemory(chTemp, 1024);
CString strEncode = cb.Encode(strAuth.GetBuffer(0), strAuth.GetLength());
//strEncode就为加密后的密文
sprintf(chTemp, "%s\r\n", strEncode);
strAuth.ReleaseBuffer();
strSend.Format(_T("%s\r\n"),strEncode);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; strAuth = mailPwd;
ZeroMemory(chTemp, 1024);
strEncode = cb.Encode(strAuth.GetBuffer(0), strAuth.GetLength());
//strEncode就为加密后的密文
sprintf(chTemp, "%s\r\n", strEncode);
strAuth.ReleaseBuffer();
strSend.Format(_T("%s\r\n"),strEncode);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; return TRUE;
}BOOL CAuthSMTP::FromTo(CString mailFrom, CString mailTo)
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0';
CString strSend;
strSend.Format(_T("MAIL FROM:<%s>\r\n"),mailFrom);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; for (i=0;i < 512;i++)
buf[i]='\0';
strSend.Format(_T("RCPT TO:<%s>\r\n"),mailTo);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; return TRUE;
}BOOL CAuthSMTP::SendEmail(CString Subject,CString Body)
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0';
CString strSend=_T("DATA\r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; strSend.Format(_T("SUBJECT:<%s>\r\n"),Subject);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength()); strSend.Format(_T("<%s>\r\n"),Body);
m_sock.Send((LPCTSTR)strSend,strSend.GetLength()); for (i=0;i < 512;i++)
buf[i]='\0';
strSend=_T(".\r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; return TRUE;
}BOOL CAuthSMTP::DisConnect()
{
char buf [1000];
for (int i=0;i < 512;i++)
buf[i]='\0';
CString strSend=_T("QUIT \r\n");
m_sock.Send((LPCTSTR)strSend,strSend.GetLength());
m_sock.Receive(buf, sizeof(buf));
m_info[m_num++]=buf; return TRUE;
}