ইমেল উদ্দেশ্য প্রেরণ করুন


588
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");

startActivity(Intent.createChooser(intent, "Send Email"));

উপরের কোডটি নিম্নলিখিত অ্যাপ্লিকেশনগুলি দেখায় একটি ডায়ালগ খোলে: - ব্লুটুথ, গুগল ডক্স, ইয়াহু মেল, জিমেইল, অরকুট, স্কাইপ ইত্যাদি etc.

আসলে, আমি এই তালিকা-বিকল্পগুলি ফিল্টার করতে চাই। আমি কেবল ইমেল সম্পর্কিত অ্যাপ্লিকেশন যেমন জিমেইল, ইয়াহু মেল প্রদর্শন করতে চাই। এটা কিভাবে করতে হবে?

'অ্যান্ড্রয়েড মার্কেট' অ্যাপ্লিকেশনটিতে আমি এরকম উদাহরণ দেখেছি।

  1. Android Market অ্যাপ্লিকেশনটি খুলুন
  2. যে কোনও অ্যাপ্লিকেশন খুলুন যেখানে বিকাশকারী তার / তার ইমেল ঠিকানা নির্দিষ্ট করেছে। (যদি আপনি এই জাতীয় অ্যাপটি সন্ধান করতে না পারেন তবে কেবল আমার অ্যাপ্লিকেশনটি খুলুন: - বাজার: // বিবরণ?
  3. 'ডেভেলপার' এ স্ক্রোল করুন
  4. 'ইমেল প্রেরণ' ক্লিক করুন

কথোপকথনে কেবল ইমেল অ্যাপ্লিকেশন যেমন জিমেইল, ইয়াহু মেল ইত্যাদি দেখায় এটি ব্লুটুথ, অর্কুট ইত্যাদি দেখায় না কোন কোড এই জাতীয় সংলাপ তৈরি করে?


4
দুঃখিত, এটি অভিপ্রায় সহ সম্ভব নয় A ACTION_SEND। হয়তো এটি সরাসরি জিমেইল-অ্যাপ্লিকেশনে উদ্দেশ্য সহ কাজ করে তবে আমি জানি না এটি সম্ভব কিনা।
থমমি

19
ইমেল অভিপ্রায় সম্পর্কে কেউ যদি এখানে জানতে শেখে তবে EXTRA_MAIL এ এখানে বর্ণিত String[]একটি Stringহিসাবে নয় a
16:44



কিছু ভাল পরামর্শের জন্য এখানে দেখুন: मध्यम.com
ফেলিক্স ডি

উত্তর:


218

নীচের মত আপনি যখন আপনার ইন্টেন্ট.সেটটাইপ পরিবর্তন করবেন তখন আপনি পাবেন

intent.setType("text/plain");

android.content.Intent.ACTION_SENDTOকোনও ফেসবুক বা অন্যান্য অ্যাপ্লিকেশন ছাড়াই কেবল ইমেল ক্লায়েন্টের তালিকা পেতে ব্যবহার করুন । শুধু ইমেল ক্লায়েন্ট। উদা:

new Intent(Intent.ACTION_SENDTO);

আমি আপনাকে সরাসরি ইমেল অ্যাপ্লিকেশন এ যেতে পরামর্শ দেব না। ব্যবহারকারীকে তার প্রিয় ইমেল অ্যাপ্লিকেশনটি চয়ন করতে দিন। তাকে বাধা দেবেন না।

আপনি যদি অ্যাকশন_ SENDTO ব্যবহার করেন তবে পুটএক্স্ট্রা উদ্দেশ্য এবং পাঠ্য যুক্ত করতে কাজ করে না। বিষয় এবং দেহের পাঠ্য যুক্ত করতে উরি ব্যবহার করুন।

সম্পাদনা: আমরা মাইমে টাইপের message/rfc822পরিবর্তে ব্যবহার করতে পারি "text/plain"। তবে, এটি "কেবলমাত্র ইমেল ক্লায়েন্টদের অফার করে" ইঙ্গিত দিচ্ছে না - এটি "ম্যাসেজ / rfc822 ডেটা সমর্থন করে এমন কোনও অফার" নির্দেশ করে। এটি সহজেই এমন কিছু অ্যাপ্লিকেশন অন্তর্ভুক্ত করতে পারে যা ইমেল ক্লায়েন্ট নয়।

message/rfc822 মাইম টাইপ এর সমর্থন করে .mhtml, .mht, .mime


7
আপনি দয়া করে পছন্দসই আউটপুট উত্পাদন করতে কিছু কোড সরবরাহ করতে পারেন?
দিনরা


76
উদ্দেশ্য no apps installed to perform this intentব্যবহারকারী যখন আমি ব্যবহার করি তখন বলে ACTION_SENDTO। আমি অ্যান্ড্রয়েড ৪.১.২ ব্যবহার করছি এবং আমার একটি ইমেল অ্যাপ্লিকেশন ইনস্টল করা আছে ...
ffleandro

4
'সঠিক' উপায়টি ম্যাগনাসের উত্তর from আমি গৃহীত উত্তর পরিবর্তন করতে মূল পোস্টারটি সুপারিশ করি।
habাব্বোট

8
প্রেরণ ক্রিয়াকলাপ সম্পাদনের জন্য মাইম টাইপ ব্যবহার করা একটি খারাপ ধারণা, কারণ আপনি মূলত অ্যান্ড্রয়েডকে অ্যাপ্লিকেশনগুলির একটি তালিকা সরবরাহ করতে নির্দেশ দিচ্ছেন যা কোনও ফাইলের প্রেরণ সমর্থন করে message/rfc822। এটি কোনও ইমেল প্রেরণের মতো নয় । ব্যবহার করুন mailto:পরিবর্তে প্রোটোকল, কারণ যে কী ই-মেইল ক্লায়েন্ট আসলে বুঝতে।
পল ল্যামার্তসমা

871

গৃহীত উত্তর 4.1.2 এ কাজ করে না। এটি সমস্ত প্ল্যাটফর্মে কাজ করা উচিত:

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto","abc@gmail.com", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Body");
startActivity(Intent.createChooser(emailIntent, "Send email..."));

