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
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.