Intent.EXTRA_EMAIL tidak mengisi bidang Kepada


89

Saya mencoba menggunakan file untuk mengirim email dari lamaran saya tetapi bidang Ke pada email tidak akan terisi. Jika saya menambahkan kode untuk mengisi subjek atau teks, mereka berfungsi dengan baik. Hanya bidang Ke tidak akan terisi.

Saya juga mencoba mengubah jenis menjadi "teks / biasa" dan "teks / html" tetapi saya mendapatkan masalah yang sama. Apakah ada yang bisa membantu?

public void Email(){

    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    String recipient = getString(R.string.IntegralEmailAddress);
    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL  , recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); }

Klien email yang saya coba gunakan adalah Gmail

Jawaban:


218

Saya pikir Anda tidak lewat recipientsebagaiarray of string

seharusnya seperti itu

emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,new String[] { "someone@gmail.com" });

21
Android ... kenapa kamu begitu menyedihkan?
Bug Terjadi

4
hahaha, Anda membuat saya tertawa +1 Juta @BugsHappen .. Alasan: Ini open source tetapi dokumentasinya tidak 100% memuaskan, produsen perangkat memodifikasi sesuai kebutuhan mereka (sebagian besar perangkat murah dan tidak berguna), pengembang tidak membaca "pengembang. android.com ".
MKJParekh

4
Juga pastikan bahwa Anda TIDAK melakukannya TIDAK intent.putExtra(Intent.EXTRA_EMAIL, list.toArray()) AKAN BEKERJA karena list.toArray () menghasilkan Object [] dan bukan String []
nikib3ro

@ kape123 ini memang berhasilintent.putExtra(Intent.EXTRA_EMAIL, list.toArray(new String[0]))
Abtin Gramian

4

Gunakan ini

public void Email(){
    // use this to declare your 'recipient' string and get your email recipient from your string xml file
    Resources res = getResources();
    String recipient = getString(R.string.IntegralEmailAddress);
    Intent emailIntent = new Intent(Intent.ACTION_SEND); 
    emailIntent.setType("message/rfc822");  //set the email recipient
    emailIntent.putExtra(Intent.EXTRA_EMAIL, recipient);
    //let the user choose what email client to use
    startActivity(Intent.createChooser(emailIntent, "Send mail using...")); 

``}

Ini akan berhasil :)
Inilah yang dikatakan dokumentasi android tentang Intent.Extra_Email
-A string array dari semua alamat email penerima "To".
Jadi Anda harus memberi makan string dengan benar Anda dapat membaca lebih lanjut di sini
http://developer.android.com/guide/components/intents-common.html#Email dan di sini http://developer.android.com/guide/topics/resources /string-resource.html Atau gunakan tindakan ACTION_SENDTO dan sertakan skema data "mailto:". Sebagai contoh:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:")); // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, addresses);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

3

Di Kotlin - Android

fun sendMail(
        activity: Activity,
        emailIds: Array<String>,
        subject: String,
        textMessage: String
    ) {


        val emailIntent = Intent(Intent.ACTION_SEND)
        emailIntent.type = "text/plain"
        emailIntent.putExtra(Intent.EXTRA_EMAIL, emailIds)
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject)
        emailIntent.putExtra(Intent.EXTRA_TEXT, textMessage)
        emailIntent.setType("message/rfc822")
        try {
            activity.startActivity(
                Intent.createChooser(
                    emailIntent,
                    "Send email using..."
                )
            )
        } catch (ex: ActivityNotFoundException) {
            Toast.makeText(
                activity,
                "No email clients installed.",
                Toast.LENGTH_SHORT
            ).show()
        }
    }

Anda juga dapat menggunakan [ val emailIntent = Intent(Intent.ACTION_SENDTO)] untuk menjalankan klien email langsung

//argument of function
val subject = "subject of you email"
val eMailMessageTxt = "Add Message here"

val eMailId1 = "emailId1@gmail.com"
val eMailId2 = "emailId2@gmail.com"
val eMailIds: Array<String> = arrayOf(eMailId1,eMailId2)

//Calling function
sendMail(this, eMailIds, subject, eMailMessageTxt)

Saya harap potongan kode ini akan membantu pengembang kotlin.


2
private void callSendMeMail() {
    Intent Email = new Intent(Intent.ACTION_SEND);
    Email.setType("text/email");
    Email.putExtra(Intent.EXTRA_EMAIL, new String[] { "me@gmail.com" });
    Email.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
    startActivity(Intent.createChooser(Email, "Send mail to Developer:"));
}

Dikatakan tidak ada aplikasi yang dapat melakukan tindakan ini.
Abu Nayem

1

Beberapa hal:

1 - Anda perlu menyetel variabel konstanta tindakan sebagai ACTION_SENDTO.
Intent intentEmail = new Intent(Intent.ACTION_SENDTO);

2 - Jika Anda ingin dibuka hanya dengan email, gunakan metode setData (): intentEmail.setData(Uri.parse("mailto:"));Jika tidak, Anda akan diminta untuk membukanya sebagai teks, gambar, file audio oleh aplikasi lain yang ada di perangkat Anda.

3 - Anda harus meneruskan string ID email sebagai objek array dan bukan hanya sebagai string. Stringnya adalah: "name@email.com" . Objek Larik string adalah: String baru [] {"email1", "email2", "more_email"} .

intentEmail.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@overflow.com", "abcd@stack.com"});
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.