আশাকরি এটা সাহায্য করবে.

আপডেট: marcwjj অনুসারে , মনে হয় 4.3-তে, এটি কার্যকর করতে ইমেল ঠিকানার জন্য স্ট্রিংয়ের পরিবর্তে আমাদের স্ট্রিং অ্যারে পাস করতে হবে। আমাদের আরও একটি লাইন যুক্ত করার প্রয়োজন হতে পারে:

intent.putExtra(Intent.EXTRA_EMAIL, addresses); // String[] addresses

রেফ লিঙ্ক


7
আপনি ঠিক বলেছেন, এবং এটি 4.2-এও হয় না। সুতরাং এটি আসলে একমাত্র সঠিক উত্তর, ধন্যবাদ!
এমড্রয়েড

12
এটি নিখুঁত। নীচে কেউ উল্লেখ করেছেন যে "মেলটো" অংশটি নির্দিষ্ট করে তা ক্লায়েন্টদের ইমেল করার জন্য উপলভ্য বিকল্পগুলিকে সঙ্কুচিত করে। Uri.fromParts ("মেলটো", "", নাল) ব্যবহার করে প্রাপক ক্ষেত্রে কার্সার রাখবে - আমার যা প্রয়োজন তার জন্য নিখুঁত।
শেগি

24
এই ইমেলপ্রযুক্তি.পুটেক্সট্রাটি চেষ্টা করুন (ইনটেন্ট.অ্যাক্টরাট_আর্টেক্সট, "আমি ইমেল বডি।");
Thanhbinh84

15
আপনার যদি কোনও নির্দিষ্ট প্রাপক না থাকে তবে এটিও কাজ করে:Uri.fromParts("mailto", "", null)
ফিল

25
এটি আর আমার অ্যান্ড্রয়েড ৪.৩ এ কাজ করে না। অভিপ্রায় হিসাবে ইমেল প্রেরণের জন্য অফিসিয়াল অ্যান্ড্রয়েড ডকটি দেখুন, যা নিখুঁতভাবে কাজ করে: developer.android.com/guide/compferences/…
marcwjj

244

তিনটি প্রধান পন্থা রয়েছে:

String email = /* Your email address here */
String subject = /* Your subject here */
String body = /* Your body here */
String chooserTitle = /* Your chooser title here */

1. কাস্টম Uri:

Uri uri = Uri.parse("mailto:" + email)
    .buildUpon()
    .appendQueryParameter("subject", subject)
    .appendQueryParameter("body", body)
    .build();

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(Intent.createChooser(emailIntent, chooserTitle));

