Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में JavaMail API से ईमेल कैसे भेजें?

यह उदाहरण दर्शाता है कि Android ऐप में JavaMail API का उपयोग करके प्रोग्रामेटिकली ईमेल कैसे भेजा जाता है।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project पर जाएं।

चरण 2: निर्भरताएं जोड़ें

build.gradle (Module: app) में JavaMail निर्भरताएं जोड़ें:

dependencies { 
    implementation 'com.sun.mail:android-mail:1.6.7' 
    implementation 'com.sun.mail:android-activation:1.6.7' 
}

सिंक करें।

चरण 3: लेआउट XML

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="https://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="16dp"> 
    <TextView android:text="प्राप्तकर्ता ईमेल" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp"/> 
    <EditText android:id="@+id/editTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress"/> 
    <TextView android:text="विषय" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp"/> 
    <EditText android:id="@+id/editTextSubject" android:layout_width="match_parent" android:layout_height="wrap_content"/> 
    <TextView android:text="संदेश" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp"/> 
    <EditText android:id="@+id/editTextMessage" android:layout_width="match_parent" android:layout_height="120dp" android:inputType="textMultiLine" android:gravity="top"/> 
    <Button android:id="@+id/buttonSend" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="भेजें" android:layout_marginTop="24dp"/> 
</LinearLayout>

चरण 4: कॉन्फिगरेशन क्लास

src/Config.java (अपनी Gmail क्रेडेंशियल डालें):

package com.app.sample; 
public class Config { 
    public static final String EMAIL = "your-email@gmail.com"; 
    public static final String PASSWORD = "your-app-password"; // Gmail ऐप पासवर्ड उपयोग करें 
}

चरण 5: SendMail क्लास (AsyncTask)

package com.app.sample; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.os.AsyncTask; 
import android.widget.Toast; 
import javax.mail.*; 
import javax.mail.internet.*; 
import java.util.Properties; 

public class SendMail extends AsyncTask { 
    private Context context; 
    private String email, subject, message; 
    private ProgressDialog progressDialog; 
    private String errorMessage = ""; 

    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, "भेजा जा रहा है...", "कृपया प्रतीक्षा करें", false, false); 
    } 

    @Override 
    protected Boolean doInBackground(Void... params) { 
        try { 
            Properties props = new Properties(); 
            props.put("mail.smtp.host", "smtp.gmail.com"); 
            props.put("mail.smtp.port", "465"); 
            props.put("mail.smtp.ssl.enable", "true"); 
            props.put("mail.smtp.auth", "true"); 
            
            Session session = Session.getInstance(props, new Authenticator() { 
                @Override 
                protected PasswordAuthentication getPasswordAuthentication() { 
                    return new PasswordAuthentication(Config.EMAIL, Config.PASSWORD); 
                } 
            }); 
            
            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); 
            return true; 
        } catch (MessagingException e) { 
            errorMessage = e.getMessage(); 
            e.printStackTrace(); 
            return false; 
        } 
    } 

    @Override 
    protected void onPostExecute(Boolean success) { 
        super.onPostExecute(success); 
        progressDialog.dismiss(); 
        if (success) { 
            Toast.makeText(context, "ईमेल भेजा गया!", Toast.LENGTH_LONG).show(); 
        } else { 
            Toast.makeText(context, "विफल: " + errorMessage, Toast.LENGTH_LONG).show(); 
        } 
    } 
}

चरण 6: MainActivity

package com.app.sample; 
import androidx.appcompat.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.*; 

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(); 
        
        if (email.isEmpty() || subject.isEmpty() || message.isEmpty()) { 
            Toast.makeText(this, "सभी फ़ील्ड भरें", Toast.LENGTH_SHORT).show(); 
            return; 
        } 
        new SendMail(this, email, subject, message).execute(); 
    } 

    @Override 
    public void onClick(View v) { 
        sendEmail(); 
    } 
}

चरण 7: AndroidManifest.xml - इंटरनेट परमिशन आवश्यक

<manifest ...> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <application ...> 
        <activity android:name=".MainActivity"> 
            <intent-filter> 
                <action android:name="android.intent.action.MAIN"/> 
                <category android:name="android.intent.category.LAUNCHER"/> 
            </intent-filter> 
        </activity> 
    </application> 
</manifest>

महत्वपूर्ण नोट्स

  • Gmail के लिए "ऐप पासवर्ड" जनरेट करें (2-स्टेप वेरिफिकेशन सक्षम होने पर)
  • कम सिक्योर ऐप्स की अनुमति दें या OAuth2 का उपयोग करें
  • नेटवर्क ऑपरेशन मुख्य थ्रेड पर नहीं चल सकता - AsyncTask/कोरूटिन आवश्यक

ऐप चलाएं

डिवाइस कनेक्ट करें, Run करें, ईमेल विवरण भरें और भेजें।

Android में JavaMail API से ईमेल कैसे भेजें?

  1. HTML फॉर्म का उपयोग करके ईमेल कैसे भेजें? HTML फॉर्म का उपयोग करके ईमेल कैसे भेजें?

    HTML फॉर्म का उपयोग करके ईमेल भेजने के लिए, आपको फॉर्म के action एट्रिब्यूट में mailto: प्रीफिक्स के साथ ईमेल आईडी जोड़नी होगी। उदाहरण के लिए: mailto:emailid@example.com।उदाहरणनिम्न कोड चलाकर HTML फॉर्म से ईमेल भेजने का प्रयास करें:<!DOCTYPE html> <html>    <body>  

  1. OpenKeychain का उपयोग करके Android पर एन्क्रिप्टेड ईमेल कैसे भेजें OpenKeychain का उपयोग करके Android पर एन्क्रिप्टेड ईमेल कैसे भेजें

    एन्क्रिप्शन महत्वपूर्ण है, खासकर जब आप चलते-फिरते ईमेल भेजते और प्राप्त करते हैं। आप कभी नहीं जानते कि वह मुफ्त सार्वजनिक वाई-फाई कनेक्शन पूरी तरह से सुरक्षित है या नहीं। सौभाग्य से, आप अपने निजी ईमेल को एन्क्रिप्शन की एक परत में लपेटकर उन जोखिमों को कम कर सकते हैं। यहां बताया गया है कि आप OpenKeych

  1. एंड्रॉयड पर एन्क्रिप्टेड ईमेल कैसे भेजें एंड्रॉयड पर एन्क्रिप्टेड ईमेल कैसे भेजें

    अधिकांश भाग के लिए, एन्क्रिप्शन सरकारी एजेंसियों, आपराधिक अदालती मामलों और हैकर्स के बारे में फिल्मों का क्षेत्र लगता है जो बड़ी कंपनियों और बैंकों में घुसने की कोशिश कर रहे हैं। लेकिन एन्क्रिप्शन हमारे ऑनलाइन अनुभव के सभी क्षेत्रों में काम करता है - वेबसाइट फॉर्म से लेकर गूगल ड्राइव दस्तावेजों तक।