请问 如何发送电子邮件? 小弟想做一个发送电子邮件的小程序,且SMTP服务器需要身份验证。现不知怎么做, 请各位大哥指教阿! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 网上接了个!!!!呵呵 //加载MAPI32.DLL动态库 HMODULE hMod = LoadLibrary("MAPI32.DLL"); if (hMod == NULL) //加载动态库失败 { AfxMessageBox(AFX_IDP_FAILED_MAPI_LOAD); return; } //获取发送邮件的函数地址 ULONG (PASCAL *lpfnSendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG); (FARPROC&)lpfnSendMail = GetProcAddress(hMod, "MAPISendMail"); if (lpfnSendMail == NULL) { AfxMessageBox(AFX_IDP_INVALID_MAPI_DLL); return; } int nFileCount = m_list.GetCount(); //有多少个附件需要发送 //分配内存保存附件信息 不能使用静态数组,因为不知道要发送附件的个数 MapiFileDesc* pFileDesc = (MapiFileDesc*)malloc(sizeof(MapiFileDesc) * nFileCount); memset(pFileDesc,0,sizeof(MapiFileDesc) * nFileCount); //分配内存保存附件文件路径 TCHAR* pTchPath = (TCHAR*)malloc(MAX_PATH * nFileCount); CString szText; for(int i = 0;i < nFileCount;i++) { TCHAR* p = pTchPath + MAX_PATH * i; m_list.GetText(i,szText); strcpy(p,szText); (pFileDesc + i)->nPosition = (ULONG)-1; (pFileDesc + i)->lpszPathName = p; (pFileDesc + i)->lpszFileName = p; } //收件人结构信息 MapiRecipDesc recip; memset(&recip,0,sizeof(MapiRecipDesc)); recip.lpszAddress = m_szEmailMAPI.GetBuffer(0); recip.ulRecipClass = MAPI_TO; //邮件结构信息 MapiMessage message; memset(&message, 0, sizeof(message)); message.nFileCount = nFileCount; //文件个数 message.lpFiles = pFileDesc; //文件信息 message.nRecipCount = 1; //收件人个数 message.lpRecips = &recip; //收件人 message.lpszSubject = m_szSubject.GetBuffer(0); //主题 message.lpszNoteText= m_szText.GetBuffer(0); //正文内容 //保存本程序窗口指针,因为发完邮件后要返回本程序的窗口 CWnd* pParentWnd = CWnd::GetSafeOwner(NULL, NULL); //发送邮件 int nError = lpfnSendMail(0, 0, &message, MAPI_LOGON_UI|MAPI_DIALOG, 0); if (nError != SUCCESS_SUCCESS && nError != MAPI_USER_ABORT && nError != MAPI_E_LOGIN_FAILURE) { AfxMessageBox(AFX_IDP_FAILED_MAPI_SEND); } //返回程序 pParentWnd->SetActiveWindow(); //不要忘了释放分配的内存 free(pFileDesc); free(pTchPath); FreeLibrary(hMod); hehe,谢谢这位大哥阿!我的程序的要求比你说的要简单的多,只要实现发送文本邮件,不需要带附件,而且不需要抄送等功能。谢谢你啦! vc按钮的循环 MFC对话框怎么使用timer定时器控制线程时间,求助 求助:cvRemap运行出错 文件输入的问题。 流动电子警察 --->>关于视频触发问题 求助各位,如何使用《Windows程序设计》,《VC技术内幕》,《MFC windows程序设计》!先看哪本?再看哪本?心急!在线等待! csocket问题 如何知道发送消息的进程? 在MAC 苹果机上用什么编写程序的??? 实在是一无所知,却叫我移植程序,难 小小的问题请问 vc6和vc7的问题(高手指教) 有没连接https的代码啊?
//加载MAPI32.DLL动态库
HMODULE hMod = LoadLibrary("MAPI32.DLL"); if (hMod == NULL) //加载动态库失败
{
AfxMessageBox(AFX_IDP_FAILED_MAPI_LOAD);
return;
} //获取发送邮件的函数地址
ULONG (PASCAL *lpfnSendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG);
(FARPROC&)lpfnSendMail = GetProcAddress(hMod, "MAPISendMail"); if (lpfnSendMail == NULL)
{
AfxMessageBox(AFX_IDP_INVALID_MAPI_DLL);
return;
} int nFileCount = m_list.GetCount(); //有多少个附件需要发送 //分配内存保存附件信息 不能使用静态数组,因为不知道要发送附件的个数
MapiFileDesc* pFileDesc = (MapiFileDesc*)malloc(sizeof(MapiFileDesc) * nFileCount);
memset(pFileDesc,0,sizeof(MapiFileDesc) * nFileCount); //分配内存保存附件文件路径
TCHAR* pTchPath = (TCHAR*)malloc(MAX_PATH * nFileCount); CString szText;
for(int i = 0;i < nFileCount;i++)
{
TCHAR* p = pTchPath + MAX_PATH * i;
m_list.GetText(i,szText);
strcpy(p,szText); (pFileDesc + i)->nPosition = (ULONG)-1;
(pFileDesc + i)->lpszPathName = p;
(pFileDesc + i)->lpszFileName = p;
} //收件人结构信息
MapiRecipDesc recip;
memset(&recip,0,sizeof(MapiRecipDesc));
recip.lpszAddress = m_szEmailMAPI.GetBuffer(0);
recip.ulRecipClass = MAPI_TO; //邮件结构信息
MapiMessage message;
memset(&message, 0, sizeof(message));
message.nFileCount = nFileCount; //文件个数
message.lpFiles = pFileDesc; //文件信息
message.nRecipCount = 1; //收件人个数
message.lpRecips = &recip; //收件人
message.lpszSubject = m_szSubject.GetBuffer(0); //主题
message.lpszNoteText= m_szText.GetBuffer(0); //正文内容 //保存本程序窗口指针,因为发完邮件后要返回本程序的窗口
CWnd* pParentWnd = CWnd::GetSafeOwner(NULL, NULL); //发送邮件
int nError = lpfnSendMail(0, 0,
&message, MAPI_LOGON_UI|MAPI_DIALOG, 0); if (nError != SUCCESS_SUCCESS && nError != MAPI_USER_ABORT
&& nError != MAPI_E_LOGIN_FAILURE)
{
AfxMessageBox(AFX_IDP_FAILED_MAPI_SEND);
} //返回程序
pParentWnd->SetActiveWindow(); //不要忘了释放分配的内存
free(pFileDesc);
free(pTchPath);
FreeLibrary(hMod);
我的程序的要求比你说的要简单的多,只要实现发送文本邮件,不需要带附件,而且不需要抄送等功能。
谢谢你啦!