২. Intentঅতিরিক্ত ব্যবহার :

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:" + email));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
//emailIntent.putExtra(Intent.EXTRA_HTML_TEXT, body); //If you are using HTML in your body text

startActivity(Intent.createChooser(emailIntent, "Chooser Title"));

সাপোর্ট লাইব্রেরি ShareCompat:

Activity activity = /* Your activity here */

ShareCompat.IntentBuilder.from(activity)
    .setType("message/rfc822")
    .addEmailTo(email)
    .setSubject(subject)
    .setText(body)
    //.setHtmlText(body) //If you are using HTML in your body text
    .setChooserTitle(chooserTitle)
    .startChooser();

1
এটি আমার পক্ষে আরও ভাল কাজ করেছে - অন্যান্য অপশনগুলি সম্ভাব্য হ্যান্ডলার হিসাবে কিছু সোজা জিনিস (উদাহরণস্বরূপ স্কাইপ) আপ করেছে।
ক্রিস রায়ে

1
আপনার যদি %বাফারটিতে একটি চিহ্ন থাকে, ফলাফল ইমেলের কয়েকটি অক্ষর সঠিকভাবে এনকোড হবে না। আপনাকে Uri.encode@ মিনিপিফ দ্বারা প্রস্তাবিত নৃত্যটি সম্পাদন করতে হবে ।
জিউলিও পিয়ানোস্টেলি

12
এটি এখানে সেরা উত্তর, অন্যকে চেষ্টা করে আপনার সময় নষ্ট করবেন না, দ্বিতীয়টি এখানে যা আমি বেছে নিয়েছি এবং এটি নিখুঁতভাবে কাজ করে, কেবল খাঁটি ইমেল অ্যাপ্লিকেশনগুলি দেখায়, জিড্রাইভ নয়, ব্লুটুথ না .. ইত্যাদি ধন্যবাদ @ বেকম্পিউটার06
হুগো

1
"&" চরিত্র সম্পর্কে সতর্ক থাকুন। আপনি যদি ইমেলের মূল অংশে & চরিত্র পেয়ে থাকেন তবে এই পদ্ধতিটি & এর পরে শরীর কেটে দেবে। উদাহরণস্বরূপ, আপনি যদি "আমি এবং একটি নমুনা শরীর" এর মতো দেহটি প্রেরণ করেন তবে আপনি কেবল "আমিই" পাবেন
Emre Koç

4
শেয়ারকম্প্যাটের ফলাফল কেবলমাত্র ক্লায়েন্টদের ইমেল নয় প্রায় সব অ্যাপে!
আরপট্টবী

111

এটি অ্যান্ড্রয়েড অফিসিয়াল ডক থেকে উদ্ধৃত হয়েছে, আমি এটিকে অ্যান্ড্রয়েড ৪.৪ এ পরীক্ষা করে দেখেছি এবং নিখুঁতভাবে কাজ করি। Https://developer.android.com/guide/components/intents-common.html# ইমেল এ আরও উদাহরণ দেখুন

public void composeEmail(String[] addresses, String subject) {
    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);
    }
}

6
একমত! আমি অবাক হয়েছি এর মতো উত্তরটি এখন পর্যন্ত তালিকার নিচে। আমার ধারণা এটি অবশ্যই অ্যান্ড্রয়েড ডক্সে তুলনামূলকভাবে সাম্প্রতিক পরিবর্তন হয়ে গেছে।
মিকি

গ্রেট! নির্ভরযোগ্য, এটি অ্যান্ড্রয়েড অ্যাপ বিকাশকারীদের 'বাইবেল' উল্লেখ করেছে।
dev_android

1
মেলটোর পরে কোলন আমার জন্য কৌশলটি করেছে! আমি "
মেলটো

1
5.1.1 উপর কাজ। অন্যান্য বিকল্পগুলি আমার পক্ষে কাজ করে না।
জুয়ানিন

1
EXTRA_EMAILআমার জন্য কাজ করছে না তাই আমি ব্যবহার করেছিUri.parse("mailto: " + myEmail)
প্রতীক বুটানি

89

দেরিতে উত্তর, যদিও আমি এমন একটি সমাধান বের করেছি যা অন্যকে সাহায্য করতে পারে:

জাভা সংস্করণ

Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
emailIntent.setData(Uri.parse("mailto:abc@xyz.com"));
startActivity(Intent.createChooser(emailIntent, "Send feedback"));


