ارسال ایمیل در اندروید - در برنامه نویسی اندروید

قبل از انجام فعالیت ارسال ایمیل در اندروید ، باید عملکرد ایمیل با Intent را بدانید. Intent داده ها را از یک کامپوننت به کامپوننت دیگری در داخل برنامه و خارج از برنامه منتقل می کند.

برای ارسال ایمیل از برنامه خود، لازم نیست از ابتدا یک سرویس گیرنده ایمیل پیاده سازی کنید، اما می توانید از یک برنامه ایمیل موجود مانند برنامه ایمیل پیش فرض ارائه شده از Android، Gmail، Outlook، K-9 Mail و غیره استفاده کنید. برای این منظور، باید یک Activity بنویسیم که یک سرویس گیرنده ایمیل را با استفاده از یک Intent ضمنی با عملکرد و داده های مناسب راه اندازی کند. در این مثال، ما با استفاده از یک شیء Intent که کلاینت‌های ایمیل موجود را راه‌اندازی می‌کند، یک ایمیل از برنامه خود ارسال می‌کنیم.

بخش زیر بخش‌های مختلف شی Intent مورد نیاز برای ارسال ایمیل را توضیح می‌دهد.

آبجکت Intent – اقدام برای ارسال ایمیل در اندروید

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

Intent emailIntent = new Intent(Intent.ACTION_SEND);

آبجکت Intent – داده / نوع ارسال ایمیل

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

emailIntent.setData(Uri.parse("mailto:"));
emailIntent.setType("text/plain");

آبجکت Intent – داده های اضافی برای ارسال ایمیل

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

اطلاعات اضافی و توضیحات ردیف
EXTRA_BCC

یک string[] که نشانی‌های ایمیل را در خود نگه می‌دارد که باید کپی شوند.

1
EXTRA_CC

یک string[] حاوی آدرس‌های ایمیلی که باید کپی شوند.

2
EXTRA_EMAIL

لیست ایمیلی های مقصد را مشخص میکند.

3
EXTRA_HTML_TEXT

یک رشته ثابت که به Intent مرتبط است، با ACTION_SEND برای ارائه جایگزینی برای EXTRA_TEXT به عنوان متن قالب‌بندی شده HTML استفاده می‌شود.

4
EXTRA_SUBJECT

متن موضوع ایمیل را مشخص میکند.

5
EXTRA_TEXT

یک CharSequence ثابت که به Intent مرتبط است و با ACTION_SEND برای ارائه داده‌های تحت اللفظی ارسالی استفاده می‌شود.

6
EXTRA_TITLE

عنوان محاوره ای CharSequence برای ارائه به کاربر هنگام استفاده با ACTION_CHOOSER.

7

کدهای زی مثالی است که تنظیم intent ارسال ایمیل را مشخص میکند:

emailIntent.putExtra(Intent.EXTRA_EMAIL  , new String[]{"ایمیل دریافت کننده"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "عنوان ایمیل");
emailIntent.putExtra(Intent.EXTRA_TEXT   , "متن بدنه ایمیل");

مثال

مثال زیر بطور عملی نشان میدهد که چگونه میتوان از شیء Intent برای راه اندازی سرویس گیرنده ایمیل برای ارسال ایمیل به گیرندگان داده شده, استفاده شود. برای اجرای این مثال, مراحل زیر را دنبال کنید:

مراحل و توضیحات ردیف
در AndroidStudio یک پروژه جدید با پکیج نیم جدید ایجاد کنید و مراحل زیر را دنبال کنید. 1
کدهای درون فایل MainActivity.class را مطابق کدهای که در پایین وجود دارد تغییر بدهید. 2
کدهای درون فایل activity_main.xml را مطابق کدهای که در پایین وجود دارد تغییر بدهید. 3
برنامه را بر روی یک تلفن واقعی یا شبیه ساز اجرا کنید و تست را انجام بدهید. 5

کدهای فایل MainActivity.java

package com.example.test12a;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private EditText email, title, content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        email = findViewById(R.id.email_address);
        title = findViewById(R.id.email_title);
        content = findViewById(R.id.email_content);

        findViewById(R.id.sendEmail).setOnClickListener(v -> {
            String eA = email.getText().toString();
            String eT = title.getText().toString();
            String eC = content.getText().toString();

            if(eA.isEmpty() || eT.isEmpty() || eC.isEmpty()){
                Toast.makeText(this, "وارد کردن تمامی موارد الزامی است", Toast.LENGTH_SHORT).show();
            }else {
                sendEmail(eA, eT, eC);
            }
        });
    }

    @SuppressLint("IntentReset")
    private void sendEmail(String emailAddress, String emailTitle, String emailContent){
        Intent emailIntent = new Intent(Intent.ACTION_SEND);

        emailIntent.setData(Uri.parse("mailto:" + emailAddress));
        emailIntent.setType("text/plain");
        emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{emailAddress});
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, emailTitle);
        emailIntent.putExtra(Intent.EXTRA_TEXT, emailContent);

        try {
            startActivity(Intent.createChooser(emailIntent, "درحال ارسال ایمیل ..."));
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(MainActivity.this, "هیچ برنامه ای برای ارسال ایمیل پیدا نشد.", Toast.LENGTH_SHORT).show();
        }
    }


}

