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,如果沒有人主動清理,那么它會永久保存在客戶端。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM