|
A JavaMail & File Attachment Example This tutorial is a continuation on JavaMail It shows a java class that allows you to send e-mails with a file attached
|
/** * File Name: SendEmail.java * @date June 21 2001 * @author Siomara Pantarotto * Description: Definition of Class SendEmail. * Sends email messages using SMTP protocal. * Uses JavaBean Activation Foundation. * Complies to JavaMail API standards. * This version sends attached file. **/ import java.io.*; import java.util.*; import javax.mail.*; import javax.activation.*; import javax.mail.internet.*; public class SendEmail{
private String mailHost = null;
private String fromAddress = null;
private String toAddress = null;
private String subject = null;
private String messageTxt = null;
private String contentType = null;
private String fileName = null;
/**
* Default constructor - No argument for Java Bean Requirement
**/
SendEmail()
{
}
/**
* Constructor
* @params mailHost - SMTP server name
* @params fromAddress - From address in RFC822 format
* @params toAddress - To address in RFC822 format
* @params subject - Subject for the email message
* @params messageTxt - Email template file
* @params contentType - Content type for the email message
* @params fileName - File name to be attached to email message
**/
SendEmail(String mailHost,String fromAddress, String toAddress,
String subject, String messageTxt, String contentType,
String fileName)
{
this.mailHost = mailHost;
this.fromAddress = fromAddress;
this.toAddress = toAddress;
this.subject = subject;
this.messageTxt = messageTxt;
this.contentType = contentType;
this.fileName = fileName;
}
/**
* Constructor
* @params mailHost - SMTP server name
* @params fromAddress - From address in RFC822 format
**/
SendEmail(String mailHost,String fromAddress)
{
this.mailHost = mailHost;
this.fromAddress = fromAddress;
}
/**
* Set and Get methods for attribute mailHost
*
* @params mailHost - SMTP server name
**/
public void setMailHost(String mailHost)
{
this.mailHost = mailHost;
}
/* @return mailHost */
public String getMailHost()
{
return this.mailHost;
}
/**
* Set and Get methods for attribute fromAddress
*
* @params fromAddress - From address in RFC822 format
*/
public void setFromAddress(String fromAddress)
{
this.fromAddress = fromAddress;
}
/* @return fromAddress */
public String getFromAddress()
{
return this.fromAddress;
}
/**
* Set and Get methods for attribute toAddress
*
* @params toAddress - To address in RFC822 format
*/
public void setToAddress(String toAddress)
{
this.toAddress = toAddress;
}
/* @return toAddress */
public String getToAddress()
{
return this.toAddress;
}
/**
* Set and Get methods for attribute subject
*
* @params subject - Subject for the email message
*/
public void setSubject(String subject)
{
this.subject = subject;
}
/* @return subject */
public String getSubject()
{
return this.subject;
}
/**
* Set and Get methods for attribute messageTxt
*
* @params messageTxt - Message text for the email message
*/
public void setMessageTxt(String messageTxt)
{
this.messageTxt = messageTxt;
}
public String getMessageTxt()
{
return this.messageTxt;
}
/**
* Set and Get methods for attribute contentType
*
* @params contentType - Content type for the email message
*/
public void setContentType(String contentType)
{
this.contentType = contentType;
}
public String getContentType()
{
return this.contentType;
}
/**
* Set and Get methods for attribute fileName
*
* @params fileName - File that is attached to the message
*/
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public String getFileName()
{
return this.fileName;
}
/**
* Sends email notifications
*
* @param msg - Message to send
*/
public void sendMessage(String mailText)
{
boolean debug = false;
Properties props = new Properties();
props.put("mail.smtp.host", this.getMailHost());
Session session = Session.getDefaultInstance(props,null);
session.setDebug(debug);
try
{
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(this.getFromAddress()));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(this.getToAddress(), false));
message.setSubject(this.getSubject());
/** * Create the message - part one */ // Create first body part
BodyPart messageBodyPart = new MimeBodyPart();
// Fill the message
messageBodyPart.setText(this.getMessageTxt());
// Create a Multipart
Multipart multipart = new MimeMultipart();
// Add part one - message
multipart.addBodyPart(messageBodyPart);
/** * Create the attachment - part two */ // Create second body part messageBodyPart = new MimeBodyPart(); // Get the attachment
DataSource source = new FileDataSource(this.getFileName());
// Set the data handler to the attachment
messageBodyPart.setDataHandler(new DataHandler(source));
// Set the filename
messageBodyPart.setFileName(this.getFileName());
// Add part two - attachment
multipart.addBodyPart(messageBodyPart);
// Put all parts in message
message.setContent(multipart);
// Send the message
Transport.send(message);
}
catch(Exception e )
{
e.printStackTrace();
System.exit(-1);
}
props = null;
}
}
This is a servlet to test the class import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class SendMailServlet extends HttpServlet {
/**
* Process the HTTP Post request
*/
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true); SendEmail sendEmail = new SendEmail();
sendEmail.setMailHost("Snhexch02");
sendEmail.setFromAddress("[email protected]");
sendEmail.setToAddress("[email protected]");
sendEmail.setSubject("Testando mail");
sendEmail.setMessageTxt("blab blab bla ...... good bye");
sendEmail.setContentType("text/plain");
sendEmail.setFileName("c:\\aaa.txt");
sendEmail.sendMessage(sendEmail.getMessageTxt());
}
}
|