zoukankan      html  css  js  c++  java
  • js发送邮件

    项目里有一个发送邮件的需求,我从网上找了几种方法,列举如下:

      

     1.

    <a href="mailto:test@163.com;test1@163.com?CC=test@163.com&BCC=test@163.com&Subject=Hello&Body=你好">给我发邮件</a>

      2.

    <button type="button" id="email">发送邮件</button>
    <script type="text/javascript">
        $(document).on("click", "#email", function () {
             document.location = "Mailto:me@home.com?subject=Feedback; 
    //经过测试这个方法不成功
        });
    
    </script>

     3.

    <form name="frmEmailOutLook" action="" method="post" enctype="text/plain"> 
      <input type="hidden" name="message" value=""> 
    </form> 
    <form name="frmEmail" action="" method="post"> 
    姓名:<input type="text" name="name" value="a"><BR> 
    电话:<input type="text" name="phone" value="b"><BR> 
    网址:<input type="text" name="website" value="c"><BR> 
    主题:<input type="text" name="subject" value="d"><BR> 
    内容:<textarea name="message" >ee 
    ddd</textarea><BR> 
    <input type="button" name="send" value="send" onClick="toOutLook()"> 
    </form> 
    <script language="javascript">... 
    function toOutLook()...{ 
       var objFrm = document.frmEmail; 
        var objFrmOutLook = document.frmEmailOutLook; 
        var msg = ""; 
        msg += "姓名: " + objFrm.name.value + "  "; 
        msg += "电话: " + objFrm.phone.value + "  "; 
        msg += "网址: " + objFrm.website.value + "  "; 
        msg += "主题: " + objFrm.subject.value + "  "; 
        msg += "内容: " + objFrm.message.value + "  "; 
        objFrmOutLook.message.value = msg; 
        objFrmOutLook.action = "mailto:sundysea@hotmail.com?subject=" + objFrm.subject.value; 
        objFrmOutLook.submit(); 
    } 
    </script> 

    不过这个方法有几个问题:1.邮件的body是type=hideen的value值,并且显示的是message=.....,message是type=hideen的name,如果将name="message"换成

    name="Content",那body的显示内容就变成了Content=.........。

    2.如果内容里写的是汉字,那么在outlook里显示时就会乱码

    最后我改良了这个代码,不用form进行发送邮件。
    <div class="commonemail_Wrap">
           <!-- <form  name="frmEmailOutLook" action="" method="post" enctype="text/plain">
                <input type="hidden" name="message" value=""/>
            </form>-->
            <!--<form name="frmEmail" action="" method="post">
                <div><label>收件人</label><input type="text" name="website"  /></div>
                <div><label>主题</label><input type="text"  name="subject"/></div>
                <div><label class="unique">内容</label><textarea  rows="4"   name="message"></textarea></div>
                <input type="button" name="send" value="发送邮件" id="SendEmai"/>
            </form>-->
            <div>
                <div><label>收件人</label><input type="text" name="website" id="test1" /></div>
                <div><label>主题</label><input type="text"  id="test2" name="subject"/></div>
                <div><label class="unique">内容</label><textarea  rows="4"   id="test3" name="message"></textarea></div>
                <!--<input type="button" name="send" value="发送邮件" id="SendEmail"/>-->
                <a href="" id="SendEmail">发送邮件</a>
            </div>
        </div>
    <script type="text/javascript">
            $(document).on("click", "#SendEmail", function () {
    
                var website = document.getElementById("test1").value;
                var subject = document.getElementById("test2").value;
                var body = document.getElementById("test3").value;
                var url = "mailto:" + website + "?subject=" + subject + "&body=" + body;
                document.getElementById("SendEmai").setAttribute("href", url);
             //return fasle;
            });
    </script>

     不过第三种方法的两个不同的方式,还有些地方不同:用form发送邮件不会出现自己outlook中的固定模板,但用a发送邮件的话会出现那种模板

    2014/01/10新增加的内容

    项目里发送邮件功能要求把receiver、subject、body都写好,操作者不需要不断地填写信息,这个功能容易实现,思路是写一个保存发送邮件信息的XML文件,用Xml Dom读取XML里的数据,并且把数据赋给text框。这个功能做好后又要求能够编辑receiver、subject、body信息,并且保存下来。

    开始我一直以为把修改后的数据直接赋给XMl节点的nodeValue,然后用XMlDoc.save("message.xml"); ,但是XMlDoc没有save()方法,并且查找资料说js能够读取XMl文件,但是不能修改。即使修改了某个节点的nodeValue,也只是存在于客户端内存,实际的XMl文件没有任何变化。还有人说用FSO能够修改XML文件,但是FSO是IE的ActiveXObject对象里的属性,这种方法我不想用,也没有试试,不知道实际的结果到底是什么样的!

    后来和组长说了这个问题,他说这个功能是我理解错误,XML文件当然是不能操作的,浏览器向服务器发送请求,XMl文件在服务器的硬盘里,浏览器禁止跨域操作。应该把修改的receiver、subject、body信息保存到本地,对客户进行个性化定制。如果他换了一台电脑或者浏览器,就显示原始的XMl信息。

    天啊,原来是这样啊!我理解错了.................

    最后我是把修改的receiver、subject、body信息保存到localStorage,如果没有人主动清理,那么它会永久保存在客户端。

  • 相关阅读:
    TCP Socket服务器编程[转文]
    http协议学习和总结系列[转 ]
    linux C函数大全
    HTTP 协议详解
    Pthread 多线程总结
    linux 中解析命令行参数 (getopt_long用法)
    微软企业库4.1学习笔记(十八)缓存模块6 缓存的设计目的
    微软企业库4.1学习笔记(十七)缓存模块5 缓存的典型用法
    进程和线程的区别
    C#二叉树遍历算法实现浅析
  • 原文地址:https://www.cnblogs.com/xiang1336/p/3499316.html
Copyright © 2011-2022 走看看