关于使用vc发送邮件的问题

rsp19801226 2009-06-01 05:47:56
我试图使用smtp发送邮件,但是却连csocket都连接不上。崩溃了,哪位大哥大姐来救我啊,我没做过网络。最好详细解释一下。顺便讲讲csocket的用法。
...全文
204 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodname 2009-06-04
  • 打赏
  • 举报
回复
MAPI_E_FAILURE == 2

One or more unspecified errors occurred. No message was sent.
goodname 2009-06-04
  • 打赏
  • 举报
回复
MAPI_E_AMBIGUOUS_RECIPIENT == 21

The recipient requested has not been or could not be resolved to a unique address list entry.
chary8088 2009-06-04
  • 打赏
  • 举报
回复
rsp19801226 2009-06-04
  • 打赏
  • 举报
回复
怎么都没人理我呢
rsp19801226 2009-06-02
  • 打赏
  • 举报
回复
感谢大家,我尝试用MAPI,代码如下:
void CTimedsendEmailDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
//OnOK();
HINSTANCE hInstMail;
hInstMail = ::LoadLibrary ( _T("MAPI32.DLL") );
if ( hInstMail == NULL )
{
// 错误处理
return;
}
ULONG (PASCAL *lpfnMAPISendMail) (LHANDLE lhSession,
ULONG ulUIParam, lpMapiMessage lpMessage,
FLAGS flFlags, ULONG ulReserved);
ULONG (PASCAL *lpfnMAPIResolveName) (LHANDLE lhSession,
ULONG ulUIParam, LPTSTR lpszName,
FLAGS ulFlags, ULONG ulReserved,
lpMapiRecipDesc FAR *lppRecip);
ULONG (FAR PASCAL *lpfnMAPILogon)(ULONG ulUIParam,
LPSTR lpszProfileName, LPSTR lpszPassword,
FLAGS flFlags, ULONG ulReserved,
LPLHANDLE lplhSession);
ULONG (FAR PASCAL *lpfnMAPILogoff)(LHANDLE lhSession,
ULONG ulUIParam, FLAGS flFlags,ULONG ulReserved);
ULONG (FAR PASCAL *lpfnMAPIFreeBuffer)(LPVOID lpBuffer);
ULONG (FAR PASCAL *lpfnMAPIAddress)(LHANDLE lhSession,
ULONG ulUIParam, LPSTR lpszCaption,
ULONG nEditFields, LPSTR lpszLabels,
ULONG nRecips, lpMapiRecipDesc lpRecips,
FLAGS flFlags, ULONG ulReserved,
LPULONG lpnNewRecips,
lpMapiRecipDesc FAR *lppNewRecips);
ULONG (FAR PASCAL *lpfnMAPIFindNext)(LHANDLE lhSession,
ULONG ulUIParam, LPSTR lpszMessageType,
LPSTR lpszSeedMessageID, FLAGS flFlags,
ULONG ulReserved, LPSTR lpszMessageID);
ULONG (FAR PASCAL *lpfnMAPIReadMail)(LHANDLE lhSession,
ULONG ulUIParam, LPSTR lpszMessageID,
FLAGS flFlags, ULONG ulReserved,
lpMapiMessage FAR *lppMessage);
(FARPROC&) lpfnMAPISendMail = GetProcAddress(hInstMail,
"MAPISendMail");
(FARPROC&) lpfnMAPIResolveName = GetProcAddress(
hInstMail, "MAPIResolveName");
(FARPROC&) lpfnMAPILogon = GetProcAddress(hInstMail,
"MAPILogon");
(FARPROC&) lpfnMAPILogoff = GetProcAddress(hInstMail,
"MAPILogoff");
(FARPROC&) lpfnMAPIFreeBuffer = GetProcAddress(
hInstMail, "MAPIFreeBuffer");
(FARPROC&) lpfnMAPIAddress = GetProcAddress(hInstMail,
"MAPIAddress");
(FARPROC&) lpfnMAPIFindNext = GetProcAddress(hInstMail,
"MAPIFindNext");
(FARPROC&) lpfnMAPIReadMail = GetProcAddress(hInstMail,
"MAPIReadMail");

LHANDLE lhSession;
ULONG lResult = lpfnMAPILogon( 0, "global\\cninpire",
"密码", MAPI_LOGON_UI , 0, //用new session,lResult 不为0
&lhSession);
if (lResult != SUCCESS_SUCCESS)
//SUCCESS_SUCCESS在MAPI.H中被定义
{
// 错误处理
return;
}

MapiMessage message;
memset(&message, 0, sizeof(message));
message.ulReserved = 0;
message.lpszMessageType = NULL;
char subject[512] = "happy everyday";
message.lpszSubject = subject;
char text[5000] = "maria happy everyday";
message.lpszNoteText = text;
message.flFlags = MAPI_SENT;
message.lpOriginator = NULL;
message.nRecipCount = 1;


lResult = lpfnMAPIResolveName(lhSession, 0, _T("邮箱@yahoo.com.cn"), //这个地方返回21
0, 0, &message.lpRecips);
lResult = lpfnMAPISendMail( lhSession, 0, &message, 0, 0 ); //这个地方返回2

lpfnMAPIFreeBuffer(message.lpRecips);
}

无法发送邮件,我是在域里面,可能有些限制,但是不太明白登陆lpfnMAPILogon已经成功,但是却不能发送邮件,不知道是为什么,请高手指教!
oyljerry 2009-06-01
  • 打赏
  • 举报
回复
看是不是邮件服务器没有返回,以及你是否通过验证等,很多原因,自己分析一下先
blingpro 2009-06-01
  • 打赏
  • 举报
回复
抓包工具抓一下包,看一下怎么封装的
最好还是研究一下smtp协议
na_he 2009-06-01
  • 打赏
  • 举报
回复
哦,一两句将不清楚了
Jurang 2009-06-01
  • 打赏
  • 举报
回复
好好研究一下smtp协议
skyxie 2009-06-01
  • 打赏
  • 举报
回复
或者这个,非COM的

http://www.codeproject.com/KB/tips/CSMTPConnection2.aspx
skyxie 2009-06-01
  • 打赏
  • 举报
回复
直接用socket发邮件,你自己还要做邮件协议的封装,麻烦啊~

看看这个是不是你想要的
Sending Email using MAPI - A COM DLL
http://www.codeproject.com/KB/IP/email.aspx?display=Print

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