Attached jar file
(EmailSender v1.0) can be used in any Java/J2EE application to send
authenticated as well as non authenticated mails. Jar supporting only
4 free smtp hosts.
1. Gmail
(smtp.gmail.com)
2. Yahoo
(smtp.mail.yahoo.com)
3. Rediff
(smtp.rediffmail.com)
4. HotMail
(smtp.live.com)
This jar file can
be used as a stand alone application or can be integrated with any
J2EE application.
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.SendFailedException;
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 javax.mail.util.ByteArrayDataSource;
public class EmailManager
{
private String AUTH_USER_NAME;
private String AUTH_PWD;
private String SMTP_HOST;
private String SMTP_PORT;
public void sendEmailWithAuthentication(String filePath, String strFromEmailId, String strToEmailId, String strEmailSubject, String fileAttachment) throws Exception
{
StringBuilder strFileText = new StringBuilder("");
try
{
try
{
if(filePath != null)
{
File textFile = new File(filePath);
RandomAccessFile rendFile = new RandomAccessFile(textFile, "r");
while (rendFile.getFilePointer() < rendFile.length())
{
strFileText.append("\n").append(rendFile.readLine());
}
}
}
catch (Exception e)
{
System.err.println("Could not find file: " + e);
e.printStackTrace();
}
boolean debug = Boolean.valueOf("true").booleanValue();
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST);
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
props.put("mail.smtp.port", SMTP_PORT);
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.socketFactory.port", SMTP_PORT);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
Authenticator auth = new SMTPAuthenticator();//Added 4 authentication
Session session = Session.getDefaultInstance(props, auth);
session.setDebug(debug);
Message msg = new MimeMessage(session);
msg.setDataHandler(new DataHandler(new ByteArrayDataSource(strFileText.toString(), "text/plain")));
msg.setFrom(new InternetAddress(strFromEmailId));
// create the message part
if(fileAttachment != null)
{
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(strFileText.toString());
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(fileAttachment);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(fileAttachment);
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart);
}
StringTokenizer strtok = new StringTokenizer(strToEmailId, ",");
String subStrToEmailId[] = new String[strtok.countTokens()];
int countToMail = 0;
while (strtok.hasMoreTokens())
{
subStrToEmailId[countToMail] = strtok.nextElement().toString().trim();
countToMail++;
}
for (int i = 0; i < subStrToEmailId.length; i++)
{
InternetAddress[] address = { new InternetAddress(subStrToEmailId[i]) };
msg.addRecipients(Message.RecipientType.TO, address);
}
msg.setSubject(strEmailSubject);
Date dt = new Date();
msg.setSentDate(dt);
System.out.println("Before sending message... ");
Transport.send(msg);
System.out.println("After sending message... ");
}
catch (MessagingException mex)
{
System.out.println("\n--Exception handling in msgsendsample.java");
mex.printStackTrace();
System.out.println();
Exception ex = mex;
do
{
if (ex instanceof SendFailedException)
{
SendFailedException sfex = (SendFailedException) ex;
Address[] invalid = sfex.getInvalidAddresses();
if (invalid != null)
{
System.out.println(" ** Invalid Addresses");
if (invalid != null)
{
for (int i = 0; i < invalid.length; i++)
System.out.println(" " + invalid[i]);
}
}
Address[] validUnsent = sfex.getValidUnsentAddresses();
if (validUnsent != null)
{
System.out.println(" ** ValidUnsent Addresses");
if (validUnsent != null)
{
for (int i = 0; i < validUnsent.length; i++)
System.out.println(" " + validUnsent[i]);
}
}
Address[] validSent = sfex.getValidSentAddresses();
if (validSent != null)
{
System.out.println(" ** ValidSent Addresses");
if (validSent != null)
{
for (int i = 0; i < validSent.length; i++)
System.out.println(" " + validSent[i]);
}
}
}
System.out.println();
if (ex instanceof MessagingException)
ex = ((MessagingException) ex).getNextException();
else
ex = null;
}
while (ex != null);
}
catch (Exception e)
{
System.err.println("Error Message: " + e.getMessage());
}
}
private class SMTPAuthenticator extends Authenticator {
public PasswordAuthentication getPasswordAuthentication() {
String username = AUTH_USER_NAME;
String password = AUTH_PWD;
return new PasswordAuthentication(username, password);
}
}
}