آموزش ارسال ایمیل در برنامه نویسی اندروید
ایمیل ها در واقع پیامهایی هستند که توسط سیستم الکترونیک توزیع شده است؛ یعنی با کمک شبکه، از یک کاربر سیستم به یک یا چند گیرنده ارسال می شود.
قبل از شروع Activity ایمیل، باید عملکرد ایمیل و اینتنت آن را بدانید، Intent داده ها را از یک جزء به مؤلفه دیگر انتقال می دهد؛ که ممکن است درون اپلیکیشن باشد یا خارج از آن.
برای ارسال ایمیل از اپلیکیشن خودتان، از ابتدا مجبور نیستید یک سرویس ایمیل پیاده سازی کنید، اما می توانید از یک برنامه موجود مانند اپلیکیشن پیش فرض پست الکترونیکی استفاده کنید که توسط اندروید؛ جی میل، اوت لوک، K-9 Mail و غیره ارائه شده است. به این منظور، ما باید آن Activity را بنویسیم که با استفاده از یک اینتنت ضمنی با عملکرد و داده های مناسب، یک سرویس دهنده ایمیل را راه اندازی کند. در این مثال ، ما می خواهیم با استفاده از یک شی Intent که سرویس های ارسال ایمیل موجود را راه اندازی می کند، یک ایمیل از برنامه خود ارسال کنیم.
بخش بعدی؛ قسمت های متفاوت شیء Intent که برای ارسال یک ایمیل لازم است؛ را توضیح می دهد:
شیء Intent- عملیات ارسال ایمیل
شما از ACTION_SEND استفاده می کنید تا یک سرویس ارسال ایمیل نصب شده روی دستگاه اندرویدتان را راه اندازی کنید. سینتکس ساده ی زیر برای ایجاد اینتنت با ACTION_SEND می باشد.
Intent emailIntent = new Intent(Intent.ACTION_SEND);
نوع/داده -شیء Intent برای ارسال ایمیل
برای ارسال یک ایمیل؛ شما باید mailto را با استفاده از متد ()setData به عنوان یک URI مشخص کنید و نوع داده با استفاده از متد ()setType باید مانند زیر به صورت text/plain باشد:
emailIntent.setData(Uri.parse(“mailto:”));
emailIntent.setType(“text/plain”);
شیء Intent – اضافی برای ارسال ایمیل
اندروید برای اضافه کردن TO، SUBJECT، CC، TEXT پشتیبانی داخلی دارد. در واقع فیلدهایی هستند که پیش از ارسال اینتنت به یک سرویس ارسال ایمیل هدف؛ می توان به آن اینتنت پیوست کرد. شما می توانید از فیلدهای اضافی زیر در ایمیل خود استفاده کنید:
ردیف | داده های اضافی و توضیح |
۱ | EXTRA_BCC
یک رشته ([ ]String) می باشد که آدرس های ایمیلی را نگه می دارد که باید به صورت بلایند کاربن کپی شده باشند (BCC) |
۲ | EXTRA_CC
یک رشته ([ ]String) می باشد که آدرس های ایمیلی را نگه می دارد که باید به صورت کاربن کپی شده باشند (CC) |
۳ | EXTRA_EMAIL
یک رشته ([ ]String) می باشد که آدرس های ایمیلی را نگه می دارد که باید تحویل بشوند. |
۴ | EXTRA_HTML_TEXT
یک رشته ثابت که با Intent همراه است، که به منظور ارائه جایگزینی برای EXTRA_TEXT به عنوان متن فرمت شده ی HTML با ACTION_SEND استفاده شده است. |
۵ | EXTRA_SUBJECT
یک رشته ثابت که ارائه دهنده ی یک خط می باشد که می توانید موضوع پیام را به صورت دلخواه بنویسید. |
۶ | EXTRA_TEXT
یک CharSequence ثابت که با اینتنت همراه شده است و با ACTION_SEND برای ارائه ی داده های اینتنتی که باید ارسال شود؛ استفاده می شود. |
۷ | EXTRA_TITLE
یک عنوان گفتگوی CharSequence و هنگامی که باACTION_CHOOSER استفاده می شود؛ برای ارائه به کاربر فراهم شده است. |
در این جا یک مثال آورده شده است و به شما نشان می دهد که چگونه می توانید داده های اضافی را به Intent خود اضافه کنید.
emailIntent.putExtra(Intent.EXTRA_EMAIL , new String[]{“Recipient”});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, “subject”);
emailIntent.putExtra(Intent.EXTRA_TEXT , “Message Body”);
خروجی کد بالا مانند تصویری است که در زیر می بینید:
مثال
مثال زیر به صورت عملی به شما نشان می دهد که چگونه می توانید برای راه اندازی سرویس گیرنده ایمیل از شیء Intent استفاده کنید تا بتوانید یک ایمیل را به گیرنده های داده شده ارسال نمایید.
برای آزمایش کردن این مثال، شما به یک دستگاه موبایل حقیقی احتیاج دارید که با آخرین سیستم عامل اندروید تجهیز شده است؛ در غیر این صورت؛ احتمالاً با شبیه ساز درگیر می شوید زیرا ممکن است به درستی کار نکند. دوم این که شما باید یک سرویس ارسال ایمیل مانند جی میل داشته باشید (به صورت پیش فرض همه نسخه های اندروید یک اپلیکیشن سرویس ارسال ایمیل دارند)؛ همچنین می توانید K9mail را روی دستگاه خود نصب کنید.
ردیف | توضیح |
۱ | شما برای ایجاد یک اپلیکیشن اندروید از استودیو اندروید استفاده می کنید و آن را تحت بسته ی com.example.tutorialspoint به صورت Tutorialspoint نام گذاری می نمایید. |
۲ | اصلاح فایل src/MainActivity.java و اضافه کردن یک کد مورد نیاز برای مراقبت از ایمیل در حال ارسال |
۳ | اصلاح فایل XML طرح بندی res/layout/activity_main.xml هر مؤلفه GUI مورد نیاز را اضافه می کند. من یک دکمه ساده را برای راه اندازی سرویس ارسال ایمیل اضافه کرده ام. |
۴ | اصلاح res/values/strings.xml برای تعریف مقادیر ثابت مورد نیاز |
۵ | اصلاح AndroidManifest.xml به شکلی که در زیر نشان داده شده است. |
۶ | اجرای اپلیکیشن برای راه اندازی شبیه ساز اندروید و تأیید این که نتایج تغییرات در اپلیکیشن انجام شده است. |
در ادامه می توانید محتوای فایل activity اصلی اصلاح شده src/com.example.Tutorialspoint/MainActivity.java را مشاهده کنید:
package com.example.tutorialspoint;
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 = {“”};
String[] CC = {“”};
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();
}
برنامه نویسی اندروید رو قورت بده! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی با ساخت اپلیکیشن و بازی، سه پک زیر جوابت هست:
}
}
در ادامه ، محتوای فایل res/layout/activity_main.xml را مشاهده می کنید:
(در این قسمت abc نشان دهنده لوگوی tutorialspoint می باشد)
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:orientation=”vertical” >
<TextView
android:id=”@+id/textView1″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Sending Mail Example”
android:layout_alignParentTop=”true”
android:layout_centerHorizontal=”true”
android:textSize=”30dp” />
<TextView
android:id=”@+id/textView2″
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”Tutorials point “
android:textColor=”#ff87ff09″
android:textSize=”30dp”
android:layout_above=”@+id/imageButton”
android:layout_alignRight=”@+id/imageButton”
android:layout_alignEnd=”@+id/imageButton” />
<ImageButton
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:id=”@+id/imageButton”
android:src=”@drawable/abc”
android:layout_centerVertical=”true”
android:layout_centerHorizontal=”true” />
<Button
android:id=”@+id/sendEmail”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/compose_email”/>
</LinearLayout>
در ادامه محتوای res/values/strings.xml را برای تعریف دو ثابت جدید مشاهده می کنید:
<?xml version=”1.0″ encoding=”utf-8″?>
<resources>
<string name=”app_name”>Tutorialspoint</string>
<string name=”compose_email”>Compose Email</string>
</resources>
در ادامه محتوای پیش فرض AndroidManifest.xml را مشاهده می کنید.
<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.example.Tutorialspoint” >
<application
android:allowBackup=”true”
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
<activity
android:name=”com.example.tutorialspoint.MainActivity”
android:label=”@string/app_name” >
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
</application>
</manifest>
اجازه دهید اپلیکیشن tutorialspoint شما را امتحان کنیم. فرض می کنیم که دستگاه موبایل اندروید حقیقی تان را به کامپیوتر وصل کرده اید. برای اجرای اپلیکیشن از استودیوی اندروید؛ یکی از فایل های activity پروژه تان را باز کنید و روی آیکون اجرا کلیک کنید که در قسمت نوار ابزار قرار دارد. قبل از این که اپلیکیشن خود را اجرا کنید؛ نصب کننده استودیو اندروید؛ پنجره زیر را نشان می دهد که بتوانید گزینه ای را انتخاب کنید که در آن بتوانید اپلیکیشن اندروید خودتان را اجرا کنید. دستگاه موبایل خود را به عنوان یک گزینه انتخاب کنید و سپس آن را بررسی کنید که صفحه زیر را نمایش می دهد:
اکنون از دکمه Compose Email استفاده کنید که تمام سرویس های ارسال ایمیل را برای شما فهرست می کند. از این لیست شما می توانید یکی از سرویس های ارسال ایمیل را انتخاب کنید. من می خواهم سرویس ارسال ایمیل جیمیل استفاده کرده و ایمیل خود را بفرستم که در آن تمامی فیلدهای پیش فرض ارائه شده، مانند زیر در دسترس می باشد. اینجا در قسمت From : شناسه پیش فرض ایمیلی است که شما برای دستگاه اندروید خودتان استفاده کرده اید:
شما می توانید هر یک از فیلدهای پیش فرض داده شده را اصلاح کنید و در نهایت از دکمه ارسال ایمیل استفاده می کنید تا ایمیل خود را به گیرنده های ذکر شده ارسال کنید.