其实只要能通过smtp服务器认证的代码就行,比如通过smtp.21cn.com

解决方案 »

  1.   

    把e-mail贴出来或用短信通知我,我有现成的工程,三种smtp验证都可以,不过也是别人的工程,我自己也做不出来
      

  2.   

    我也要,可以给我一份么?
    [email protected]
      

  3.   

    也给我一份吧,让我学习一下!
    [email protected]
      

  4.   

    你用telnet smtp.21cn.com 110试一下了.
    telnet smtp.21cn.com 110\r\n
    helo client\r\n返回欢迎信息
    auth login\r\n这时候返回base64编码的Username;
    输入用base64编码的用户名\r\n
    返回base64编码的Password
    输入用base64编码的密码\r\n
    返回成功注册或不能login on信息.
    然后就mail from :<>
    rcpt to:<>
    data
    ...
    \r\n.\r\n.
    rfc的文件这儿是中文的doc
    http://www.china-pub.com/computers/eMook/emooknew/rfcdoc/RFC821.doc
      

  5.   

    来一份,谢谢!
    [email protected]
      

  6.   

    楼上帖出e-mail的兄弟,邮件已发出,用这个SMTP类做的工程发的
    请保留类中作者的版权说明,感谢此类的作者 PJ Naughter提供给我们这么大的方便
      

  7.   

    请哪位兄弟能关注一下我的帖子,帮忙解决问题
    http://www.csdn.net/expert/topic/977/977519.xml?temp=.1543085
      

  8.   

    MSVCer(家宝)兄谢谢你的邮件,刚才我自己试了一下这个程序,
    我用smtp.21cn.com做服务器,发邮件到我的21cn邮箱,可是收不到信件,奇怪。
    后来看看代码,发现程序中有一段代码是这样的,
    if (strcmp(Coder.DecodedMessage(), "Username:") == 0)
    {
    Coder.Encode(T2A((LPTSTR)pszUsername));
    sBuf.Format(_T("%s\r\n"), Coder.EncodedMessage());
    pszData = T2A((LPTSTR) (LPCTSTR) sBuf);
    nCmdLength = strlen(pszData);
    if (!m_SMTP.Send(pszData, nCmdLength))

    我觉的这很是奇怪,不一定所有的smtp服务器在AUTH LOGIN 后都是返回base64编码的Username:,也可以是username:啊,
    请问你当时用这个程序发信成功吗?
    在这里再次感谢你的帮助,望继续留意。
      

  9.   

    我是用的etang的smtp服务器发的,其它的没测试过,etang的是auth login验证
      

  10.   

    其实我自己也在写一个邮件收发程序,在发邮件的时候只有pub.guangzhou.gd.cn这个smtp服务器可以发出邮件,但是其他的比如smtp.21cn.com,smtp.163.net等就是发不出去,说我不能通过认证,很奇怪,所以想看看别人的代码如何实现,我曾经以为我得base64编码有问题,可是pub.guangzhou.gd.cn也需要认证,我也可以通过其认证,那我想我得base64应该没有,但是其他的smtp服务器就是认证不通过,
      

  11.   

    可以先用telnet试试啊。先把username和password进行base64编码。看看是程序出错还是base64编码出错。
      

  12.   

    我用telnet试过了,我先用base64编码username和password,让后进行认证,只有pub.guangzhou.gd.cn可以认证通过,其他的如smtp.21cn.com, smtp.163.net都不行,好迷惘啊
      

  13.   

    谢谢 MSVCer(家宝),我先看看,有空联系。