Multiple mail attachment - PhoneGap

后端 未结 2 1507
鱼传尺愫
鱼传尺愫 2021-01-27 14:16

Hi i am doing an app in phonegap which need to have multiple attachment but i am unable to have multiple attachment. Any solution for this. My code are as below:



        
相关标签:
2条回答
  • 2021-01-27 14:29

    The error is in the line

    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body));
    

    The problem is that HTML.fromHtml(body) returns a android.text.SpannableStringBuilder which cannot be casted to java.util.ArrayList. Try to replace that line of code with

    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(body).toString());
    

    or with

    ArrayList<String> list = new ArrayList<String>();
    list.add(Html.fromHtml(body).toString());
    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, list);
    
    0 讨论(0)
  • 2021-01-27 14:37

    Ok, I didn't had to under go any edit as per the link i got when googled. I just had some typos and path mistake.

    My code is as follow:

    <html>
    <head>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8" src="emailcomposer.js"></script>
    <script type="text/javascript">
        document.addEventListener("deviceready", deviceready, true);
                function deviceready() {
                    console.log("Device ready");
                }
    
                function composeText(){
                    var attachPath; 
                    var attachFile= new Array();
                        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {
                        fileSystem.root.getDirectory("MyAppFolder", {
                            create: true
                        }, 
            function(directory) {
                console.log("Final 63" + directory.fullPath);
                attachPaths = directory.fullPath;
                var attachPath=attachPaths.slice(7,attachPaths.length);
                var directoryReader = directory.createReader();
                directoryReader.readEntries(function(entries) {
                    var i;
                    for (i=0; i<entries.length; i++) {
                        console.log(entries[i].name);
    attachFile[i] =attachPath + "/" + entries[i].name;
                                }
                                console.log(attachFile);
                            }, 
                            function (error) {
                                alert(error.code);
                            });
    
                        });
                    }, function(error) {
            alert("can't even get the file system: " + error.code);
                    });
            var dated, fnamed, phoned, emailed;
         if(typeof(Storage)!=="undefined")
      {
      dated = localStorage.date;
      fnamed = localStorage.fname;
      phoned = localStorage.phone;
      emailed= localStorage.email;
     }
    
    var vehiclemileage = document.getElementById('vehiclemileage').value;
    var vehiclemodel = document.getElementById('vehiclemodel').value;
    var message1 = document.getElementById('message_body').value;
    var vechicleyear = document.getElementById("yeardropdown");
    var strUser = vechicleyear.options[vechicleyear.selectedIndex].value;
    var vehiclemake = document.getElementById("vehiclemake");
    var makevehicle = vehiclemake.options[vehiclemake.selectedIndex].value;
    console.log(attachFile);
    
    var newattachment = attachFile.toString();
                        window.plugins.emailComposer.showEmailComposerWithCallback(null,
                        "Get an Estimate",
                         "Date" + dated + "First Name " + fnamed + "Phone Number" + phoned + "Email Address" + emailed +  "Year of Vehicle" + strUser + "Make of Vehicle" + makevehicle +  "Model of Vehicle " + " " + vehiclemodel +  
                         "Mileage of Vehicle " + " " + vehiclemileage + message1,
                        ["sth@sth.com"],
                        [],
                        [],
                        true,
                        attachFile
                        );
                    //Clear LoccalStorage
                    localStorage.clear();
                //exit the app after clicking this button
                //navigator.app.exitApp();
                // navigator.camera.cleanup(onSuccess,fail);
                // function onSuccess(){
                // }
                // function fail(){
                // }
            }
    
            function onFail(message) {
                alert('Failed because: ' + message);
            }
    
        /***********************************************
        * Drop Down Date select script- by JavaScriptKit.com
        * This notice MUST stay intact for use
        * Visit JavaScript Kit at http://www.javascriptkit.com/ for this script and more
        ***********************************************/
    
        function populatedropdown(yearfield){
            var today=new Date()
            var yearfield=document.getElementById(yearfield)
            for (var i=0; i<31; i++)
                //Select Year
        var thisyear=today.getFullYear()
        for (var y=0; y<25; y++){
            yearfield.options[y]=new Option(thisyear, thisyear)
            thisyear-=1
        }
        yearfield.options[0]=new Option(today.getFullYear(), today.getFullYear(), true, true) //select today's year
        }
        </script>
    
        </head>
        <body>
            <div class="wrapper">
                <h1>Get a Repair Estimate</h1>
                <div class="main-content">
        <p>Please Enter the Year, Make, Model and Mileage of Your Vehicle and any other information we should know.
    </p>
    <form class="vehicle-detail-form">
        <ul>
            <li>
            <label>Year of Vehicle: </label>
            <form action="" name="someform">
                            <select id="yeardropdown">
                            </select> 
                        </form>
    
                        <script type="text/javascript">
    
        //populatedropdown(id_of_day_select, id_of_month_select, id_of_year_select)
        window.onload=function(){
            populatedropdown("yeardropdown")
        }
        </script>
                        </li>
                        <!-- Vehicle Year Selection -->
    
    
        <li><label>Make of Vehicle:</label>
    
        <!-- Model of Vehicle Selection -->
    
    
        </li>
        <li><label>Model of Vehicle:</label>
        <input type="text" name="vehiclemodel" id = "vehiclemodel">
        </li>
        <li><label>Mileage of Vehicle:</label>
        <input type="number" name="vehiclemileage" id = "vehiclemileage"></li>
        <li>
            <textarea  name="message_body" id = 'message_body'  placeholder="Add Notes here(if any)"></textarea>
        </li>
        </form>
        <div style="clear:both;"></div>
        <div class="large-button-wrapper">
        <button onclick="composeText();">Get Your Estimate</button>
        </div>  
        </div>
        </div>
        </body>
        </html>
    
        <!-- -->
    
    0 讨论(0)
提交回复
热议问题