0

我是电话间隙的新手,正在开发一个适用于 Android 和 IOS 的应用程序。现在,我的要求是我想发送带有附件的电子邮件,所以我在互联网上搜索并找到了这个插件,EmailComposer-phonegap-plugin。他们在下面写了4点。

  1. 将 EmailComposer.h EmailComposer.m 文件添加到您的插件文件夹。
  2. 将 EmailComposer.js 文件放在 www 文件夹中的某个位置,并从 HTML 中包含它。
  3. 添加到 config.xml 下的 plugins: 或者,如果使用新格式,

    <feature name="EmailComposer"> <param name="ios-package" value="EmailComposer" /> </feature>
    
  4. 在 android 上,在 value 属性中一定要包含包名,例如

    value="org.apache.cordova.EmailComposer"
    

现在我的问题是如何使用这个插件?我完成了第 2 点,但不知道将文件作为第 1 点放置在哪里?因为我不知道我的“插件”文件夹在哪里。以及如何处理第 3 点和第 4 点?

我也在互联网上找到了这个代码。但“附加文件”警报不起作用。

var smallImage = document.getElementById('smallImage').value
alert("Send Mail");
window.plugins.emailComposer.showEmailComposer(
        "Send Images",
        smallImage,
        ["test@email.com",],
        [],
        [],
        true,
        ["image.jpeg", "file.zip"],
        alert("Attach file");
    );
    alert("Send Mail Success");

那么,我必须做些什么才能成功发送附件邮件?

4

1 回答 1

0

试试这个它对我的工作......

索引.html

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <meta name="format-detection" content="telephone=no" />
            <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

            <title>Hello World</title>
        </head>
        <body>

            <script type="text/javascript" src="phonegap.js"></script>
            <script type="text/javascript" src="js/EmailComposer.js"></script>  

             <script type="text/javascript">            
             document.addEventListener("deviceready",onDeviceReady,false);
                function onDeviceReady() {


                            cordova.require('cordova/plugin/emailcomposer').showEmailComposer(
                                function() { console.log( 'successfully called email composer' ); },
                                function() { console.log( 'failed to call email composer' ); },
                                "Look at this photo",
                                "Take a look at this:",
                                 ["amitd.prajapati@test.com"],
                                 [],
                                 [],
                                false,
                                ["/mnt/sdcard/amit/amit.png","/mnt/sdcard/amit/amit.png","/mnt/sdcard/amit/amit.png","/mnt/sdcard/amit/amit.png","/mnt/sdcard/amit/amit.png"]
                            );
                        }

             </script>
        </body>
    </html>

电子邮件作曲家.js

    cordova.define("cordova/plugin/emailcomposer", function(require, exports, module) {
        var exec = require('cordova/exec');

        var EmailComposer = function() {
            this.resultCallback = null; // Function
        };

        EmailComposer.ComposeResultType = {
            Cancelled:0,
            Saved:1,
            Sent:2,
            Failed:3,
            NotSent:4
        }


        // showEmailComposer : all args optional
        EmailComposer.prototype.showEmailComposer = function(successCallback,failureCallback,subject,body,toRecipients,ccRecipients,bccRecipients,bIsHTML,attachments) {
        console.log("showEmailComposer()");
        var args = {};
        if(toRecipients)
            args.toRecipients = toRecipients;
        if(ccRecipients)
            args.ccRecipients = ccRecipients;
        if(bccRecipients)
            args.bccRecipients = bccRecipients;
        if(subject)
            args.subject = subject;
        if(body)
            args.body = body;
        if(bIsHTML)
            args.bIsHTML = bIsHTML;
        if(attachments)
            args.attachments = attachments;

        cordova.exec(successCallback, failureCallback, "EmailComposer", "showEmailComposer", [args]);
    }


        var emailcomposer = new EmailComposer();
        module.exports = emailcomposer;
    });

