Skip to content Skip to sidebar Skip to footer

Send Email In Android Using Javamail Api With Smtp But Without Ssl

I have gone through this question, it works well with its own case using SSL and I have also tried this one, which somehow suits to my need but it won't worked in my case. I have

Solution 1:

Firstly use Mail.jar, activation.jar, Additional.jar file Upload in Your project

Use this Mail Class

package com.technosoft.AkashEmailAddress;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import android.util.Log;


publicclassMailextendsjavax.mail.Authenticator { 
  private String _user; 
  private String _pass; 

  private String[] _to; 
  private String _from; 

  private String _port; 
  private String _sport; 

  private String _host; 

  private String _subject; 
  private String _body; 

  privateboolean _auth; 

  privateboolean _debuggable; 

  private Multipart _multipart; 


  publicMail() { 
    _host = "smtp.gmail.com"; // default smtp server 
    _port = "465"; // default smtp port 
    _sport = "465"; // default socketfactory port 

    _user = ""; // username 
    _pass = ""; // password 
  _from = ""; // email sent from 
    _subject = ""; // email subject 
    _body = ""; // email body 

    _debuggable = false; // debug mode on or off - default off 
    _auth = true; // smtp authentication - default on 

    _multipart = newMimeMultipart(); 

    // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added. MailcapCommandMapmc= (MailcapCommandMap) CommandMap.getDefaultCommandMap(); 
    mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
    mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
    mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
    mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
    mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
    CommandMap.setDefaultCommandMap(mc); 
  } 

  publicMail(String user, String pass) { 
    this(); 

    _user = user; 
    _pass = pass; 
  } 

  publicbooleansend()throws Exception { 
    Propertiesprops= _setProperties(); 

    if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) { 

        Sessionsession= Session.getInstance(props, this); 
     DataHandlerhandler=newDataHandler(newByteArrayDataSource(_body.getBytes(), "text/plain")); 
      MimeMessagemsg=newMimeMessage(session); 

      msg.setFrom(newInternetAddress(_from)); 
      msg.setDataHandler(handler);
      InternetAddress[] addressTo = newInternetAddress[_to.length]; 
      for (inti=0; i < _to.length; i++) { 
        addressTo[i] = newInternetAddress(_to[i]); 
      } 
        msg.setRecipients(MimeMessage.RecipientType.TO, addressTo); 

      msg.setSubject(_subject); 
      msg.setSentDate(newDate()); 

      // setup message body BodyPartmessageBodyPart=newMimeBodyPart(); 
      messageBodyPart.setText(_body); 
    _multipart.addBodyPart(messageBodyPart); 

      // Put parts in message 
    msg.setContent(_multipart); 

      // send email 
      Transport.send(msg); 
      Log.v("mas", "Email was  send");
      returntrue; 
    } else { 
         Log.v("mas", "Email was  not send");
      returnfalse; 

    } 
  } 
  publicclassByteArrayDataSourceimplementsDataSource {   
      privatebyte[] data;   
      private String type;   

      publicByteArrayDataSource(byte[] data, String type) {   
          super();   
          this.data = data;   
          this.type = type;   
      }   

      publicByteArrayDataSource(byte[] data) {   
          super();   
          this.data = data;   
      }   

      publicvoidsetType(String type) {   
          this.type = type;   
      }   

      public String getContentType() {   
          if (type == null)   
              return"application/octet-stream";   
          elsereturn type;   
      }   

      public InputStream getInputStream()throws IOException {   
          returnnewByteArrayInputStream(data);   
      }   

      public String getName() {   
          return"ByteArrayDataSource";   
      }   

      public OutputStream getOutputStream()throws IOException {   
          thrownewIOException("Not Supported");   
      }   
  }   

  @Overridepublic PasswordAuthentication getPasswordAuthentication() { 
    returnnewPasswordAuthentication(_user, _pass); 
  } 

  private Properties _setProperties() { 
    Propertiesprops=newProperties(); 

    props.put("mail.smtp.host", _host); 

    if(_debuggable) { 
      props.put("mail.debug", "true"); 
    } 

    if(_auth) { 
      props.put("mail.smtp.auth", "true"); 
    } 

    props.put("mail.smtp.port", _port); 
    props.put("mail.smtp.socketFactory.port", _sport); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.socketFactory.fallback", "false"); 

    return props; 
  } 

  // the getters and setters public String getBody() { 
    return _body; 
  } 

  publicvoidsetBody(String _body) { 
    this._body = _body; 
  }

publicvoidsetTo(String[] toArr) {
    // TODO Auto-generated method stubthis._to=toArr;
}

publicvoidsetFrom(String string) {
    // TODO Auto-generated method stubthis._from=string;
}

publicvoidsetSubject(String string) {
    // TODO Auto-generated method stubthis._subject=string;
} 

  // more of the getters and setters ….. 
}  

Mail class has send() Method use in Your Main class

MainclassextendsActivity{
    Mail m=newMail("DefultUserID@gmail.com","XXXXXXX");
    @SuppressWarnings("static-access")
    @OverridepublicvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.email);
 String[] toArr = {"UserEmailID_1@gmail.com","UserEmail_ID@Yahoo.co.in"}; 
        m.setTo(toArr);
        m.setFrom("AKASH"); 
        m.setSubject("Your Subject"); 
        m.setBody("Your Message body");

        try {
            boolean i= m.send();
            if(i==true){
                Toast.makeText(getApplicationContext(),"Email was sent successfully ",2000).show();

            }
            else
            {
                Toast.makeText(getApplicationContext(),"Email was not sent successfully ",2000).show();

            }

        } catch (Exception e2) {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }

}
}

Solution 2:

This is what I get for your error which means sending mail from your ip is blocked. below answer is from this link http://postmaster.bluetie.com/subcontent/smtpCodes.php

554 - BL0002: Mail Refused - IP Address xxx.xxx.xxx.xxx Blacklisted - Please see http://www.spamcop.net/w3m?action=checkblock&ip=xxx.xxx.xxx.xxx This error message indicates the sending IP address was found on the SpamCop Blacklist. A removal/reset request must be issued by the sending party. BlueTie cannot remove the sending IP address from the Blacklist. You may wish to contact your ISP for further assistance with errors of this nature.

Post a Comment for "Send Email In Android Using Javamail Api With Smtp But Without Ssl"