请教MFC网络编程的邮件收发的问题

波波仔86 清华大学 程序员  2012-12-26 09:34:15
我遇到三个问题,第一个连不上服务器:


//添加配置消息
void CMyDlg::OnPeizhi()
{
// TODO: Add your control notification handler code here
set.DoModal(); //调用设置对话框
if(set.m_port>0&&set.m_port<100)
{
if(set.m_serveradd!=" ") //判断ip地址不能为空
{
addr.sin_family=AF_INET; //为地址结构中的成员变量赋值
addr.sin_port=htons(set.m_port); //为端口号赋值
addr.sin_addr.S_un.S_addr=inet_addr(set.m_serveradd.GetBuffer(1));
//将主机字节顺序的ip地址转换为网络字节顺序
s=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //创建套接字
if(connect(s,(sockaddr*) &addr,sizeof(addr)) ) //如果绑定成功
{
::SendMessage(statu,SB_SETTEXT,0,(long)"SMPT 服务器信息设置成功并已经连接服务器!");
GetDlgItem(IDC_SENDER)->EnableWindow(true);
GetDlgItem(IDC_RECVER)->EnableWindow(true);
GetDlgItem(IDC_SUBJECT)->EnableWindow(true);
GetDlgItem(IDC_SENDMAIL)->EnableWindow(true);
GetDlgItem(IDC_RECVMAIL)->EnableWindow(true);
GetDlgItem(IDC_MAILTEXT)->EnableWindow(true);
GetDlgItem(IDC_SENDER)->SetWindowText(" ");
}
else
{
MessageBox("请检查网络连接并重新配置服务器信息!");
}
/*
//改变按钮的状态
GetDlgItem(IDC_SENDER)->EnableWindow(true);
GetDlgItem(IDC_RECVER)->EnableWindow(true);
GetDlgItem(IDC_SUBJECT)->EnableWindow(true);
GetDlgItem(IDC_SENDMAIL)->EnableWindow(true);
GetDlgItem(IDC_RECVMAIL)->EnableWindow(true);
GetDlgItem(IDC_MAILTEXT)->EnableWindow(true);
GetDlgItem(IDC_SENDER)->SetWindowText(" ");
::SendMessage(statu,SB_SETTEXT,0,(long)"SMTP服务器设置成功并已经连接服务器!");
MessageBox("服务器的地址不能为空!"); //这个地方有问题,当服务器的地址为空的时候,但是输不出来
*/
}
else
{
MessageBox("服务器的地址不能为空!");
}
}
else
{
MessageBox("端口号的范围在(0~100)之间!");
}

//这个地方有错误可能服务器没有启动起来

char buf[4];
recv(s,buf,4,0); //接收响应的数据
if(atoi(buf)==121) //比较响应数据
{
MessageBox("服务器准备就绪!");
}
else
{
MessageBox("服务器启动服务失败!");
}

}
我用我的电脑输入 ping mail.163.com,返回的ip地址是121开头,而书上给的220,我都试过,还是连不上,端口号是25.


第二个问题就,在密码编记框中输入的还是明文不像*********这样,该怎么设置呢??

第三个就是以“enter”键结束输入密码
if(i>3)
{
CString str;

this->GetWindowText(str); //获取编辑框中的内容

// this->SetPasswordChar(*);
//m_pass.SetPassword(*); 密码没有实现隐藏的功能
//m_pass.SetPasswordChar('*');
if(str.Find("\n")) //以回车键输入结束,这个地方错误
{

}

GetDlgItem(IDC_RECV)->EnableWindow(true);

GetDlgItem(IDC_NEXT)->EnableWindow(true);

}
else
{
i+=1;
}
}

但是我一按enter键,对话框就结束了,再按又出来了。
...全文
107 点赞 收藏 1
写回复
1 条回复
jixiang1983 2012年12月26日
引用 楼主 bobozai86 的回复:
本帖最后由 oyljerry 于 2012-12-26 22:28:20 编辑 第二个问题就,在密码编记框中输入的还是明文不像*********这样,该怎么设置呢??
VC里的EDIT BOX 框属性里有个选项为password,将其勾上,再看你的输入,就变成了××
回复 点赞
发动态
发帖子
网络编程
创建于2007-09-28

7880

社区成员

6.4w+

社区内容

VC/MFC 网络编程
社区公告
暂无公告