কোটলিন সংস্করণ

val emailIntent = Intent(Intent.ACTION_SENDTO).apply { 
    data = Uri.parse("mailto:abc@xyz.com")
}
startActivity(Intent.createChooser(emailIntent, "Send feedback"))


এটি আমার আউটপুট ছিল (কেবলমাত্র জিমেইল + ইনবক্স প্রস্তাবিত):

আমার আউটপুট

আমি এই সমাধানটি অ্যান্ড্রয়েড বিকাশকারী সাইট থেকে পেয়েছি ।


2
আমার জন্য এটি গুরুত্বপূর্ণ ছিল যে mailtoইমেল এবং ইমেলের মধ্যে কোনও স্থান নেই :mailto:abc@xyz.com
আলভারোসান্তিস্তেবন

এটাই সঠিক উত্তর।
নিববান

36

এটি আমার পক্ষে কাজ করে:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL  , new String[] { "me@somewhere.com" });
intent.putExtra(Intent.EXTRA_SUBJECT, "My subject");

startActivity(Intent.createChooser(intent, "Email via..."));

অর্থাত্ ACTION_SENDTOকর্মের পরিবর্তে ক্রিয়াটি ব্যবহার করুন ACTION_SEND। আমি এটি কয়েকটি অ্যান্ড্রয়েড 4.৪ ডিভাইসে চেষ্টা করেছি এবং এটি চয়নকারী পপ-আপকে কেবল ইমেল অ্যাপ্লিকেশন (ইমেল, জিমেইল, ইয়াহু মেল ইত্যাদি) প্রদর্শন করতে সীমাবদ্ধ করে এবং এটি ইমেল ঠিকানা এবং বিষয়টিকে ইমেলের মধ্যে সঠিকভাবে সন্নিবেশ করে।


35

চেষ্টা করুন:

intent.setType("message/rfc822");

তিনি ঠিক বলেছেন, আমি এটি চেষ্টা করেছিলাম এবং [ড্রাইভ, ইমেল, জিমেইল, স্কাইপ] অফার করছি, এটি "সঠিক উত্তর" হওয়া উচিত
গুরবিটি

18
প্রেরণ ক্রিয়াকলাপ সম্পাদনের জন্য মাইম টাইপ ব্যবহার করা একটি খারাপ ধারণা, কারণ আপনি মূলত অ্যান্ড্রয়েডকে অ্যাপ্লিকেশনগুলির একটি তালিকা সরবরাহ করতে নির্দেশ দিচ্ছেন যা কোনও ফাইলের প্রেরণ সমর্থন করে message/rfc822। এটি কোনও ইমেল প্রেরণের মতো নয় । ব্যবহার করুন mailto:পরিবর্তে প্রোটোকল, কারণ যে কী ই-মেইল ক্লায়েন্ট আসলে বুঝতে।
পল ল্যামার্তসমা

34

এটি অনুসারে ই-মেইল উদ্দেশ্যটি প্রেরণের উপযুক্ত উপায় অ্যান্ড্রয়েড বিকাশকারী অফিসিয়াল ডকুমেন্টেশন

আপনার অ্যাপ্লিকেশনটিতে কোডের এই লাইনগুলি যুক্ত করুন:

Intent intent = new Intent(Intent.ACTION_SEND);//common intent 
intent.setData(Uri.parse("mailto:")); // only email apps should handle this

.চ্ছিক: শরীর এবং বিষয় যুক্ত করুন, এর মতো

intent.putExtra(Intent.EXTRA_SUBJECT, "Your Subject Here");
intent.putExtra(Intent.EXTRA_TEXT, "E-mail body" );

আপনি ইতিমধ্যে এই লাইনটি যুক্ত করেছেন, তবে নতুন ব্যবহারকারীদের জন্য ভাল

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"youremailaddress@aviparshan.com"});

এটি প্রাপকের ঠিকানা হবে, যার অর্থ ব্যবহারকারী আপনাকে (বিকাশকারী) একটি ইমেল প্রেরণ করবে।


@ বার্নাকেল.এম ধন্যবাদ! এটি আরও সহজ পদ্ধতিগুলির মধ্যে একটি। সমস্যাটি হ'ল আমার উত্তরটি যথেষ্ট পরিমাণে উত্সাহ পাচ্ছে না :(
অভি পর্যরণ

