By place debug keystore another location, how can create MD5 fingerprint
18 Wednesday Jan 2012
Posted Android Code, Android Mobile Phone
inBy place debug keystore another location, how can create MD5 fingerprint
08 Sunday Jan 2012
Posted Android Code, Android Mobile Phone
inT0 day i tell you about android email without using android default email Intent .sending a mail in android using SMTP.
In this example i tell about sending a mail in android using the JavaMail API using Gmail authentication.
Steps to create a simple Project:
First Step::
1. Download this three jar from this url
Second Step:::
Create class SendMail.java and extends Activity. you able to use any package name
Your application package name;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class SendMail extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button send = (Button) this.findViewById(R.id.send);
final EditText userid = (EditText) this.findViewById(R.id.userid);
final EditText password = (EditText) this.findViewById(R.id.password);
final EditText from = (EditText) this.findViewById(R.id.from);
final EditText to = (EditText) this.findViewById(R.id.to);
final EditText subject = (EditText) this.findViewById(R.id.subject);
final EditText body = (EditText) this.findViewById(R.id.body);
send.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
GMailSender sender = new GMailSender(userid.getText()
.toString(), password.getText().toString());
try {
sender.sendMail(subject.getText().toString(), body
.getText().toString(), from.getText().toString(),
to.getText().toString());
} catch (Exception e) {
Log.e(“SendMail”, e.getMessage(), e);
}
}
});
}
}
Third Step::
Create class GMailSender,java and extends javax.mail.Authenticator. you able to use any package name. for this extends , you need to add this three jar in your project libraries.
Your own application pakage name
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.Security;
import java.util.Properties;
public class GMailSender extends javax.mail.Authenticator {
private String mailhost = “smtp.gmail.com”;
private String user;
private String password;
private Session session;
static {
Security.addProvider(new com.provider.JSSEProvider());
}
public GMailSender(String user, String password) {
this.user = user;
this.password = password;
Properties props = new Properties();
props.setProperty(“mail.transport.protocol”, “smtp”);
props.setProperty(“mail.host”, mailhost);
props.put(“mail.smtp.auth”, “true”);
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.socketFactory.fallback”, “false”);
props.setProperty(“mail.smtp.quitwait”, “false”);
session = Session.getDefaultInstance(props, this);
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(user, password);
}
public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception {
MimeMessage message = new MimeMessage(session);
DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), “text/plain”));
message.setSender(new InternetAddress(sender));
message.setSubject(subject);
message.setDataHandler(handler);
if (recipients.indexOf(‘,’) > 0)
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
else
message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
Transport.send(message);
}
public class ByteArrayDataSource implements DataSource {
private byte[] data;
private String type;
public ByteArrayDataSource(byte[] data, String type) {
super();
this.data = data;
this.type = type;
}
public ByteArrayDataSource(byte[] data) {
super();
this.data = data;
}
public void setType(String type) {
this.type = type;
}
public String getContentType() {
if (type == null)
return “application/octet-stream”;
else
return type;
}
public InputStream getInputStream() throws IOException {
return new ByteArrayInputStream(data);
}
public String getName() {
return “ByteArrayDataSource”;
}
public OutputStream getOutputStream() throws IOException {
throw new IOException(“Not Supported”);
}
}
}
Fourth Step::
Create class JSSEProvider.java and extends Provider. you create package com.provider in your src folder and place class in this folder.
package com.provider;
import java.security.AccessController;
import java.security.Provider;
public class JSSEProvider extends Provider {
public JSSEProvider() {
super(“HarmonyJSSE”, 1.0, “Harmony JSSE Provider”);
AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() {
public Void run() {
put(“SSLContext.TLS”,
“org.apache.harmony.xnet.provider.jsse.SSLContextImpl”);
put(“Alg.Alias.SSLContext.TLSv1”, “TLS”);
put(“KeyManagerFactory.X509”,
“org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl”);
put(“TrustManagerFactory.X509”,
“org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl”);
return null;
}
});
}
}
Final::
If you want change it for yahoo or other email service then just change this three line ::
1.private String mailhost = “smtp.gmail.com”;
2.props.put(“mail.smtp.port”, “465”);
3.props.put(“mail.smtp.socketFactory.port”, “465”);
Application Interface :::
I test this code via android 2.3.3 phone(HTC Wildfire S) . it is working ….,
If you need this source code then contact via this email :: eftibabu@gmail.com.
If any error happen. Please submit comment against the article that help other person to overcame this type of error.