как отправить письмо в phonegap android - PullRequest
1 голос
/ 31 января 2012

Я пытался использовать webintent http://smus.com/android-phonegap-plugins для отправки электронной почты в приложении phonegap android 4.Но я не очень понимаю веб-сайт и файл readme для плагинов.

Например, как это использовать?

window.plugins.webintent.startActivity({
    action: WebIntent.ACTION_VIEW,
    url: 'geo:0,0?q=' + address}, 
    function() {}, 
    function() {alert('Failed to open URL via Android Intent')};
);

<a href="mailto:support@fareastgadget.com&subject=Report%20issues&body=Reporting%20following%20issues:">

Если я использую html-разметку, телефон Android просто отфильтрует URLи заставлять получателя электронной почты быть целой строкой.

Может ли кто-нибудь предоставить некоторые примеры кодов или учебное пособие о том, как отправлять электронную почту в телефонной пробке (хотя и не обязательно с веб-намерением)?

Спасибо.

Ответы [ 2 ]

1 голос
/ 04 сентября 2012

Использовал решение для разметки электронной почты, и клиент вернулся, сказав, что электронные письма были пустыми, не добавляя контент на определенных устройствах.Поэтому я решил реализовать плагин веб-намерений (как вы можете видеть из названия пакета), но в итоге я просто внедрил новый плагин электронной почты.

Вот класс Java.

package com.webintent.emailcomposer;

import org.apache.cordova.api.PluginResult;
import org.apache.cordova.api.PluginResult.Status;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Intent;
import android.net.Uri;
import android.text.Html;
import com.phonegap.api.Plugin;

public class EmailComposer extends Plugin {
    public final String ACTION_SEND_EMAIL = "SendEmail";

    public PluginResult execute(String action, JSONArray arg1, String callbackId) {

    PluginResult result = new PluginResult(Status.INVALID_ACTION);
    if (action.equals(ACTION_SEND_EMAIL)) {
        try {
            String email = arg1.getString(0);
            String subject = arg1.getString(1);
            String message = arg1.getString(2);
            this.sendEmail(email, subject, message);
            result = new PluginResult(Status.OK);
        }
        catch (JSONException ex) {
            result = new PluginResult(Status.JSON_EXCEPTION, ex.getMessage());
        }           
    }
    return result;
}

private void sendEmail(String email, String subject, String message) {
    final Intent intent = new Intent(Intent.ACTION_SEND);
    intent.putExtra(Intent.EXTRA_SUBJECT, subject);
    intent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{email});
    intent.putExtra(
            Intent.EXTRA_TEXT, 
            Html.fromHtml(new StringBuilder()
                .append(message)
                .toString())
            );
    intent.setType("text/html");
    this.ctx.startActivity(Intent.createChooser(intent, "Choose email account"));
}
}

Не забудьте обновить plugins.xml

Вот код плагина js

var EmailPlugin = function () {};

cordova.addConstructor(function() {
   return cordova.addPlugin("email", new EmailPlugin());
});

EmailPlugin.prototype.send = function (email, subject, message){
cordova.exec(function(){ alert('email success')}, 
    function(){ alert('email fail')}, 
    'EmailComposer', 
    'SendEmail', 
    [email, subject, message]);
}

И, наконец, вы вызываете плагин как таковой.

window.plugins.email.send(email, subject, body);

Примечание Iв параметры не были включены обратные вызовы, но вы можете видеть, куда они пойдут.

0 голосов
/ 03 августа 2012

Ну, это похоже на код, который Борис Смус предоставляет для использования карт Google.Вот пример электронной почты.

Android.sendEmail = function(subject, body) { 
var extras = {};
extras[WebIntent.EXTRA_SUBJECT] = subject;
extras[WebIntent.EXTRA_TEXT] = body;
window.plugins.webintent.startActivity({ 
  action: WebIntent.ACTION_SEND,
  type: 'text/plain', 
  extras: extras 
}, 
function() {}, 
function() {
  alert('Failed to send email via Android Intent');
}
); 
};

У меня проблемы с самим собой, что касается меня, он вызывает композитор MMS вместо электронной почты ...

* Редактировать: Я думалбыло что-то, но нет ... Другие источники, кажется, предлагают использовать ссылку mailto.

* Редактировать 2: Игнорировать это и увидеть другой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...