1
এর কারণ অনেকগুলি অনুরূপ উত্তর রয়েছে তবে এটি একটি বিষয়ে সরকারী অ্যান্ড্রয়েড ডকুমেন্টেশন দেখায়।
barnacle.m

1
আমি ইমেল ঠিকানা প্রেরণ করতে অক্ষম ছিল। আমি এটা এই intent.data মত স্থির = Uri.parse (, "mailto: somemail@xyz.com")
Hitesh Bisht

18

অবশেষে আসুন সেরা উপায় সঙ্গে

String to = "test@gmail.com";
String subject= "Hi I am subject";
String body="Hi I am test body";
String mailTo = "mailto:" + to +
        "?&subject=" + Uri.encode(subject) +
        "&body=" + Uri.encode(body);
Intent emailIntent = new Intent(Intent.ACTION_VIEW);
emailIntent.setData(Uri.parse(mailTo));
startActivity(emailIntent);

আপনি দুর্দান্ত, বন্ধু।
আশিক

কোনও সমস্যা নেই
অজয় শ্রেষ্ঠ

2
নিখুঁতভাবে কাজ করে।
সোলঙ্কি কমলেশ

এই নিবন্ধটি এটি বিশদে বর্ণনা করে দেখুন: मध्यम.com
ব্রুনো বিয়েরি

ভাল কাজ করে, এটি চালিয়ে যান
জ্যাকস

15

আপনি যদি কেবল ইমেল ক্লায়েন্ট চান তবে আপনার android.content.Intent.EXTRA_EMAILএকটি অ্যারে ব্যবহার করা উচিত । এখানে একটি উদাহরণ যায়:

final Intent result = new Intent(android.content.Intent.ACTION_SEND);
result.setType("plain/text");
result.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { recipient });
result.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
result.putExtra(android.content.Intent.EXTRA_TEXT, body);

3
না, এখনও অনেকগুলি অ্যাপস নিয়ে আসে - এর চেয়ে অনেক বেশিACTION_SENDTO
ডরি

10

নিম্নলিখিত কোডটি আমার পক্ষে কাজ করে।

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"abc@gmailcom"});
Intent mailer = Intent.createChooser(intent, null);
startActivity(mailer);

8

থেকে Android বিকাশকারীদের ডক্স :

public void composeEmail(String[] addresses, String subject) {
    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);
    }
}

8

সম্পাদনা: Gmail এর নতুন সংস্করণ নিয়ে আর কাজ করছে না

কোনও চরিত্রের সাথে এটির কাজ করার জন্য আমি এই সময়ে খুঁজে পেয়েছি।

ডোরামামনের উত্তর হ'ল এখন যাওয়ার সঠিক উপায়, কারণ এটি Gmail এর নতুন সংস্করণে সমস্ত অক্ষরের সাথে কাজ করে।

পুরানো উত্তর:


আমারটা এখানে. বিষয় এবং বার্তা বডি সাপোর্ট এবং পুরো utf-8 অক্ষর সমর্থন সহ এটি সমস্ত Android সংস্করণে কাজ করে বলে মনে হচ্ছে:

public static void email(Context context, String to, String subject, String body) {
    StringBuilder builder = new StringBuilder("mailto:" + Uri.encode(to));
    if (subject != null) {
        builder.append("?subject=" + Uri.encode(Uri.encode(subject)));
        if (body != null) {
            builder.append("&body=" + Uri.encode(Uri.encode(body)));
        }
    }
    String uri = builder.toString();
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(uri));
    context.startActivity(intent);
}

1
+1 Uri.encodeযাওয়ার সঠিক উপায় way তবে বিষয় এবং শরীরের জন্য কেন এটি দুটি বার বলা হচ্ছে?
জিউলিও পিয়ানোস্টেলি

সুতরাং, নিজেকে এনকোডিং করা কেবল একটি খারাপ ধারণা। প্রয়োজনীয় অতিরিক্তগুলির সাথে সঠিক ইন্টেন্ট ব্যবহার করা আরও ভাল, উদাহরণস্বরূপ দেখুন
স্ট্যাকওভারফ্লো.com/

আমার পক্ষে এটি সেরা উত্তর কারণ অন্যান্য সমাধানগুলি কেবলমাত্র ইমেল অ্যাপ্লিকেশনগুলির সাথে সঠিকভাবে কাজ করে। এইটি আমি পরীক্ষিত প্রতিটি ইমেল অ্যাপ্লিকেশনটির সাথে কাজ করে।
ডিম