کدهای فایل activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center|top"
    android:padding="16dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="مثال ارسال ایمیل"
        android:textSize="30sp" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="7cloner.com"
        android:textColor="#2196F3"
        android:textSize="30sp" />


    <EditText
        android:id="@+id/email_address"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="55dp"
        android:padding="8dp"
        android:layout_marginBottom="8dp"
        android:hint="آدرس ایمیل"/>

    <EditText
        android:id="@+id/email_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:minHeight="55dp"
        android:padding="8dp"
        android:hint="عنوان ایمیل"/>

    <EditText
        android:id="@+id/email_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="160dp"
        android:padding="8dp"
        android:gravity="top|start"
        android:hint="متن ایمیل"/>


    <Button
        android:id="@+id/sendEmail"
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:text="ارسال ایمیل" />

</LinearLayout>

سرآخر بعد از اجرا میتوانید تست کنید و عملکرد برنامه را بسنجدید. ما پروژه را اجرا کرده ایم و نتیجه کار به این صورت بود:

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

در این آموزش, عمل ارسال ایمیل توسط یک برنامه دیگر انجام میگیرد و اپ ما تنها درخواست ارسال ایمیل را انجام میدهد.

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر نیاز است تا ابتدا وارد سایت شوید.

هیچ نظری ارسال نشده است.

قیمت آموزش
رایگان
نوع دسترسی
رایگان

این مقاله در حال حاضر تنها به روش رایگان در دسترس می باشد.

ناصر خالدی
مدرس دوره

ناصر خالدی

مهندس شبکه, امنیت, برنامه نویسی تلفن های هوشمند, طراح وب سایت و متخصص هوش مصنوعی

گفتگوی برنامه نویسان

بخشی برای حل مشکلات برنامه‌نویسی و مباحث پیرامون آن

دوره های پیشنهادی

مقالات پیشنهادی

پی اچ پی - PHP

با استفاده از این زبان می توان وب سایت های پویا طراحی کرد, این زبان می تواند با HTML ادغام شود, در حقیقت یک زبان اسکریپتی متن باز و رایگان است. یعنی زمانی که سرور درخواست ...


۹۴۳
۰
۱۳ آذر ۱۳۹۹

نود جی اس

توسعه دهندگان نود جی اس, زبان جاوا اسکریپت را از یک زبان قابل اجرا در مرورگر خارج کرده و به زبانی تبدیل کردن که بتوان آن را بصورت یه اپلیکیشن مستفل اجرا کرد و ...


۹۱۲
۰
۱۲ آذر ۱۳۹۹

وردپرس

وردپرس یک سیستم مدیریت محتوای قوی می باشد که با استفاده از آن می توان وب سایت ها و وبلاگ های گوناگونی با هر شرایطی را طراحی کرد چرا که این سیستم و ...


۸۰۵
۰
۱۳ آذر ۱۳۹۹

هوش مصنوعی

هوش مصنوعی یا هوش ماشینی, به هوشمندی نشان داده شده توسط ماشین در شرایط مختلف گفته میشود که مقابل هوش طبیعی در انسان ها قرار دارد که ...


۸۶۰
۰
۱۱ آذر ۱۳۹۹

Fatal error: Uncaught wfWAFStorageFileException: Unable to verify temporary file contents for atomic writing. in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php:52 Stack trace: #0 /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php(659): wfWAFStorageFile::atomicFilePutContents('/home/clonerco/...', '<?php exit('Acc...') #1 [internal function]: wfWAFStorageFile->saveConfig('livewaf') #2 {main} thrown in /home/clonerco/public_html/wp-content/plugins/wordfence/vendor/wordfence/wf-waf/src/lib/storage/file.php on line 52