Android - wysyłanie wiadomości e-mail

Email to wiadomości przesyłane drogą elektroniczną od jednego użytkownika systemu do jednego lub większej liczby odbiorców za pośrednictwem sieci.

Przed rozpoczęciem działania poczty e-mail musisz wiedzieć, że funkcja poczty e-mail jest zamierzona, intencja przenosi dane z jednego komponentu do innego komponentu w aplikacji lub poza nią.

Aby wysłać wiadomość e-mail z aplikacji, nie musisz wdrażać klienta poczty e-mail od początku, ale możesz użyć istniejącego, takiego jak domyślna aplikacja poczty e-mail dostarczana z systemu Android, Gmail, Outlook, K-9 Mail itp. W tym celu W tym celu musimy napisać działanie, które uruchomi klienta poczty e-mail, używając niejawnej intencji z odpowiednią akcją i danymi. W tym przykładzie wyślemy wiadomość e-mail z naszej aplikacji przy użyciu obiektu Intent, który uruchamia istniejących klientów poczty e-mail.

Poniższa sekcja wyjaśnia różne części naszego obiektu intencji wymagane do wysłania wiadomości e-mail.

Obiekt intencji - akcja wysyłania wiadomości e-mail

Będziesz używać ACTION_SENDdziałanie, aby uruchomić klienta pocztowego zainstalowanego na urządzeniu z systemem Android. Oto prosta składnia tworzenia intencji z akcją ACTION_SEND.

Intent emailIntent = new Intent(Intent.ACTION_SEND);

Obiekt intencji - dane / typ do wysłania wiadomości e-mail

Aby wysłać wiadomość e-mail, musisz określić mailto: jako URI przy użyciu metody setData () i typu danych to text/plain używając metody setType () w następujący sposób -

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

Obiekt intencji - dodatkowy do wysyłania wiadomości e-mail

Android ma wbudowaną obsługę dodawania pól TO, SUBJECT, CC, TEXT itp., Które można dołączyć do intencji przed wysłaniem jej do docelowego klienta poczty e-mail. Możesz użyć następujących dodatkowych pól w swoim e-mailu -

Sr.No. Dodatkowe dane i opis
1

EXTRA_BCC

Ciąg [] zawierający adresy e-mail, które powinny zostać skopiowane na ślepo.

2

EXTRA_CC

Ciąg [] zawierający adresy e-mail, które powinny zostać skopiowane.

3

EXTRA_EMAIL

Ciąg [] zawierający adresy e-mail, na które należy dostarczyć.

4

EXTRA_HTML_TEXT

Stały ciąg powiązany z intencją, używany z ACTION_SEND w celu zapewnienia alternatywy dla EXTRA_TEXT jako tekstu w formacie HTML.

5

EXTRA_SUBJECT

Stały ciąg znaków zawierający żądany temat wiadomości.

6

EXTRA_TEXT

Stała CharSequence powiązana z intencją, używana z ACTION_SEND do dostarczania danych literału do wysłania.

7

EXTRA_TITLE

Tytuł okna dialogowego CharSequence, który ma zostać udostępniony użytkownikowi, gdy jest używany z ACTION_CHOOSER.

Oto przykład pokazujący, jak przypisać dodatkowe dane do swoich zamiarów -

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

Wyjście powyższego kodu jest pokazane poniżej

Przykład e-maila

Przykład

Poniższy przykład pokazuje w praktyce, jak użyć obiektu Intent do uruchomienia klienta poczty e-mail w celu wysłania wiadomości e-mail do określonych odbiorców.

Aby eksperymentować z tym przykładem, będziesz potrzebować rzeczywistego urządzenia mobilnego wyposażonego w najnowszy system operacyjny Android, w przeciwnym razie możesz mieć problemy z emulatorem, który może nie działać poprawnie. Po drugie, musisz mieć klienta poczty e-mail, takiego jak Gmail (domyślnie każda wersja Androida z aplikacją klienta Gmail) lub K9mail zainstalowanego na urządzeniu.
Krok Opis
1 Użyjesz Android Studio do stworzenia aplikacji na Androida i nadasz jej nazwę Tutorialspoint w pakiecie com.example.tutorialspoint .
2 Zmodyfikuj plik src / MainActivity.java i dodaj wymagany kod, aby zająć się wysyłaniem wiadomości e-mail.
3 Zmodyfikuj plik XML układu res / layout / activity_main.xml, dodaj dowolny komponent GUI, jeśli jest to wymagane. Dodaję prosty przycisk, aby uruchomić klienta poczty e-mail.
4 Zmodyfikuj res / values ​​/ strings.xml, aby zdefiniować wymagane wartości stałe
5 Zmodyfikuj plik AndroidManifest.xml, jak pokazano poniżej
6 Uruchom aplikację, aby uruchomić emulator Androida i zweryfikować wynik zmian wprowadzonych w aplikacji.

Poniżej znajduje się zawartość zmodyfikowanego pliku głównego działania 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();
      }
   }
}

Poniżej będzie treść res/layout/activity_main.xml plik -

Tutaj abc wskazuje na logo 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>

Poniżej będzie treść res/values/strings.xml zdefiniować dwie nowe stałe -

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">Tutorialspoint</string>
   <string name="compose_email">Compose Email</string>
</resources>

Poniżej znajduje się domyślna zawartość 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>

Spróbujmy uruchomić Twój tutorialspointpodanie. Zakładam, że podłączyłeś swoje rzeczywiste urządzenie mobilne z systemem Android do komputera. Aby uruchomić aplikację z Android Studio, otwórz jeden z plików aktywności projektu i kliknij

ikonę Uruchom na pasku narzędzi. Przed uruchomieniem aplikacji instalator Android Studio wyświetli następujące okno, w którym wybierz opcję, w której chcesz uruchomić aplikację Android.Wybierz urządzenie mobilne jako opcję, a następnie sprawdź urządzenie mobilne, które wyświetli następujący ekran -

Teraz użyj Compose Email, aby wyświetlić listę wszystkich zainstalowanych klientów poczty e-mail. Z listy możesz wybrać jednego z klientów poczty e-mail do wysłania wiadomości e-mail. Zamierzam użyć klienta Gmaila do wysłania mojego e-maila, który będzie miał wszystkie podane pola domyślne dostępne, jak pokazano poniżej. TutajFrom: będzie domyślnym identyfikatorem e-mail zarejestrowanym na urządzeniu z systemem Android.

Możesz zmodyfikować dowolne z podanych pól domyślnych i na koniec użyć przycisku Wyślij wiadomość e-mail, aby wysłać wiadomość e-mail do wspomnianych odbiorców.