7

এই সমাধানগুলির কোনওটিই আমার পক্ষে কাজ করছে না। ললিপপটিতে কাজ করে এমন একটি ন্যূনতম সমাধান। আমার ডিভাইসে, কেবলমাত্র জিমেইল এবং নেটিভ ইমেল অ্যাপ্লিকেশনগুলি ফলাফল চয়নকারী তালিকায় উপস্থিত হয়।

Intent emailIntent = new Intent(Intent.ACTION_SENDTO,
                                Uri.parse("mailto:" + Uri.encode(address)));

emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);
startActivity(Intent.createChooser(emailIntent, "Send email via..."));

7

সমস্ত অ্যান্ড্রয়েড সংস্করণে কাজ করে:

String[] TO = {"email@server.com"};
    Uri uri = Uri.parse("mailto:email@server.com")
            .buildUpon()
            .appendQueryParameter("subject", "subject")
            .appendQueryParameter("body", "body")
            .build();
    Intent emailIntent = new Intent(Intent.ACTION_SENDTO, uri);
    emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
    startActivity(Intent.createChooser(emailIntent, "Send mail..."));

আপনার উত্তর আমাকে সাহায্য করেছে। ধন্যবাদ
আদনান খান

5

নিম্নলিখিত কোডটি আমার পক্ষে কাজ করেছে!

import android.support.v4.app.ShareCompat;
    .
    .
    .
    .
final Intent intent = ShareCompat.IntentBuilder
                        .from(activity)
                        .setType("application/txt")
                        .setSubject(subject)
                        .setText("Hii")
                        .setChooserTitle("Select One")
                        .createChooserIntent()
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET)
                        .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

activity.startActivity(intent);

5

এটি আমার পক্ষে পুরোপুরি সূক্ষ্মভাবে কাজ করে:

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("mailto:" + address));
    startActivity(Intent.createChooser(intent, "E-mail"));

5

আপনি যদি নিশ্চিত করতে চান যে আপনার উদ্দেশ্যটি কেবলমাত্র একটি ইমেল অ্যাপ্লিকেশন (এবং অন্য পাঠ্য বার্তাপ্রেরণ বা সামাজিক অ্যাপ্লিকেশন নয়) দ্বারা পরিচালিত হয়, তবে ACTION_SENDTOক্রিয়াটি ব্যবহার করুন এবং "মেলটো:" ডেটা স্কিম অন্তর্ভুক্ত করুন। উদাহরণ স্বরূপ:

public void composeEmail(String[] addresses, String subject) {
    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);
    }
}

আমি এটি https://developer.android.com/guide/components/intents-common.html# ইমেল এ পেয়েছি


5

মধ্যে Kotlin কেউ যদি খুঁজছেন হয়

val emailArrray:Array<String> = arrayOf("travelagentsupport@kkk.com")
val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:") // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, emailArrray)
intent.putExtra(Intent.EXTRA_SUBJECT, "Inquire about travel agent")
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

4

আপনি যখন সংযুক্তি প্রেরণ করছেন না তখন এই উত্তরগুলির বেশিরভাগটি কেবল একটি সাধারণ ক্ষেত্রে কাজ করে । আমার ক্ষেত্রে আমার মাঝে মাঝে সংযুক্তি (ACTION_SEND) বা দুটি সংযুক্তি (ACTION_SEND_MULTIPLE) প্রেরণ করা দরকার।

তাই আমি এই থ্রেড থেকে সর্বোত্তম পন্থা নিয়েছি এবং তাদের সংযুক্ত করেছি। এটি সমর্থন লাইব্রেরির ব্যবহার করছে ShareCompat.IntentBuilderতবে আমি কেবলমাত্র অ্যাপ্লিকেশনগুলি দেখি যা "মেইলটো:" ইউরির সাথে ACTION_SENDTO এর সাথে মেলে। এইভাবে আমি সংযুক্তি সমর্থন সহ কেবল ইমেল অ্যাপ্লিকেশনগুলির তালিকা পাই:

