Send Mail trong Android



Email là các thông điệp được phân phối bởi các cách thức điện tử từ một hệ thống người dùng tới một hoặc nhiều người nhận thông qua một mạng.

Trước khi bắt đầu Email Activity, bạn phải biết tính năng Email với Intent. Intent mang dữ liệu từ một thành phần tới thành phần khác bên trong ứng dụng hoặc bên ngoài ứng dụng.

Để gửi một mail từ ứng dụng, bạn không phải triển khai một Email Client lúc ban đầu, nhưng bạn có thể sử dụng một Client đang tồn tại như Email App mặc định được cung cấp bởi Android, Gmail, Outlook, K-9 Mail, … Cho mục đích này, chúng ta cần viết một Activity mà chạy một Email Client, sử dụng một Implicit Intent với action và data thích hợp. Trong ví dụ, chúng ta gửi mail từ ứng dụng bởi sử dụng một đối tượng Intent mà chạy Email Client đang tồn tại.

Tiếp theo, mình giải thích các phần khác nhau của đối tượng Intent cần thiết để gửi một Email.

Đối tượng Intent: Action để gửi Email

Bạn sử dụng action là ACTION_SEND để chạy một Email Client đã cài đặt trên thiết bị Android của bạn. Cú pháp đơn giản để tạo một Intent với ACTION_SEND là:

Intent emailIntent = new Intent(Intent.ACTION_SEND);

Đối tượng Intent: Dữ liệu/kiểu để gửi Email

Quảng cáo

Để gửi một Email, bạn cần xác định mailto: dạng URI sử dụng phương thức setData() và kiểu dữ liệu sẽ là text/plain bởi sử dụng phương thức setType(), như sau: −

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

Đối tượng Intent: Extra để gửi Email

Android có sẵn hỗ trợ để thêm các trường TO, SUBJECT, CC, TEXT, … có thể được đính kèm với Intent trước khi gửi Intent đó tới một Email Client. Bạn có thể sử dụng các trường Extra sau trong email của bạn: −

Stt. Extra Data & Miêu tả
1 EXTRA_BCC

Một String[] giữ địa chỉ email mà nên là Blind Carbon Copied

2 EXTRA_CC

Một String[] giữ địa chỉ email mà nên là Carbon Copied.

3 EXTRA_EMAIL

Một String[] giữ địa chỉ email nên được gửi tới

4 EXTRA_HTML_TEXT

Một hằng chuỗi được gắn kết với Intent, được sử dụng với ACTION_SEND để cung cấp một thay thế cho EXTRA_TEXT dạng text được định dạng HTML

5 EXTRA_SUBJECT

Một hằng chuỗi giữ dòng Subject của thông điệp

6 EXTRA_TEXT

Một dãy ký tự hằng được gắn kết với Intent, được sử dụng với ACTION_SEND để cung cấp dữ liệu để được gửi

7 EXTRA_TITLE

Một title để cung cấp tới người dùng khi được sử dụng với một ACTION_CHOOSER

Ví dụ sau minh họa cách bạn gán dữ liệu Extra tới Intent của bạn: −

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

Kết quả của code trên như sau:

Email

Ví dụ Email trong Android

Ví dụ

Ví dụ sau minh họa cách sử dụng đối tượng Intent để chạy Email Client để gửi một Email tới người nhận đã cho.

Để thử nghiệm ví dụ này, bạn cần thiết bị Mobile thực sự được trang bị Android OS (Android Lollipop) mới nhất, nếu không bạn sẽ gặp trục trặc với màn hình mô phỏng Emulator. Thứ hai, bạn cần có một Email Client như Gmail (theo mặc định mỗi phiên bản Android có ứng dụng Gmail Client) hoặc K9mail được cài đặt trên thiết bị..
Bước Miêu tả
1 Bạn sử dụng Android Studio để tạo ứng dụng Android với tên là Tutorialspoint dưới một package làcom.example.tutorialspoint. Trong khi tạo project này, đảm bảo rằng bạn có Target SDKCompile With ở trong phiên bản Android SDK mới nhất để sử dụng APIs cấp độ cao hơn
2 Sửa đổi src/MainActivity.javafile và thêm code cần thiết để gửi mail
3 Sửa đổi res/layout/activity_main.xml và thêm bất cứ thành phần GUI nếu cần. Mình thêm một nút đơn giản để chạy Email Client
4 Sửa đổi res/values/strings.xml để định nghĩa các giá trị hằng cần thiết
5 Sửa đổi AndroidManifest.xml như dưới đây
6 Chạy ứng dụng để chạy Android Emulator và kiểm tra kết quả các thay đổi đã thực hiện trong ứng dụng

Sau đây là nội dung của Main Activity file đã được sửa đổi: 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();
      }
   }
   
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
   }
}

Sau đây là nội dung của res/layout/activity_main.xml file −

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

Sau đây là nội dung của res/values/strings.xml để định nghĩa hai hằng −

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">Tutorialspoint</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
   <string name="compose_email">Compose Email</string>
</resources>

Sau đây là nội dung mặc định của AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.Tutorialspoint"
   android:versionCode="1"
   android:versionName="1.0" >
   
   <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>

Cuối cùng, bạn chạy ứng dụng Android vừa tạo ở trên.

Quảng cáo
Send Email trong Android

Bây giờ sử dụng nútCompose Email để liệt kê tất cả Email Client đã cài đặt. Từ danh sách, bạn chọn một trong các Email Client để gửi Email của mình. Mình sử dụng Gmail mà cung cấp tất cả các trường mặc định. Ở đây, From: sẽ là Email ID bạn đã đăng ký cho thiết bị Android của bạn.

Send Email trong Android

Bạn có thể sửa đổi một số trường mặc định và sau đó sử dụng nút Send Email để gửi mail tới người nhận.

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.




Tài liệu giáo viên