电子邮件作曲家.java

    package com.inic.emailattacher.emailcomposser;

    import java.io.File;
    import java.util.ArrayList;

    import org.apache.cordova.CallbackContext;
    import org.apache.cordova.CordovaPlugin;
    import org.apache.cordova.LOG;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;

    import android.content.Intent;
    import android.net.Uri;
    import android.text.Html;


    public class EmailComposer extends CordovaPlugin {

       @Override
       public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
           if ("showEmailComposer".equals(action)) {

               try {
                   JSONObject parameters = args.getJSONObject(0);
                   if (parameters != null) {
                       sendEmail(parameters);
                   }
               } catch (Exception e) {

               }
               callbackContext.success();
               return true;
           }
           return false;  // Returning false results in a "MethodNotFound" error.
       }

       private void sendEmail(JSONObject parameters) {

           final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);

           //String callback = parameters.getString("callback");

           boolean isHTML = false;
           try {
               isHTML = parameters.getBoolean("bIsHTML");          
           } catch (Exception e) {
               LOG.e("EmailComposer", "Error handling isHTML param: " + e.toString());
           }

           if (isHTML) {
               emailIntent.setType("text/html");
           } else {
               emailIntent.setType("text/plain");
           }

           // setting subject
           try {
               String subject = parameters.getString("subject");
               if (subject != null && subject.length() > 0) {
                   emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
               }
           } catch (Exception e) {
               LOG.e("EmailComposer", "Error handling subject param: " + e.toString());
           }

           // setting body
           try {
               String body = parameters.getString("body");
               if (body != null && body.length() > 0) {
                   if (isHTML) {                                       
                       String bodyHtml = Html.fromHtml(body).toString();
                       LOG.e("EmailComposer", "Creating HTML email with body: " + bodyHtml);
                       ArrayList<String> extra_text = new ArrayList<String>();
                       extra_text.add(bodyHtml);
                       emailIntent.putStringArrayListExtra(android.content.Intent.EXTRA_TEXT, extra_text);
                   } else {
                       LOG.e("EmailComposer", "Creating text email with body: " + body);
                       ArrayList<String> extra_text = new ArrayList<String>();
                       extra_text.add(body);
                       emailIntent.putStringArrayListExtra(android.content.Intent.EXTRA_TEXT, extra_text);
                   }
               }
           } catch (Exception e) {
               LOG.e("EmailComposer", "Error handling body param: " + e.toString());
           }

           // setting TO recipients
           try {
               JSONArray toRecipients = parameters.getJSONArray("toRecipients");
               if (toRecipients != null && toRecipients.length() > 0) {
                   String[] to = new String[toRecipients.length()];
                   for (int i=0; i<toRecipients.length(); i++) {
                       to[i] = toRecipients.getString(i);
                   }
                   emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, to);
               }
           } catch (Exception e) {
               LOG.e("EmailComposer", "Error handling toRecipients param: " + e.toString());
           }

           // setting CC recipients
           try {
               JSONArray ccRecipients = parameters.getJSONArray("ccRecipients");
               if (ccRecipients != null && ccRecipients.length() > 0) {
                   String[] cc = new String[ccRecipients.length()];
                   for (int i=0; i<ccRecipients.length(); i++) {
                       cc[i] = ccRecipients.getString(i);
                   }
                   emailIntent.putExtra(android.content.Intent.EXTRA_CC, cc);
               }
           } catch (Exception e) {
               LOG.e("EmailComposer", "Error handling ccRecipients param: " + e.toString());
           }

           // setting BCC recipients
           try {
               JSONArray bccRecipients = parameters.getJSONArray("bccRecipients");
               if (bccRecipients != null && bccRecipients.length() > 0) {
                   String[] bcc = new String[bccRecipients.length()];
                   for (int i=0; i<bccRecipients.length(); i++) {
                       bcc[i] = bccRecipients.getString(i);
                   }
                   emailIntent.putExtra(android.content.Intent.EXTRA_BCC, bcc);
               }
           } catch (Exception e) {
               LOG.e("EmailComposer", "Error handling bccRecipients param: " + e.toString());
           }

           // setting attachments
           try {
               JSONArray attachments = parameters.getJSONArray("attachments");
               if (attachments != null && attachments.length() > 0) {
                   ArrayList<Uri> uris = new ArrayList<Uri>();
                   //convert from paths to Android friendly Parcelable Uri's
                   for (int i=0; i<attachments.length(); i++) {
                       try {
                           File file = new File(attachments.getString(i));
                           if (file.exists()) {
                               Uri uri = Uri.fromFile(file);
                               uris.add(uri);
                           }
                       } catch (Exception e) {
                           LOG.e("EmailComposer", "Error adding an attachment: " + e.toString());
                       }
                   }
                   if (uris.size() > 0) {
                       emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
                   }
               }
           } catch (Exception e) {
               LOG.e("EmailComposer", "Error handling attachments param: " + e.toString());
           }

           this.cordova.startActivityForResult(this, emailIntent, 0);
       }

       @Override
       public void onActivityResult(int requestCode, int resultCode, Intent intent) {
           // TODO handle callback
           super.onActivityResult(requestCode, resultCode, intent);
           LOG.e("EmailComposer", "ResultCode: " + resultCode);
           // IT DOESN'T SEEM TO HANDLE RESULT CODES
       }

    }

res->xml->config.xml

 <feature name="EmailComposer">
    <param name="android-package" value="com.inic.emailattacher.emailcomposser.EmailComposer" />
</feature>

AndroidManifest.xml

     <uses-permission android:name="android.permission.INTERNET" />

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
于 2013-11-15T06:04:52.787 回答