fun Activity.sendEmail(recipients: List<String>, subject: String, file: Uri, text: String? = null, secondFile: Uri? = null) {
    val originalIntent = createEmailShareIntent(recipients, subject, file, text, secondFile)
    val emailFilterIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
    val originalIntentResults = packageManager.queryIntentActivities(originalIntent, 0)
    val emailFilterIntentResults = packageManager.queryIntentActivities(emailFilterIntent, 0)
    val targetedIntents = originalIntentResults
            .filter { originalResult -> emailFilterIntentResults.any { originalResult.activityInfo.packageName == it.activityInfo.packageName } }
            .map {
                createEmailShareIntent(recipients, subject, file, text, secondFile).apply { `package` = it.activityInfo.packageName }
            }
            .toMutableList()
    val finalIntent = Intent.createChooser(targetedIntents.removeAt(0), R.string.choose_email_app.toText())
    finalIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedIntents.toTypedArray())
    startActivity(finalIntent)
}

private fun Activity.createEmailShareIntent(recipients: List<String>, subject: String, file: Uri, text: String? = null, secondFile: Uri? = null): Intent {
    val builder = ShareCompat.IntentBuilder.from(this)
            .setType("message/rfc822")
            .setEmailTo(recipients.toTypedArray())
            .setStream(file)
            .setSubject(subject)
    if (secondFile != null) {
        builder.addStream(secondFile)
    }
    if (text != null) {
        builder.setText(text)
    }
    return builder.intent
}

দেখে মনে হচ্ছে এটি কার্যকর হতে পারে; জাভাতে এটি পাওয়ার কোনও সুযোগ আছে?
কাইল হামফেল্ড

1
কোটলিন জাওয়ার সাথে খুব সমান, আপনার পেস্ট অনুলিপি করতে এবং কিছু জিনিস পরিবর্তন করতে সক্ষম হওয়া উচিত।
ডেভিড ভ্যাভরা

3

ব্যবহার করা intent.setType("message/rfc822");কাজ করে তবে এটি অতিরিক্ত অ্যাপ্লিকেশনগুলি দেখায় যা অগত্যা ইমেলগুলি হ্যান্ডেল করে না (যেমন জিড্রাইভ)। ব্যবহার Intent.ACTION_SENDTOসঙ্গে setType("text/plain")সবচেয়ে ভাল হয় কিন্তু আপনি যোগ আছে setData(Uri.parse("mailto:"))ভাল ফলাফলের (শুধুমাত্র ইমেল অ্যাপ্লিকেশানগুলি) জন্য। সম্পূর্ণ কোডটি নিম্নরূপ:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setType("text/plain");
intent.setData(Uri.parse("mailto:IT@RMAsoft.NET"));
intent.putExtra(Intent.EXTRA_SUBJECT, "Email from My app");
intent.putExtra(Intent.EXTRA_TEXT, "Place your email message here ...");
startActivity(Intent.createChooser(intent, "Send Email"));

পারফেক্ট soultion
Daxesh Vekariya

2

আপনি যদি জিমেইল টার্গেট করতে চান তবে নিম্নলিখিতগুলি করতে পারেন। নোট করুন যে অভিপ্রায়টি "ACTION_SENDTO" এবং "ACTION_SEND" নয় এবং অতিরিক্ত উদ্দিষ্ট ক্ষেত্রগুলি Gmail এর জন্য প্রয়োজনীয় নয়।

String uriText =
    "mailto:youremail@gmail.com" + 
    "?subject=" + Uri.encode("your subject line here") + 
    "&body=" + Uri.encode("message body here");

Uri uri = Uri.parse(uriText);

Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
if (sendIntent.resolveActivity(getPackageManager()) != null) {
   startActivity(Intent.createChooser(sendIntent, "Send message")); 
}

2

আমি আদিলের উত্তর কোটলিনে আপডেট করছি,

val intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("mailto:") // only email apps should handle this
intent.putExtra(Intent.EXTRA_EMAIL, Array(1) { "test@email.com" })
intent.putExtra(Intent.EXTRA_SUBJECT, "subject")
if (intent.resolveActivity(packageManager) != null) {
    startActivity(intent)
} else {
    showSnackBar(getString(R.string.no_apps_found_to_send_mail), this)
}

Gmail অ্যাপে থাকা অবস্থায়ও এটি ব্যর্থ হয়।
অ্যান্ড্রয়েডদেভ

@ অ্যান্ড্রয়েডদেভ কোন ডিভাইসে আপনি সমস্যার মুখোমুখি?
কিশান সোলঙ্কি

2

