Ví dụ này minh họa cách gửi email trên Android sử dụng JavaMail API qua Gmail SMTP. Lưu ý: Cần bật "Less secure apps" hoặc dùng App Password cho Gmail.
Bước 1: Tạo dự án mới
Tạo dự án mới trong Android Studio.
Bước 2: Thêm dependency JavaMail
Trong build.gradle (Module: app):
dependencies {
implementation 'com.sun.mail:android-mail:1.6.7'
implementation 'com.sun.mail:android-activation:1.6.7'
}
Bước 3: Cấu hình layout (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<TextView android:text="Email người nhận" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<EditText android:id="@+id/editTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress"/>
<TextView android:text="Tiêu đề" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<EditText android:id="@+id/editTextSubject" android:layout_width="match_parent" android:layout_height="wrap_content"/>
<TextView android:text="Nội dung" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<EditText android:id="@+id/editTextMessage" android:layout_width="match_parent" android:layout_height="wrap_content" android:lines="4" android:inputType="textMultiLine"/>
<Button android:id="@+id/buttonSend" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Gửi"/>
</LinearLayout>
Bước 4: Code MainActivity (src/MainActivity.java)
package com.app.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editTextEmail, editTextSubject, editTextMessage;
private Button buttonSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextEmail = findViewById(R.id.editTextEmail);
editTextSubject = findViewById(R.id.editTextSubject);
editTextMessage = findViewById(R.id.editTextMessage);
buttonSend = findViewById(R.id.buttonSend);
buttonSend.setOnClickListener(this);
}
private void sendEmail() {
String email = editTextEmail.getText().toString().trim();
String subject = editTextSubject.getText().toString().trim();
String message = editTextMessage.getText().toString().trim();
new SendMail(this, email, subject, message).execute();
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.buttonSend) sendEmail();
}
}
Bước 5: Config.java (src/Config.java)
package com.app.sample;
public class Config {
public static final String EMAIL = "your-gmail@gmail.com";
public static final String PASSWORD = "your-app-password"; // Dùng App Password
}
Bước 6: SendMail.java (src/SendMail.java)
package com.app.sample; import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.widget.Toast; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMail extends AsyncTask{ private Context context; private String email, subject, message; private ProgressDialog progressDialog; public SendMail(Context context, String email, String subject, String message) { this.context = context; this.email = email; this.subject = subject; this.message = message; } @Override protected void onPreExecute() { super.onPreExecute(); progressDialog = ProgressDialog.show(context, "Đang gửi", "Vui lòng chờ...", false, false); } @Override protected Void doInBackground(Void... params) { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "465"); props.put("mail.smtp.socketFactory.port", "465"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(Config.EMAIL, Config.PASSWORD); } }); try { MimeMessage mm = new MimeMessage(session); mm.setFrom(new InternetAddress(Config.EMAIL)); mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email)); mm.setSubject(subject); mm.setText(message); Transport.send(mm); } catch (MessagingException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); progressDialog.dismiss(); Toast.makeText(context, "Đã gửi email!", Toast.LENGTH_LONG).show(); } }
Bước 7: Cấu hình Manifest (thêm quyền INTERNET)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.app.sample">
<uses-permission android:name="android.permission.INTERNET"/>
<application ...>
<activity android:name=".MainActivity">...</activity>
</application>
</manifest>
Chạy ứng dụng
Nhập email nhận, tiêu đề, nội dung và nhấn Gửi. Kiểm tra hộp thư đến.