如何将String变量附加到电子邮件

时间:2016-01-18 16:29:21

标签: android string email variables android-studio

在Android Studio中,我希望通过点击按钮发送电子邮件。我正在使用以下代码,直到我开始改变之前弄清楚发生了什么。

    String[] TO = {"ABC@yahoo.com.au"};
    String[] CC = {"xyz@gmail.com"};
    Intent emailIntent = new Intent(Intent.ACTION_SEND);
    emailIntent.setData(Uri.parse("mailto:"));
    emailIntent.setType("text/plain");
    emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
    emailIntent.putExtra(Intent.EXTRA_CC, CC);
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
    emailIntent.putExtra(Intent.EXTRA_TEXT, "Some message added in here");

    try {
        startActivity(Intent.createChooser(emailIntent, "Send mail..."));
        finish();
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(MainActivity.this,
                "There is no email client installed.", Toast.LENGTH_SHORT).show();
    }

这很好用,并且在我的手机上显示电子邮件内容符合预期,但电子邮件内容“此处添加的某些邮件”行显然是硬编码的。我显然希望通过以下方式添加我自己的内容

    String content = "Information I want to send";
    emailIntent.putExtra(Intent.EXTRA_TEXT, content);

但由于某种原因,电子邮件内容为空白。为什么识别字符串“content”但字符串变量x不是?

1 个答案:

答案 0 :(得分:2)

检查此示例 通过查看您的代码我只发现设置中的问题

  1. emailIntent.setType(文本/无格式)。

  2. 可能您正在使用Gmail发送邮件(所以您必须检查第二个示例)。

  3. 发送电子邮件(发送至手机电子邮件客户端)

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("plain/text");
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "some@email.address" });
    intent.putExtra(Intent.EXTRA_SUBJECT, "subject");
    intent.putExtra(Intent.EXTRA_TEXT, "mail body");
    startActivity(Intent.createChooser(intent, ""));
    

    发送电子邮件(至Gmail)

    Gmail不会检查额外的Intent字段,因此为了使用此意图,您需要使用Intent.ACTION_SENDTO并传递mailto:URI,其主题和正文URL已编码。

    String uriText =
        "mailto:youremail@gmail.com" + 
        "?subject=" + Uri.encode("some subject text here") + 
        "&body=" + Uri.encode("some text here");
    
    Uri uri = Uri.parse(uriText);
    
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
    sendIntent.setData(uri);
    startActivity(Intent.createChooser(sendIntent, "Send email"));