سلام در این بخش به اموزش ارسال ایمیل میپردازیم.همانطور که میدانید شما در مورد Android Intent فراگرفته اید که آبجکتی است که هدفی را دنبال می کند، به عنوان مثال پیامی از یک مولفه به مولفه دیگر در داخل و یا خارج از برنامه.

لازم نیست کاربر ایمیل خود را از پیش نویس فراتر ببرید زیرا مانند Gmail و K9mail در دسترس می باشند. ولی نیاز خواهید داشت که ایمیل را از برنامه ی اندروید خود ارسال کنید، جایی که مجبور خواهید بود فعالیتی را ثبت کنید که شروع فعالیت یک کاربر ایمیل را نیاز دارد و با استفاده از دستگاه اندروید شما ایمیل ارسال می کند. به این منظور فعالیت شما همراه با بارگذاری داده های مناسب، یک ACTION_SEND به برطرف کننده ی Android Intent ارسال می کند. انتخاب کننده ی تعیین شده، اینترفیس مناسب را برای یوزر ارائه می دهد تا انتخاب کند چگونه داده ی ایمیل شما را ارسال کند.

بخش بعدی قسمت های مختلف یک Intent object، که برای ارسال ایمیل لازم می باشد، توضیح می دهد.

Intent Object_ عمل ارسال ایمیل

شما ازفعالیت ACTION_SEND برای آغاز یک کاربر ایمیل نصب شده روی دستگاه ایمیل خود، استفاده خواهید کرد. در زیر ترکیب ساده برای ایجاد یک هدف با عمل ACTION_SEND را مشاهده می کنید.

I Intent emailIntent = new Intent(Intent.ACTION_SEND);

Intent Object_ نوع داده برای ارسال ایمیل

برای ارسال یک ایمیل باید mailto را مشخص کنید. همان طور که URI از روش setData() استفاده می کند، و نوع داده با استفاده از روش setType() از نوع text/plain خواهد بود، مانند زیر

ema emailIntent.setData(Uri.parse(“mailto:”));
emailIntent.setType(“text/plain”);

Intent Object_ ضمیمه برای ارسال ایمیل

اندروید در پشتیبانی می تواند فیلدهای TO، SUBJECT،CC ، TEXT و غیره را اضافه کند، که می توانند قبل از ارسال به کاربر ایمیل هدف، به intent ضمیمه شوند. شما می توانید از فیلدهای اضافه ی زیر برای ایمیل خود استفاده کنید.

S.N.

Extra Data & Description

۱

EXTRA_BCC
یک رشته ی [] آدرس های ایمیلی را نگه می دارد که باید نسخه ی کپی شده ی مستور باشند.

۲

EXTRA_CC
یک رشته ی [] آدرس های ایمیلی را نگه می دارد که باید نسخه ی کپی شده باشند.

۳

EXTRA_EMAIL
یک رشته ی [] آدرس های ایمیلی را نگه می دارد که باید به آنها تحویل داده شود.

۴

EXTRA_HTML_TEXT

یک رشته ی ثابت که با Intent در ارتباط است، و با ACTION_SEND استفاده می شود تا به محض اینکه HTML متن را فرمت کرد برای EXTRA_TEXT یک گزینه فراهم کند.

۵

EXTRA_SUBJECT

یک رشته ی ثابت که خط موضوع مورد نظر را از یک متن نگه می دارد.

۶

EXTRA_TEXT
یک CharSequence ثابت که با Intent در ارتباط است، با ACTION_SEND مورد استفاده قرار می گیرد تا داده ی لیترال را برای ارسال فراهم کند.

۷

EXTRA_TITLE
یک تیتر گفتگوی CharSequence برای ارائه به یوزر می باشد زمانی که با یک ACTION_CHOOSER مورد استفاده قرار می گیرد.

در اینجا مثالی را می بینید که نشان می دهد چگونه داده ی اضافه را به Intent خود اختصاص دهید.

emailIntent.putExtra(Intent.EXTRA_EMAIL , new String[]{“recipient@example.com”});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, “subject of email”);
emailIntent.putExtra(Intent.EXTRA_TEXT , “body of email”);

مثال

مثال زیر به در عمل به شما نشان می دهد که چگونه از intent object برای آغاز کاربر ایمیل استفاده کنید تا یک ایمیل به گیرنه های ارائه شده ارسال کنید.

برای انجام این آزمایش شما به یک دستگاه موبایل مجهز شده به آخرین نسخه ی Android OS نیاز خواهید داشت، در غیر اینصورت مجبور خواهید بود با مقلدی تلاش کنید که ممکن است به درستی کار نکند. دوم اینکه شما به یک کاربر ایمیل مانند Gmail یا K9mail نصب شده روی دستگاه خود نیاز خواهید داشت.

مراحل

توضیحات

۱

شما از Eclipse IDE برای ایجاد یک برنامه ی اندروید استفاده خواهید کرد و آن را با عنوان SendEmailDemo تحت یک پکیج com.example.sendemaildemo نام گذاری می کنید. در هنگام ایجاد این برنامه مطمئن شوید که SDK و Compile را با آخرین ورژن اندروید SDK هدف قرار داده اید تا از API های سطوح بالاتر استفاده کنید.

۲

فایل src/MainActivity.java را تغییر دهید و کد مورد نیاز را برای حفظ ارسال ایمیل به آن بیفزایید.

۳

لی اوت فایل XML را به res/layout/activity_main.xml تغییر دهید، و هر گونه مولفه ی GUI را اگر لازم است به آن بیفزایید. من برای آغاز یک کاربر ایمیل (Email Client) در حال افزودن یک دکمه ی ساده میباشم.

۴

res/values/strings.xml را تغییر دهید تا مقادیر ثابت مورد نیاز را تعریف کنید.

۵

AndroidManifest.xml را به روشی که در زیر نشان داده شده تغییر دهید.

۶

برای آغاز مقلد اندروید برنامه را اجرا کنید و نتایج تغییرات انجام شده در برنامه را بررسی کنید.

در زیر محتوای تغییر یافته فایل اصلی فعالیت را مشاهده می کنید.

src/com.example.sendemaildemo/MainActivity.java.

package com.example.sendemaildemo;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startBtn = (Button) findViewById(R.id.sendEmail);
startBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendEmail();
}
});
}
protected void sendEmail() {
Log.i(“Send email”, “”);
String[] TO = {“amrood.admin@gmail.com”};
String[] CC = {“mcmohd@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, “Your subject”);
emailIntent.putExtra(Intent.EXTRA_TEXT, “Email message goes here”);
try {
startActivity(Intent.createChooser(emailIntent, “Send mail…”));
finish();
Log.i(“Finished sending email…”, “”);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this,
“There is no email client installed.”, Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}

در ادامه محتوای فایل res/layout/activity_main.xml را مشاهده می کنید.

‎ ‎