Saya mencoba membuat aplikasi pengiriman surat di Android.
Jika saya menggunakan:
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
Ini akan meluncurkan aplikasi Android bawaan; Saya mencoba mengirim surat pada klik tombol langsung tanpa menggunakan aplikasi ini.
Jawaban:
Kirim email di Android menggunakan JavaMail API menggunakan otentikasi Gmail.
Langkah-langkah untuk membuat Proyek sampel:
MailSenderActivity.java:
GMailSender.java:
JSSEProvider.java:
TAMBAH 3 botol yang ditemukan di tautan berikut ke Proyek Android Anda
Klik di sini - Cara menambahkan Stoples Eksternal
Dan jangan lupa untuk menambahkan baris ini dalam manifes Anda:
Cukup klik tautan di bawah ini untuk mengubah akses akun untuk aplikasi yang kurang aman https://www.google.com/settings/security/lesssecureapps
Jalankan proyek dan periksa akun email penerima Anda untuk surat tersebut. Bersulang!
PS Dan jangan lupa bahwa Anda tidak dapat melakukan operasi jaringan dari Aktivitas apa pun di android. Oleh karena itu disarankan untuk menggunakan
AsyncTask
atauIntentService
menghindari jaringan pada pengecualian utas utama.File jar: https://code.google.com/archive/p/javamail-android/
sumber
Terima kasih atas informasi Anda yang berharga. Kode berfungsi dengan baik. Saya dapat menambahkan lampiran juga dengan menambahkan kode berikut.
sumber
filename
variabel di sini, Anda harus menentukan path file. Sebagai contoh:String path = Environment.getExternalStorageDirectory().getPath() + "/temp_share.jpg";
Tambahkan baris ini di manifes Anda:
sumber
Anda dapat menggunakan JavaMail API untuk menangani tugas email Anda. JavaMail API tersedia dalam paket JavaEE dan toplesnya tersedia untuk diunduh. Sayangnya itu tidak dapat digunakan secara langsung dalam aplikasi Android karena menggunakan komponen AWT yang sepenuhnya tidak kompatibel di Android.
Anda dapat menemukan port Android untuk JavaMail di lokasi berikut: http://code.google.com/p/javamail-android/
Tambahkan toples ke aplikasi Anda dan gunakan metode SMTP
sumber
eu.ocathain.com.sun.mail:javax.mail:1.5.2
Untuk membantu mereka yang mendapatkan Pengecualian Utas Pada Jaringan dengan Target SDK> 9. Ini menggunakan kode droopie di atas tetapi akan bekerja sama untuk semua.
Anda dapat menggunakan AsyncTask seperti di bawah ini
sumber
100% kode kerja dengan demo Anda juga dapat mengirim beberapa email menggunakan jawaban ini.
Unduh Proyek DI SINI
Langkah 1: Unduh email, aktivasi, file jar tambahan dan tambahkan folder libs proyek Anda di android studio. Saya menambahkan cuplikan layar lihat di bawah Tautan unduhan
Login dengan gmail ( menggunakan email Anda ) dan MENGHIDUPKAN tombol sakelar LINK
Sebagian besar orang lupa tentang langkah ini saya harap Anda tidak akan melakukannya.
Langkah 2: Setelah menyelesaikan proses ini. Salin dan lewati kelas ini ke proyek Anda.
GMail.java
SendMailTask.java
Langkah 3: Sekarang Anda dapat mengubah kelas ini sesuai dengan kebutuhan Anda juga Anda dapat mengirim banyak surat menggunakan kelas ini. saya memberikan file xml dan java keduanya.
activity_mail.xml
SendMailActivity.java
Catatan Jangan lupa menambahkan izin internet di file AndroidManifest.xml Anda
<uses-permission android:name="android.permission.INTERNET"/>
Semoga berhasil jika tidak maka cukup komentar di bawah.
sumber
SMTP
Menggunakan SMTP adalah salah satu cara untuk melangkah, dan yang lain telah menunjukkan cara bagaimana melakukannya. Perhatikan bahwa saat melakukan ini, Anda benar-benar menghindari aplikasi surat bawaan, dan Anda harus memberikan alamat server SMTP, nama pengguna dan kata sandi untuk server itu, baik secara statis dalam kode Anda, atau permintaan dari pengguna .
HTTP
Cara lain akan melibatkan skrip sisi server sederhana, seperti php, yang mengambil beberapa parameter URL dan menggunakannya untuk mengirim email. Dengan cara ini, Anda hanya perlu membuat permintaan HTTP dari perangkat (mudah dilakukan dengan perpustakaan bawaan) dan tidak perlu menyimpan data login SMTP pada perangkat. Ini adalah satu lagi tipuan dibandingkan dengan penggunaan SMTP langsung, tetapi karena sangat mudah untuk membuat permintaan HTTP dan mengirim email dari PHP, itu mungkin bahkan lebih sederhana daripada cara langsung.
Aplikasi Surat
Jika surat akan dikirim dari akun email default pengguna yang sudah terdaftar di telepon, Anda harus melakukan pendekatan lain. Jika Anda memiliki cukup waktu dan pengalaman, Anda mungkin ingin memeriksa kode sumber aplikasi Email Android untuk melihat apakah ia menawarkan beberapa titik masuk untuk mengirim email tanpa interaksi pengguna (saya tidak tahu, tetapi mungkin ada satu).
Mungkin Anda bahkan menemukan cara untuk menanyakan detail akun pengguna (sehingga Anda dapat menggunakannya untuk SMTP), meskipun saya sangat ragu bahwa ini mungkin, karena itu akan menjadi risiko keamanan yang sangat besar dan Android dibangun agak aman.
sumber
di sini adalah versi alt yang juga berfungsi untuk saya dan memiliki lampiran (diposting sudah di atas tetapi versi lengkap tidak seperti tautan sumber, yang orang-orang diposting mereka tidak bisa berfungsi karena data yang hilang)
dan menyebutnya dalam suatu kegiatan ...
sumber
Could not send email android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
perlu untuk melihat solusi ini stackoverflow.com/questions/25093546/…Pemakaian:
Konfigurasi:
Izin:
Juga untuk lampiran, Anda harus menetapkan izin READ_EXTERNAL_STORAGE:
Sumber
(Saya sudah mengujinya sendiri)
sumber
Kata peringatan jika menggunakan "smtp.gmail.com" sebagai server smtp default.
Google akan memaksa Anda untuk mengubah kata sandi akun email tertaut Anda sering karena kebijakan "aktivitas mencurigakan" yang terlalu bersemangat. Pada dasarnya ia memperlakukan permintaan smtp berulang dari berbagai negara dalam jangka waktu pendek sebagai "aktivitas mencurigakan". Karena mereka menganggap Anda (pemegang akun email) hanya dapat berada di satu negara pada suatu waktu.
Ketika sistem google mendeteksi "aktivitas mencurigakan" itu akan mencegah email lebih lanjut sampai Anda mengubah kata sandi. Karena Anda akan memiliki kode sandi yang sulit untuk dimasukkan ke dalam aplikasi, Anda harus merilis ulang aplikasi setiap kali ini terjadi, bukan yang ideal. Ini terjadi 3 kali dalam seminggu kepada saya, saya bahkan menyimpan kata sandi di server lain dan secara dinamis mengambil kata sandi setiap kali google memaksa saya untuk mengubahnya.
Jadi saya sarankan menggunakan salah satu dari banyak penyedia smtp gratis alih-alih "smtp.gmail.com" untuk menghindari masalah keamanan ini. Gunakan kode yang sama tetapi ubah "smtp.gmail.com" menjadi host penerusan smtp baru Anda.
sumber
suspicioud activity
masalahnya?Sunting: JavaMail 1.5.5 mengklaim untuk mendukung Android , jadi Anda tidak perlu yang lain.
Saya telah mengirim JavaMail (1.5.4) terbaru ke Android. Ini tersedia di Maven Central, cukup tambahkan yang berikut kebuild.gradle
~~Anda kemudian dapat mengikuti tutorial resmi .
Kode sumber tersedia di sini: https://bitbucket.org/artbristol/javamail-forked-android
sumber
Saya menemukan alternatif yang lebih pendek untuk orang lain yang membutuhkan bantuan. Kode tersebut adalah:
Sumber: Mengirim Email melalui JavaMail API
Semoga ini membantu! Semoga berhasil!
sumber
Mereka yang
ClassDefNotFoundError
mencoba memindahkan tiga file jar ke folder Lib Proyek Anda, itu berhasil bagi saya !!sumber
Untuk mengirim surat dengan lampiran ..
sumber
Saya tidak dapat menjalankan kode Vinayak B. Akhirnya saya memecahkan masalah ini dengan mengikuti:
1. Menggunakan ini
2. Menerapkan AsyncTask.
3.Mengubah masalah keamanan akun gmail pengirim. (Ubah ke "TURN ON") dalam hal ini
sumber
Apakah Anda mempertimbangkan untuk menggunakan Apache Commons Net? Sejak 3.3, cukup satu toples (dan Anda bisa bergantung padanya menggunakan gradle atau maven) dan Anda selesai: http://blog.dahanne.net/2013/06/17/sending-a-mail-in-in-java- dan-android-with-apache-commons-net /
sumber
Tanpa campur tangan pengguna, Anda dapat mengirim sebagai berikut:
Kirim email dari apk klien. Di sini mail.jar, aktivasi.jar diperlukan untuk mengirim email java. Jika botol ini ditambahkan, ini mungkin meningkatkan Ukuran APK.
Atau, Anda dapat menggunakan layanan web di kode sisi server, yang akan menggunakan mail.jar yang sama dan aktivasi.jar untuk mengirim email. Anda dapat menghubungi layanan web melalui asynctask dan mengirim email. Lihat tautan yang sama.
(Tapi, Anda harus mengetahui kredensial akun email)
sumber
Jika Anda diminta untuk menyimpan pustaka jar sekecil mungkin, Anda bisa menyertakan fungsi SMTP / POP3 / IMAP secara terpisah untuk menghindari masalah "terlalu banyak metode dalam dex".
Anda dapat memilih pustaka jar yang diinginkan dari halaman web javanet , misalnya, mailapi.jar + imap.jar dapat memungkinkan Anda untuk mengakses server mail icloud, hotmail dalam protokol IMAP. (dengan bantuan tambahan. jar dan aktivasi. jar)
sumber
Saya mencoba menggunakan kode yang @Vinayak B kirimkan. Namun saya mendapatkan pesan kesalahan: Tidak ada penyedia untuk smtp
Saya membuat pertanyaan baru untuk ini dengan informasi lebih lanjut DI SINI
Lagipula aku bisa memperbaikinya sendiri. Saya harus menggunakan mail.jar lain dan saya harus memastikan " akses saya untuk aplikasi yang kurang aman " dihidupkan.
Saya harap ini membantu siapa saja yang memiliki masalah yang sama. Setelah ini selesai, kode ini juga berfungsi di google glass.
sumber
Semua kode yang disediakan di jawaban lain sudah benar dan berfungsi dengan baik, tapi agak berantakan, jadi saya memutuskan untuk menerbitkan perpustakaan (masih dalam pengembangan) untuk menggunakannya dengan cara yang lebih mudah: AndroidMail .
Anda baru saja membuat MailSender, membuat surat dan mengirimkannya (sudah ditangani di latar belakang dengan AsyncTask).
Anda dapat menerima pemberitahuan untuk email yang dikirim dan juga memiliki dukungan untuk berbagai jenis Penerima (TO, CC dan BCC), lampiran, dan html:
Anda bisa mendapatkannya melalui Gradle atau Maven:
Tolong beri tahu saya jika Anda memiliki masalah dengan itu! :)
sumber
Berikut ini banyak solusi. Namun saya pikir kita harus mengubah konfigurasi GMail untuk memungkinkan akses dari perangkat yang kurang aman. Buka tautan di bawah dan aktifkan. Ini bekerja untuk saya
https://myaccount.google.com/lesssecureapps?pli=1
sumber
sumber
Mengirim email secara terprogram dengan Kotlin.
Saya juga menemukan daftar layanan POP email ini sangat membantu:
https://support.office.com/en-gb/article/pop-and-imap-email-settings-for-outlook-8361e398-8af4-4e97-b147-6c6c4ac95353
Cara Penggunaan:
Kode:
Gradle:
AndroidManifest:
sumber
Untuk menambahkan lampiran, jangan lupa untuk menambahkan.
sumber