Send Email In Android Using Javamail Api With Smtp But Without Ssl
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"