নীচের কোডটি ব্যবহার করুন:

                try {

                    String uriText =
                            "mailto:emailid" +
                                    "?subject=" + Uri.encode("Feedback for app") +
                                    "&body=" + Uri.encode(deviceInfo);
                    Uri uri = Uri.parse(uriText);
                    Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
                    emailIntent.setData(uri);
                    startActivity(Intent.createChooser(emailIntent, "Send email using..."));
                } catch (android.content.ActivityNotFoundException ex) {
                    Toast.makeText(ContactUsActivity.this, "No email clients installed.", Toast.LENGTH_SHORT).show();
                }

1

হতে পারে আপনার এটি চেষ্টা করা উচিত: intent.setType("plain/text");

আমি এটি এখানে খুঁজে পেয়েছি । আমি এটি আমার অ্যাপ্লিকেশনটিতে ব্যবহার করেছি এবং এটি কেবলমাত্র ই-মেল এবং জিমেইল বিকল্পগুলি দেখায়।


2
"সরল / পাঠ্য" এ ব্লুটুথ, স্কাইপ ইত্যাদি দেখায় অ্যান্ড্রয়েড বাজার অ্যাপ্লিকেশনটিতে কাঙ্ক্ষিত আউটপুট চেকআউট করুন। পদক্ষেপগুলি প্রশ্নের তালিকাভুক্ত রয়েছে।
দীরা

1
প্রেরণ ক্রিয়াকলাপ সম্পাদন করতে মাইম টাইপ ব্যবহার করা একটি খারাপ ধারণা, কারণ আপনি মূলত অ্যান্ড্রয়েডকে এমন একটি অ্যাপ্লিকেশনগুলির তালিকা সরবরাহের নির্দেশ দিচ্ছেন যা কোনও ফাইলের প্রেরণ সমর্থন করে plain/textএবং এটি কোনও বৈধ এমআইএমআই টাইপও নয়। এটি কোনও ইমেল প্রেরণের মতো নয় । ব্যবহার করুন mailto:পরিবর্তে প্রোটোকল, কারণ যে কী ই-মেইল ক্লায়েন্ট আসলে বুঝতে।
পল ল্যামার্টসমা

1

ফোনের ইমেল ক্লায়েন্টে একটি ইমেল রচনা করুন:

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, ""));

1

এটা ব্যবহার কর:

boolean success = EmailIntentBuilder.from(activity)
        .to("support@example.org")
        .cc("developer@example.org")
        .subject("Error report")
        .body(buildErrorReport())
        .start();

বিল্ড গ্রেড ব্যবহার করুন:

compile 'de.cketti.mailto:email-intent-builder:1.0.0'

1

এটি আমি ব্যবহার করি এবং এটি আমার পক্ষে কাজ করে:

//variables
String subject = "Whatever subject you want";
String body = "Whatever text you want to put in the body";
String intentType = "text/html";
String mailToParse = "mailto:";

//start Intent
Intent variableName = new Intent(Intent.ACTION_SENDTO);
variableName.setType(intentType);
variableName.setData(Uri.parse(mailToParse));
variableName.putExtra(Intent.EXTRA_SUBJECT, subject);
variableName.putExtra(Intent.EXTRA_TEXT, body);

startActivity(variableName);

এটি ব্যবহারকারীকে তাদের পছন্দের ইমেল অ্যাপ্লিকেশনটি চয়ন করতে দেবে। কেবলমাত্র এটি আপনাকে অনুমতি দেয় না তা হ'ল প্রাপকের ইমেল ঠিকানা সেট করা।


আপনি "২ য় লাইনে একটি মিস করছেন ।
টিম

1

এই কোডটি আমার ডিভাইসে কাজ করছে

Intent mIntent = new Intent(Intent.ACTION_SENDTO);
mIntent.setData(Uri.parse("mailto:"));
mIntent.putExtra(Intent.EXTRA_EMAIL  , new String[] {"mahendrarajdhami@gmail.com"});
mIntent.putExtra(Intent.EXTRA_SUBJECT, "");
startActivity(Intent.createChooser(mIntent, "Send Email Using..."));

এটি কেবলমাত্র আমার ডিভাইসে Gmail এবং ইমেল খুলবে
মহেন

1
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", email, null));
if (emailIntent.resolveActivity(context.getPackageManager()) != null) {
    context.startActivity(Intent.createChooser(emailIntent, "Send Email..."));
} else {
    Toast.makeText(context, "No apps can perform this action.", Toast.LENGTH_SHORT).show();
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.