Send Mail Bean

In our application we have developed mailer bean that sends welcome email
when a new user is registered to the system. Mail Bean also used when user
asks for the forgotten password.
In this article we use Java Mail API to send emails. This is standard
part of J2EE.You can download this API from http://java.sun.com/products/javamail/.If
you download this API ,you will get mail.jar
file .Put this file in your tomcat's lib directory.
Now we write java source code to send a mail. Very first we imports
some java packages which allow you to use methods.
|
package roseindia.web.common;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class SendMail
{
private String strSmtp;
public void setStrSmtp(String strSmtp){
this.strSmtp=strSmtp;
}
public String getStrSmtp(){
return this.strSmtp;
}
public void sendMail( String recipients[ ], String subject, String message ,
String from)
throws MessagingException
{
boolean debug = false;
//Set the host smtp address
Properties props = new Properties();
props.put("mail.smtp.host", getStrSmtp());
// create some properties and get the default Session
Session session = Session.getDefaultInstance(props, null);
session.setDebug(debug);
// create a message
Message msg = new MimeMessage(session);
// set the from and to address
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++)
{
addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
// Optional : You can also set your custom headers in the Email if you Want
//msg.addHeader("MyHeaderName", "myHeaderValue");
// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
//send message
Transport.send(msg);
}
}
|
After that we declare a member variable 'strSmtp' to
store name of the mail server for the connection. This strSmtp represents
the host name or IP address of mail server. Here we use setter and getter
methods to set or get the value of strSmtp. After getting the value of
strSmtp we need to set this value into a property object.
Properties props = new Properties();
props.put("mail.smtp.host", getStrSmtp());
The property 'mail.smtp.host'
contains the information about mail server to be used for the connection.
Now this is time to connect with mail server and create a session. This is
done by a specific class of Java Mail API named Session. We use the
following code for this purpose-
Session session = Session.getDefaultInstance(props, null);
session.setDebug(debug);
After you have the Session, you can create a Message from the
Session. This Message class represents the email message. Message class
is an abstract class, so you must create an instance of a subclass. That subclass is
Mime Message.
Message msg = new MimeMessage(session);
After we have the Message, we will
create a instances of InternetAddress class for from
and
to email addresses.
InternetAddress addressFrom = new InternetAddress(from);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++)
{
addressTo[i] = new InternetAddress(recipients[i]);
}
Now, by using setFrom() and setRecipients() methods of
Message class we will set from and recipients email addresses
msg.setFrom(addressFrom);
msg.setRecipients(Message.RecipientType.TO, addressTo);
Now, we will set subject of message
and content
type.
// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Finally our message is set,
send it with the Transport class
Transport.send(msg);
This uses the SMTP server specified in the properties for
the session.
Now set this bean and property
in applicationContext.xml file
<beans>
<bean id="mailbean" class="roseindia.web.common.SendMail">
<property name="strSmtp"><value>192.168.10.14</value></property>
</bean>
</beans>
Here we set the host name or IP of webserver.
Defining constants---
package roseindia.web.common;
public class ProjectConstants {
public static String MAIL_BEAN="mailbean";
public static String FROM_MAIL="deepak@localhost";
}
Put the following code in which class
from where you want to send mail--------
//Retrieve the DAO Reference
roseindia.web.common.SendMail mailBean = (roseindia.web.common.SendMail)
ServiceFinder.getContext(request).getBean(roseindia.web.common.ProjectConstants.MAIL_BEAN);
String subject="Your username & password ";
String message="Hi,"+username;
message+="\n Your username is "+username+".";
message+="\n Your password is "+strPasswordEmail[0]+".";
message+="\n Please login to the web site with your username and password.";
message+="\n \n Thanks";
message+="\n \n \n Regards";
//Getting FROM_MAIL from roseindia.web.common.ProjectConstants.FROM_MAIL
String from=roseindia.web.common.ProjectConstants.FROM_MAIL;
try{
mailBean.sendMail(reciepent,subject,message,from);
}catch(Exception e){
System.out.println("Error in sending mail:"+e);
}

|
Current Comments
2 comments so far (post your own) View All Comments Latest 10 Comments:Hi,
I am new to Spring. Can any one guide me for configuring JSF with Spring(Hibernate).
If you have any samples please send to following mail id.
nirumagic@gmail.com
Thanx in advance
Posted by Nirumagic on Wednesday, 09.12.07 @ 21:41pm | #26853
I have changed the HOST IP to send mail from my server but even after mails are not been send.
Pls. clarify else replacing Host IP shall I have to do any other changes.
Posted by Marla on Thursday, 03.8.07 @ 10:35am | #11097