上学期寒假的一个小test,才让我明白电子邮件的发件人并不一定是真正的发件邮箱,这种邮箱地址是可以进行伪造的。JMail是一个dll库,这个动态链接库提供了基本上所有电子邮件所需要的功能。

不多废话,直接上代码。

    #import "c:\windows\system32\jmail.dll"
    #include <iostream>
    void main()
    {
        CoInitialize(NULL);
        jmail::IMessagePtr pMessage("JMail.Message"); 
        // 发件人邮箱 
        pMessage->From = "admin@example.com"; 
        // 发件人姓名
        pMessage->FromName = "管理员"; 
        // 添加收件人1, 无收件人姓名与PGP KEY 
        pMessage->AddRecipient("somebody@example.com","",""); 
        // 优先级设置,1-5逐次降低, 3为中级 
        pMessage->Priority = 3; 
        // 编码方式设置, 默认是iso-8859-1 
        pMessage->Charset = "GB2312"; 
        // 主题 
        pMessage->Subject = "您的账户即将冻结"; 
        // 正文 
        pMessage->Body = "你好,由于您最近的行为比较2,Example公司决定将您的qq账号冻结0x2B天。如有异议,请致件 0x2b@0x2b.com.cn 咨询。\r\n"; 
        // 如有必要,可以再添加一些正文 
        pMessage->AppendText(""); 
        //// 添加附件 
        //pMessage->AddAttachment("C://CONFIG.SYS", VARIANT_FALSE, "application/octet-stream"); 
        //pMessage->AddAttachment("C://test.gif", VARIANT_TRUE, "image/gif"); 
        pMessage->MailServerUserName="abc";
        pMessage->MailServerPassWord="abc";
        // 开始发送 
        pMessage->Send("", VARIANT_FALSE);
        CoInitialize(NULL);
    }

以上代码是测试代码,只要电脑中安装了JMail插件即可执行这段代码。代码的执行效果是 somebody@example.com邮箱中真的会接收到一封来自admin@example.com的信件!当然高级一点的邮箱会直接把这封信件放到废件箱里。这样的一封邮件应该说迷惑性是相当大的,因为可以任意伪造发件人信箱,所以还是需要多多注意啊。

至于原理还不是很透彻,希望以后能够学习得到。