Как отправить email с Android?

Давайте научимся отправлять email сообщение с вашего устройства с ОС Android.

Что мы будем делать?

Попытаемся отправить Email сообщение с вашего телефона, но для этого мы реализуем свой клиент который будет отправлять письмо на указанный вами email адрес.

Шаг 1

Создаем Android проект и создаем layout -> main.xml со следующим содержимым:

<?xml version="1.0" encoding="utf-8"?>
<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" >

    <TextView
            android:id="@+id/textViewPhoneNo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Кому : "
            android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
            android:id="@+id/editTextTo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress" >

        <requestFocus />

    </EditText>

    <TextView
            android:id="@+id/textViewSubject"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Тема : "
            android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
            android:id="@+id/editTextSubject"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            >
    </EditText>

    <TextView
            android:id="@+id/textViewMessage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Сообщение : "
            android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
            android:id="@+id/editTextMessage"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="top"
            android:inputType="textMultiLine"
            android:lines="5" />

    <Button
            android:id="@+id/buttonSend"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Отправить" />

</LinearLayout>

Выглядеть этот layout будет так:

Шаг 2

Теперь создадим Activity который и будет выполнять отправку сообщения на email.

Создаем класс MainActivity.java со следующим содержимым:

package com.devcolibri.client;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
    private Button buttonSend;
    private EditText textTo;
    private EditText textSubject;
    private EditText textMessage;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        buttonSend = (Button) findViewById(R.id.buttonSend);
        textTo = (EditText) findViewById(R.id.editTextTo);
        textSubject = (EditText) findViewById(R.id.editTextSubject);
        textMessage = (EditText) findViewById(R.id.editTextMessage);

        buttonSend.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                String to = textTo.getText().toString();
                String subject = textSubject.getText().toString();
                String message = textMessage.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);

                //для того чтобы запросить email клиент устанавливаем тип
                email.setType("message/rfc822");

                startActivity(Intent.createChooser(email, "Выберите email клиент :"));

            }
        });
    }
}

Как видите мы используем стандартный email клиент Android, чтобы с его помощью отправить уже заготовленное нами сообщение. Это делается следующим образом:

Intent email = new Intent(Intent.ACTION_SEND);
//Указываем получателя
email.putExtra(Intent.EXTRA_EMAIL, new String[]{"alex@devcolibri.com"});		  
//Устанавливаем Тему сообщения
email.putExtra(Intent.EXTRA_SUBJECT, "subject");
//Устанавливаем само сообщение
email.putExtra(Intent.EXTRA_TEXT, "message");
//тип отправляемого сообщения
email.setType("message/rfc822");
//Вызываем intent выбора клиента для отправки сообщения
startActivity(Intent.createChooser(email, "Выберите email клиент :"));

Шаг 3

Запускаем и смотрим:

После нажатия на кнопку Отправить появится окно, где вам нужно будет авторизоваться в Gmail, после чего можно отправить ваше сообщение.

Жмем кнопку Send. Готово сообщение отправлено.

Шаг 4

Проверяем пришло ли сообщение на отправленный email:

Как видите сообщение пришло.

И его содержимое соответствует тому что мы писали в нашем клиенте.

Урок создан: 25 мая 2013 | Просмотров: 18630 | Автор: Александр Барчук | Правила перепечатки


Добавить комментарий

Добавить комментарий

Ваш e-mail не будет опубликован.

Комментарии:

  • 30 мая 2013 в 10:08

    Сергей

    Спасибо, как раз нужно!

  • 11 августа 2013 в 18:49

    Maxim

    А как в таком случае отправлять файлы из internal Storage и External Storage?

  • 16 марта 2014 в 16:13

    Антон

    А как проверить наличие настроек почтового клиента?

  • 09 февраля 2017 в 19:41

    Vitaliy

    а если на телефоне нету приложений использующих ACTION_SEND (кто то удалил) то выпадаем в Эксепшн!?

    • 19 апреля 2017 в 13:59

      Дмитрий

      Не будьте занудны. Это просто пример. Разумеется, лучше через tr..catch делать.

  • 04 мая 2017 в 21:07

    Александр

    Можете сделать подробный разбор библиотеки okhttp ,как подключить установить и как пользоваться///