Учебники

Android — отправка электронной почты

Электронная почта — это сообщения, распространяемые с помощью электронных средств от одного пользователя системы одному или нескольким получателям через сеть.

Прежде чем приступить к работе с электронной почтой, вы должны знать функциональность электронной почты с намерением. Намерение передает данные из одного компонента в другой компонент в приложении или за его пределами.

Чтобы отправить электронное письмо из вашего приложения, вам не нужно реализовывать почтовый клиент с самого начала, но вы можете использовать существующий, такой как почтовое приложение по умолчанию, предоставляемое из Android, Gmail, Outlook, K-9 Mail и т. Д. Для этого Для этого нам нужно написать Activity, которая запускает почтовый клиент с неявным намерением с правильным действием и данными. В этом примере мы собираемся отправить электронное письмо из нашего приложения с помощью объекта Intent, который запускает существующие почтовые клиенты.

В следующем разделе описываются различные части нашего объекта Intent, необходимые для отправки электронного письма.

Intent Object — Действие для отправки электронной почты

Вы будете использовать действие ACTION_SEND для запуска почтового клиента, установленного на вашем Android-устройстве. Ниже приведен простой синтаксис для создания намерения с действием ACTION_SEND.

Intent emailIntent = new Intent(Intent.ACTION_SEND);

Намеренный объект — данные / тип для отправки электронной почты

Чтобы отправить электронное письмо, вам нужно указать mailto: в качестве URI, используя метод setData (), а тип данных будет text / plain, используя метод setType () следующим образом:

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

Intent Object — Дополнительно для отправки электронной почты

Android имеет встроенную поддержку для добавления полей TO, SUBJECT, CC, TEXT и т. Д., Которые можно прикрепить к цели перед отправкой намерения целевому почтовому клиенту. Вы можете использовать следующие дополнительные поля в вашей электронной почте —

Sr.No. Дополнительные данные и описание
1

EXTRA_BCC

Строка [], содержащая адреса электронной почты, которые должны быть слепо скопированы.

2

EXTRA_CC

Строка [], содержащая адреса электронной почты, которые должны быть скопированы.

3

EXTRA_EMAIL

Строка [], содержащая адреса электронной почты, которые должны быть доставлены.

4

EXTRA_HTML_TEXT

Константа String, связанная с Intent, используемая с ACTION_SEND для предоставления альтернативы EXTRA_TEXT в виде текста в формате HTML.

5

EXTRA_SUBJECT

Постоянная строка, содержащая желаемую строку темы сообщения.

6

EXTRA_TEXT

Константа CharSequence, связанная с Intent, используемая с ACTION_SEND для предоставления литеральных данных для отправки.

7

EXTRA_TITLE

Заголовок диалога CharSequence для предоставления пользователю при использовании с ACTION_CHOOSER.

EXTRA_BCC

Строка [], содержащая адреса электронной почты, которые должны быть слепо скопированы.

EXTRA_CC

Строка [], содержащая адреса электронной почты, которые должны быть скопированы.

EXTRA_EMAIL

Строка [], содержащая адреса электронной почты, которые должны быть доставлены.

EXTRA_HTML_TEXT

Константа String, связанная с Intent, используемая с ACTION_SEND для предоставления альтернативы EXTRA_TEXT в виде текста в формате HTML.

EXTRA_SUBJECT

Постоянная строка, содержащая желаемую строку темы сообщения.

EXTRA_TEXT

Константа CharSequence, связанная с Intent, используемая с ACTION_SEND для предоставления литеральных данных для отправки.

EXTRA_TITLE

Заголовок диалога CharSequence для предоставления пользователю при использовании с ACTION_CHOOSER.

Вот пример, показывающий, как назначить дополнительные данные для вашего намерения —

emailIntent.putExtra(Intent.EXTRA_EMAIL  , new String[]{"Recipient"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject");
emailIntent.putExtra(Intent.EXTRA_TEXT   , "Message Body");

Результат вышеприведенного кода такой, как показано ниже

Эл. адрес

Пример электронной почты

пример

В следующем примере показано, как на практике использовать объект Intent для запуска почтового клиента для отправки электронного письма указанным получателям.

Чтобы по электронной почте поэкспериментировать с этим примером, вам понадобится мобильное устройство с новейшей ОС Android, в противном случае вы можете столкнуться с проблемой эмулятора, который может работать некорректно. Во-вторых, вам понадобится почтовый клиент, такой как GMail (по умолчанию каждая версия Android с клиентским приложением Gmail) или K9mail, установленный на вашем устройстве.

шаг Описание
1 Вы будете использовать Android studio для создания приложения Android и назовите его как Tutorialspoint в пакете com.example.tutorialspoint .
2 Измените файл src / MainActivity.java и добавьте необходимый код для отправки электронной почты.
3 Измените XML-файл макета. Res / layout / activity_main.xml добавьте любой компонент GUI, если это необходимо. Я добавляю простую кнопку для запуска почтового клиента.
4 Измените файл res / values ​​/ strings.xml, чтобы определить необходимые постоянные значения
5 Измените AndroidManifest.xml, как показано ниже
6 Запустите приложение, чтобы запустить эмулятор Android, и проверьте результат изменений, внесенных в приложение.

Ниже приводится содержимое измененного основного файла активности 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();
      }
   }
}

Ниже будет содержание файла 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 . Я предполагаю, что вы подключили свое фактическое мобильное устройство Android к компьютеру. Чтобы запустить приложение из Android Studio, откройте один из файлов деятельности вашего проекта и нажмите «Выполнить». Eclipse Run Icon значок с панели инструментов. Перед запуском приложения программа установки Android Studio отобразит следующее окно, чтобы выбрать вариант, в котором вы хотите запустить приложение Android. Выберите мобильное устройство в качестве параметра, а затем проверьте свое мобильное устройство, которое отобразит следующий экран —

Мобильное устройство Android

Теперь используйте кнопку « Написать письмо», чтобы вывести список всех установленных почтовых клиентов. Из списка вы можете выбрать один из почтовых клиентов для отправки вашей электронной почты. Я собираюсь использовать клиент Gmail для отправки своего электронного письма, в котором будут доступны все поля по умолчанию, как показано ниже. Здесь From: будет идентификатором электронной почты по умолчанию, который вы зарегистрировали для своего устройства Android.

Android Mobile Gmail Screen

Вы можете изменить любое из указанных полей по умолчанию и, наконец, использовать кнопку отправки электронной почты, чтобы отправить свою электронную почту указанным получателям.