Skip to main content

Email Send Without User Interection In Android

1] Firs Put The The Code In Java File Which Reside In src Folder Like MainActivity.java


package com.example.sendmail;

import java.io.UnsupportedEncodingException;
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.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends Activity { 
 private static String username = ""; 
 private static String password = ""; 
 private static String name = ""; 
 private EditText mRecEmailEdit; 
 private EditText mSubjectEdit; 
 private EditText mMessageEdit; 
 private EditText mNameEdit; 
 private EditText mEmailEdit; 
 private EditText mPasswordEdit; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
 
          mNameEdit = (EditText) findViewById(R.id.sender_name); 
          mEmailEdit = (EditText) findViewById(R.id.sender_email); 
          mPasswordEdit = (EditText) findViewById(R.id.sender_password); 
          mRecEmailEdit = (EditText) findViewById(R.id.email); 
          mSubjectEdit = (EditText) findViewById(R.id.subject); 
          mMessageEdit = (EditText) findViewById(R.id.message); 
  Button sendButton = (Button) findViewById(R.id.send); 
 
  sendButton.setOnClickListener(new View.OnClickListener() { 
   @Override 
   public void onClick(View view) { 
            name = mNameEdit.getText().toString(); 
            username = mEmailEdit.getText().toString(); 
            password = mPasswordEdit.getText().toString(); 
            String email = mRecEmailEdit.getText().toString(); 
            String subject = mSubjectEdit.getText().toString(); 
            String message = mMessageEdit.getText().toString(); 
            sendMail(email, subject, message); 
   } 
  }); 
 } 
 
 private void sendMail(String email, String subject, String messageBody) { 
  Session session = createSessionObject(); 
 
  try { 
   Message message = createMessage(email, subject, messageBody, 
     session); 
   new SendMailTask().execute(message); 
  } catch (AddressException e) { 
   e.printStackTrace(); 
  } catch (MessagingException e) { 
   e.printStackTrace(); 
  } catch (UnsupportedEncodingException e) { 
   e.printStackTrace(); 
  } 
 } 
 
 private Message createMessage(String email, String subject, 
             String messageBody, Session session) throws MessagingException, 
             UnsupportedEncodingException { 
             Message message = new MimeMessage(session); 
             message.setFrom(new InternetAddress(username, name)); 
             message.addRecipient(Message.RecipientType.TO, new InternetAddress( 
                     email, email)); 
             message.setSubject(subject); 
             message.setText(messageBody); 
  return message; 
 } 
 
 private Session createSessionObject() { 
         Properties properties = new Properties(); 
         properties.put("mail.smtp.auth", "true"); 
         properties.put("mail.smtp.starttls.enable", "true"); 
         properties.put("mail.smtp.host", "smtp.gmail.com"); 
         properties.put("mail.smtp.port", "587"); 
 
  return Session.getInstance(properties, new javax.mail.Authenticator() { 
          protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(username, password); 
   } 
  }); 
 } 
 
 private class SendMailTask extends AsyncTask<Message, Void, Void> { 
  private ProgressDialog progressDialog; 
 
  @Override 
  protected void onPreExecute() { 
   super.onPreExecute(); 
   progressDialog = ProgressDialog.show(MainActivity.this, 
     "Please wait", "Sending mail", true, false); 
  } 
 
  @Override 
  protected void onPostExecute(Void aVoid) { 
   super.onPostExecute(aVoid); 
   progressDialog.dismiss(); 
  } 
 
  @Override 
  protected Void doInBackground(Message... messages) { 
   try { 
           Transport.send(messages[0]); 
           runOnUiThread(new Runnable() { 
 
     @Override 
     public void run() { 
      Toast.makeText(MainActivity.this, 
        "Mail sent successfully", Toast.LENGTH_LONG) 
        .show(); 
     } 
    }); 
   } catch (final MessagingException e) { 
    e.printStackTrace(); 
    runOnUiThread(new Runnable() { 
 
     @Override 
     public void run() { 
      Toast.makeText(MainActivity.this, 
        e.getClass() + " : " + e.getMessage(), 
        Toast.LENGTH_LONG).show(); 
     } 
    }); 
   } 
   return null; 
  } 
 } 


2] Put The Code In XML File Which Reside In res Folde Like main.xml
   
         <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:tools="http://schemas.android.com/tools" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:paddingBottom="@dimen/activity_vertical_margin" 
        android:background="@drawable/images"
        android:paddingLeft="@dimen/activity_horizontal_margin" 
        android:paddingRight="@dimen/activity_horizontal_margin" 
        android:paddingTop="@dimen/activity_vertical_margin" 
        tools:context=".MainActivity"> 
     
        <EditText 
            android:id="@+id/sender_name" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignParentLeft="true" 
            android:layout_alignParentTop="true" 
            android:ems="10" 
            android:hint="Enter Your Name" 
            android:inputType="textEmailAddress" /> 
     
        <EditText 
            android:id="@+id/sender_email" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignParentLeft="true" 
            android:layout_below="@+id/sender_name" 
            android:ems="10" 
            android:hint="Enter Your MailId" 
            android:inputType="textEmailAddress" /> 
     
        <EditText 
            android:id="@+id/sender_password" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignLeft="@+id/email" 
            android:inputType="textPassword" 
            android:layout_below="@+id/sender_email" 
            android:hint="Enter Your Password" /> 
     
        <EditText 
            android:id="@+id/email" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignParentLeft="true" 
            android:layout_below="@+id/sender_password" 
            android:ems="10" 
            android:hint="Enter Mail Id U Want To Send" 
            android:inputType="textEmailAddress" /> 
     
        <EditText 
            android:id="@+id/subject" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignLeft="@+id/email" 
            android:layout_below="@+id/email" 
            android:hint="Enter Subject" /> 
     
        <EditText 
            android:id="@+id/message" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:layout_alignParentLeft="true" 
            android:layout_below="@+id/subject" 
            android:ems="10" 
            android:hint="Enter Message" 
            android:inputType="textMultiLine" 
            android:lines="5" /> 
     
        <Button 
            android:id="@+id/send" 
            android:layout_width="140dp" 
            android:layout_height="wrap_content" 
            android:layout_alignParentRight="true" 
            android:layout_below="@+id/message" 
            android:text="Send Mail" /> 
     
    </RelativeLayout>

3] Now Give The Internet Permission In a AndroidManifest.xml File

   
  

Note: Add a Three jar file
                                        1]activation.jar
                                        2]additionnal.jar
                                        3]mail.jar

4] Output:

                                              



Comments

Popular posts from this blog

Create Shared Prefrence Via XML In Android

Download Source Code : Click Here Output:

Sandeep Maheshwari on zee news

Network Security Exception in Android Retrofit Cleartext HTTP traffic not permitted

Create One directory in res/xml Create file in xml directory Past give below code : < network-security-config > < base-config cleartextTrafficPermitted= "true" /> < domain-config > < domain includeSubdomains= "true" >www.xyz.com</ domain >> < trust-anchors > < certificates src= "system" /> </ trust-anchors > </ domain-config > </ network-security-config > Add one Line into AndroidMenifest.xm File in application tag : android :networkSecurityConfig= "@xml/yourfilename" android :usesCleartextTraffic= "true"