ارسال ایمیل در اندروید

پنجشنبه 15 بهمن 1394

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

ارسال ایمیل در اندروید

داخل لایه ی activity خود از textview و edittext برای وارد کردن اطلاعات استفاده می نمایید:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/linearLayout1"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical"
              android:padding="5dp" >
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="مقصد"
            android:textAppearance="?android:attr/textAppearanceLarge" android:layout_gravity="right"/>
    <EditText
            android:id="@+id/toEmail"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="لطفا ایمیل مقصد را وارد نمایید" android:layout_gravity="right" android:gravity="right"
            >
    </EditText>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="موضوع"
            android:textAppearance="?android:attr/textAppearanceLarge" android:layout_gravity="right"/>
    <EditText
            android:id="@+id/subject"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="right" android:hint="لطفا موضوع را وارد نمایید">
    </EditText>
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="پیام"
            android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="right"
            android:layout_gravity="right"/>
    <EditText
            android:id="@+id/emailBody"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="top|right"
            android:inputType="textMultiLine"
            android:lines="5" android:layout_gravity="right" android:hint="لطفا متن پیام را وارد نمایید"/>
</LinearLayout>

برای ارسال ایمیل و پاک کردن متن های نوشته شده می خواهیم از یک منو استفاده کنیم، برای همین یک پوشه به نام منو ایجاد نمایید و داخل آن یک فایل xml ایجاد نمایید و آیتم های منو را داخل آن قرار دهید:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
            android:id="@+id/menu_clear"
            android:icon="@android:drawable/ic_menu_close_clear_cancel"
            android:showAsAction="ifRoom|withText"
            android:title="Clear"/>
    <item
            android:id="@+id/menu_send"
            android:icon="@android:drawable/ic_menu_send"
            android:showAsAction="ifRoom|withText"
            android:title="Send"/>
</menu>

حالا باید کلاس جاوا را برای ان تعریف نمایید به صورت زیر:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
public class MyActivity extends Activity {
    private EditText toEmail = null;
    private EditText emailSubject = null;
    private EditText emailBody = null;
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        toEmail = (EditText) findViewById(R.id.toEmail);
        emailSubject = (EditText) findViewById(R.id.subject);
        emailBody = (EditText) findViewById(R.id.emailBody);
    }

    /**
     * صدا زدن منو برای ارسال پیام
     *
     *
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_clear:
                toEmail.setText("");
                emailBody.setText("");
                emailSubject.setText("");
                break;
            case R.id.menu_send:
                String to = toEmail.getText().toString();
                String subject = emailSubject.getText().toString();
                String message = emailBody.getText().toString();

                Intent email = new Intent(Intent.ACTION_SEND);
                email.putExtra(Intent.EXTRA_EMAIL, new String[] { to });
                email.putExtra(Intent.EXTRA_SUBJECT, subject);
                email.putExtra(Intent.EXTRA_TEXT, message);

                // need this to prompts email client only
                email.setType("message/rfc822");

                startActivity(Intent.createChooser(email, "Choose an Email client"));

                break;
        }
        return true;
    }
}

برای ارسال ایمیل مورد نظر از دستور switch استفاده شده است، این دستور از دو case استفاده شده است یک case برای پاک کردن edittext استفاده می شود، و case دوم برای گرفتن اطلاعات و ارسال به intent ارسال ایمیل و با زدن آن ایمیل مورد نظر با استفاده از نرم افزار نصب شده روی سیتم اندروید خود ارسال می شود.

خروجی به صورت زیر است:

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید