Hello Friends. I want to write email servlet using JavaMail package.i want to send this email from localhost(which is not a server)to another computer in a LAN using SMTP.If it is possible how to do that How to do that.Give me in details. Thanks in advance
Sandeep Jain
Ranch Hand
Joined: Oct 25, 2000
Posts: 124
posted
0
Hi , There are two ways through which you can send a mail , 1) using the smtp Client 2) using javamail package. If u wanna make use of java mail package, the code is as follows
import javax.mail.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.internet.*; public class SendingMail2 extends HttpServlet { public void service(HttpServletRequest req,HttpServletResponse res) { try { res.setContentType("text/html"); String from = "uremailid eg sandeep_raparia@yahoo.com "; String to = "recipents email id eg xyz@pqr.com"; String subject = "the subject u wanna send "; String cc="cc addresses " String bcc="Bcc address"; String text="the matter that u wanna send "; java.util.Properties prop = System.getProperties(); prop.put("mail.smtp.host","mail.yahoo.com"); Session ses = Session.getInstance(prop,null); MimeMessage message = new MimeMessage(ses); try { Address fromAddress = new InternetAddress(from); message.setFrom(fromAddress); message.setSubject(subject); Address[] toAddress = InternetAddress.parse(to); Address[] cc_address=InternetAddress.parse(cc); Address[] bcc_address=InternetAddress.parse(bcc); message.setRecipients(Message.RecipientType.TO,toAddress); message.setRecipients(Message.RecipientType.CC,cc_address); message.setRecipients(Message.RecipientType.BCC,bcc_address); message.setSentDate(new java.util.Date()); message.setText(text); Transport.send(message); } catch(Exception e) { System.out.println("Problem " + e); } } catch(Exception e) { } } };
------------------ Sandeep Jain
Try and Try Till u succeed<br /> <br />Sandeep Jain
Sandeep Jain
Ranch Hand
Joined: Oct 25, 2000
Posts: 124
posted
0
If u want to make use of smtp in the servlet
import sum.net.smtp.*; you can write the following Code in ur service method of your servlet
SmtpClient smClient=new SmtpClient("MmailHostName"); //mailHostName can be like 'mail.webveda.com' smClient.from("yourEmailAddress"); smClient.to("recipient email address"); PrintStream ps=smClient.startMessage(); ps.println("from "+ "yourEmailAddress"); ps.println("from "+ "recipient email address"); ps.println("write the subject that u wanna write "); smClient.closeServer();
------------------ Sandeep Jain
lokesh reddy
Ranch Hand
Joined: Sep 15, 2000
Posts: 66
posted
0
Hi Nishant, Here is the code u asked for import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.event.*; import javax.mail.internet.*; import javax.activation.*; public class MailSender extends HttpServlet { private final String MAIL_HOST="mail.sigmaonline.net"; public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException { res.setContentType("text/html"); PrintWriter out=res.getWriter();
String from=req.getParameter("from"); String to=req.getParameter("to"); String subject=req.getParameter("subject"); String text=req.getParameter("text"); Properties prop=System.getProperties(); prop.put("mail.smtp.host",MAIL_HOST); prop.put("mail.from",from); Session session=Session.getDefaultInstance(prop,null); try { Message message=new MimeMessage(session); InternetAddress address[]={new InternetAddress(to)}; message.setRecipients(Message.RecipientType.TO,address); message.setFrom(new InternetAddress(from)); message.setTo(to); message.setSubject(subject); message.setContent("text/plain",text); Transport transport=session.getTransport(address[0]); transport.addConnectionListener(new ConnectionHandler()); transport.addTransportListener(new TransportHandler()); transport.connect(); transport.sendMessage(message,address); } catch(Exception ex) { getServletContext().log(ex); } } class ConnectionHandler extends ConnectionAdapter { public void opened(ConnectionEvent ce) { System.out.println("Connection Opened"); } public void disconnected(ConnectionEvent ce) { System.out.println("Connection disconnected"); } public void closed(ConnectionEvent ce) { System.out.println("Connection closed"); } } class TransportHandler extends TransportAdapter { public void messageTransferred(TransportEvent te) { System.out.println("Message Delivered"); } public void messagePartiallyTransferred(TransportEvent te) { System.out.println("Message Partially Transferred"); } public void messageNotTransferred(TransportEvent te) { System.out.println("Message Not Transferred"); } } } Nishant, i dint tested this code, but i am sure that it works well, if there is any problem with this code please let me know it. Loke.
jaya raman
Greenhorn
Joined: Nov 08, 2000
Posts: 7
posted
0
Hi Lokesh, I tried ur program to send emails using JavaMail but encountered the following exception: javax.mail.MessagingException:could not connect to SMTP host :mail.yahoo.com, port:25, java.net.NoRouteToHostException: Host Unreachable: no further information. I used javawebserver2.0. Could u pls. help me on this regard. Is anything wrong in the following mail host: private final String MAIL_HOST="mail.yahoo.com"; kindly suggest me. regards, jayaraman mailid:jayaraman_g@usa.net
Originally posted by lokesh reddy: Hi Nishant, Here is the code u asked for import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.event.*; import javax.mail.internet.*; import javax.activation.*; public class MailSender extends HttpServlet { private final String MAIL_HOST="mail.sigmaonline.net"; public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException { res.setContentType("text/html"); PrintWriter out=res.getWriter();
String from=req.getParameter("from"); String to=req.getParameter("to"); String subject=req.getParameter("subject"); String text=req.getParameter("text"); Properties prop=System.getProperties(); prop.put("mail.smtp.host",MAIL_HOST); prop.put("mail.from",from); Session session=Session.getDefaultInstance(prop,null); try { Message message=new MimeMessage(session); InternetAddress address[]={new InternetAddress(to)}; message.setRecipients(Message.RecipientType.TO,address); message.setFrom(new InternetAddress(from)); message.setTo(to); message.setSubject(subject); message.setContent("text/plain",text); Transport transport=session.getTransport(address[0]); transport.addConnectionListener(new ConnectionHandler()); transport.addTransportListener(new TransportHandler()); transport.connect(); transport.sendMessage(message,address); } catch(Exception ex) { getServletContext().log(ex); } } class ConnectionHandler extends ConnectionAdapter { public void opened(ConnectionEvent ce) { System.out.println("Connection Opened"); } public void disconnected(ConnectionEvent ce) { System.out.println("Connection disconnected"); } public void closed(ConnectionEvent ce) { System.out.println("Connection closed"); } } class TransportHandler extends TransportAdapter { public void messageTransferred(TransportEvent te) { System.out.println("Message Delivered"); } public void messagePartiallyTransferred(TransportEvent te) { System.out.println("Message Partially Transferred"); } public void messageNotTransferred(TransportEvent te) { System.out.println("Message Not Transferred"); } } } Nishant, i dint tested this code, but i am sure that it works well, if there is any problem with this code please let me know it. Loke.
jaya raman
Greenhorn
Joined: Nov 08, 2000
Posts: 7
posted
0
Hi Sandeep, I tried ur program to send emails using JavaMail but encountered the following exception: javax.mail.MessagingException:could not connect to SMTP host :mail.yahoo.com, port:25, java.net.NoRouteToHostException: Host Unreachable: no further information. I used javawebserver2.0. Could u pls. help me on this regard. Is anything wrong in the following piece of code(mail host): prop.put("mail.smtp.host","mail.rediff.com"); kindly suggest me. rgds, jayaraman
Originally posted by Sandeep Jain: Hi , There are two ways through which you can send a mail , 1) using the smtp Client 2) using javamail package. If u wanna make use of java mail package, the code is as follows
import javax.mail.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.internet.*; public class SendingMail2 extends HttpServlet { public void service(HttpServletRequest req,HttpServletResponse res) { try { res.setContentType("text/html"); String from = "uremailid eg sandeep_raparia@yahoo.com "; String to = "recipents email id eg xyz@pqr.com"; String subject = "the subject u wanna send "; String cc="cc addresses " String bcc="Bcc address"; String text="the matter that u wanna send "; java.util.Properties prop = System.getProperties(); prop.put("mail.smtp.host","mail.yahoo.com"); Session ses = Session.getInstance(prop,null); MimeMessage message = new MimeMessage(ses); try { Address fromAddress = new InternetAddress(from); message.setFrom(fromAddress); message.setSubject(subject); Address[] toAddress = InternetAddress.parse(to); Address[] cc_address=InternetAddress.parse(cc); Address[] bcc_address=InternetAddress.parse(bcc); message.setRecipients(Message.RecipientType.TO,toAddress); message.setRecipients(Message.RecipientType.CC,cc_address); message.setRecipients(Message.RecipientType.BCC,bcc_address); message.setSentDate(new java.util.Date()); message.setText(text); Transport.send(message); } catch(Exception e) { System.out.println("Problem " + e); } } catch(Exception e) { } } };
jaya raman
Greenhorn
Joined: Nov 08, 2000
Posts: 7
posted
0
Hi Sandeep, I tried ur program to send emails using JavaMail but encountered the following exception: javax.mail.MessagingException:could not connect to SMTP host :mail.yahoo.com, port:25, java.net.NoRouteToHostException: Host Unreachable: no further information. I used javawebserver2.0. Could u pls. help me on this regard. Is anything wrong in the following piece of code(mail host): prop.put("mail.smtp.host","mail.yahoo.com"); kindly suggest me. rgds, jayaraman
Originally posted by Sandeep Jain: Hi , There are two ways through which you can send a mail , 1) using the smtp Client 2) using javamail package. If u wanna make use of java mail package, the code is as follows
import javax.mail.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.internet.*; public class SendingMail2 extends HttpServlet { public void service(HttpServletRequest req,HttpServletResponse res) { try { res.setContentType("text/html"); String from = "uremailid eg sandeep_raparia@yahoo.com "; String to = "recipents email id eg xyz@pqr.com"; String subject = "the subject u wanna send "; String cc="cc addresses " String bcc="Bcc address"; String text="the matter that u wanna send "; java.util.Properties prop = System.getProperties(); prop.put("mail.smtp.host","mail.yahoo.com"); Session ses = Session.getInstance(prop,null); MimeMessage message = new MimeMessage(ses); try { Address fromAddress = new InternetAddress(from); message.setFrom(fromAddress); message.setSubject(subject); Address[] toAddress = InternetAddress.parse(to); Address[] cc_address=InternetAddress.parse(cc); Address[] bcc_address=InternetAddress.parse(bcc); message.setRecipients(Message.RecipientType.TO,toAddress); message.setRecipients(Message.RecipientType.CC,cc_address); message.setRecipients(Message.RecipientType.BCC,bcc_address); message.setSentDate(new java.util.Date()); message.setText(text); Transport.send(message); } catch(Exception e) { System.out.println("Problem " + e); } } catch(Exception e) { } } };
lokesh reddy
Ranch Hand
Joined: Sep 15, 2000
Posts: 66
posted
0
Hi Jayaram, I think u r behind a firewall or a proxy server. Any way, here i would like to provide some alternate ways to run your program with out any errors. Try to add this code after initializing Properties object. prop.put("http.proxyHost","YOUR PROXY SERVER NAME"); prop.put("http.proxyPort","PORT NO ON WHICH SERVER LISTENS"); Replace the Proxy Server Name and Port with appropriate strings. If this too doesn't work, then try to change HOST_NAME. You can try with the following HOST_NAMES. 1) mail.sigmaonline.net 2) mail.webveda.com I hope you find this info useful. Bye. Loke.
milan doshi
Ranch Hand
Joined: Nov 03, 2000
Posts: 43
posted
0
Hi Lokesh, Sandeep,Jayaram. Your explainations are very helpful. Thanx for the same. Kindly please tell me what is the significance of session object. Regards
Anonymous
Ranch Hand
Joined: Nov 22, 2008
Posts: 18944
posted
0
Hi Lokesh, Thanks for providing an explanation for sending the mail from the machines behind the firewall or proxy. I tried the same thru JSP.But the mail is not reaching the destination even though I am getting the msg as mail sent. Any settings r required thru policy tools to enable routing the msg thru proxy settings. If so, Pls give me the details. Bye, Manish
sham
Greenhorn
Joined: May 17, 2001
Posts: 4
posted
0
Hi Loke, Your coding was really useful to me. But i have one special requirement. Normally in the coding you are pre-fixing the MAIL HOST ADDRESS (e.g. mail.yahoo.com), whereas in my application i am getting the different mail addresses from the user (like yahoo, hotmail, usa.net, rediff etc). If this be case what consideration i should take in refining your code. Kindly advise me in this regard at the earliest. Tks a lot Jowsaki
Originally posted by lokesh reddy: Hi Nishant, Here is the code u asked for import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import javax.mail.*; import javax.mail.event.*; import javax.mail.internet.*; import javax.activation.*; public class MailSender extends HttpServlet { private final String MAIL_HOST="mail.sigmaonline.net"; public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException { res.setContentType("text/html"); PrintWriter out=res.getWriter();
String from=req.getParameter("from"); String to=req.getParameter("to"); String subject=req.getParameter("subject"); String text=req.getParameter("text"); Properties prop=System.getProperties(); prop.put("mail.smtp.host",MAIL_HOST); prop.put("mail.from",from); Session session=Session.getDefaultInstance(prop,null); try { Message message=new MimeMessage(session); InternetAddress address[]={new InternetAddress(to)}; message.setRecipients(Message.RecipientType.TO,address); message.setFrom(new InternetAddress(from)); message.setTo(to); message.setSubject(subject); message.setContent("text/plain",text); Transport transport=session.getTransport(address[0]); transport.addConnectionListener(new ConnectionHandler()); transport.addTransportListener(new TransportHandler()); transport.connect(); transport.sendMessage(message,address); } catch(Exception ex) { getServletContext().log(ex); } } class ConnectionHandler extends ConnectionAdapter { public void opened(ConnectionEvent ce) { System.out.println("Connection Opened"); } public void disconnected(ConnectionEvent ce) { System.out.println("Connection disconnected"); } public void closed(ConnectionEvent ce) { System.out.println("Connection closed"); } } class TransportHandler extends TransportAdapter { public void messageTransferred(TransportEvent te) { System.out.println("Message Delivered"); } public void messagePartiallyTransferred(TransportEvent te) { System.out.println("Message Partially Transferred"); } public void messageNotTransferred(TransportEvent te) { System.out.println("Message Not Transferred"); } } } Nishant, i dint tested this code, but i am sure that it works well, if there is any problem with this code please let me know it. Loke.
Frank Carver
Sheriff
Joined: Jan 07, 1999
Posts: 6913
posted
0
"sham", The Java Ranch has thousands of visitors every week, many with surprisingly similar names. To avoid confusion we have a naming convention, described at http://www.javaranch.com/name.jsp . We require names to have at least two words, separated by a space, and strongly recommend that you use your full real name. Please log in with a new name which meets the requirements. Thanks.
Hi Loke, Your coding was really useful to me. But i have one special requirement. Normally in the coding you are pre-fixing the MAIL HOST ADDRESS (e.g. mail.yahoo.com), whereas in my application i am getting the different mail addresses from the user (like yahoo, hotmail, usa.net, rediff etc). If this be case what consideration i should take in refining your code. Kindly advise me in this regard at the earliest. Tks a lot Jowsaki
Originally posted by lokesh reddy: Hi Jayaram, I think u r behind a firewall or a proxy server. Any way, here i would like to provide some alternate ways to run your program with out any errors. Try to add this code after initializing Properties object. prop.put("http.proxyHost","YOUR PROXY SERVER NAME"); prop.put("http.proxyPort","PORT NO ON WHICH SERVER LISTENS"); Replace the Proxy Server Name and Port with appropriate strings. If this too doesn't work, then try to change HOST_NAME. You can try with the following HOST_NAMES. 1) mail.sigmaonline.net 2) mail.webveda.com I hope you find this info useful. Bye. Loke.
Rajul King
Ranch Hand
Joined: Apr 12, 2001
Posts: 47
posted
0
Lokesh and Sandeep, My mail server needs authentication to send the mail. It generates error 353. I know the valid userID and Password. How do I supply the usernama and password. Any idea. thanks,
ramon diego
Greenhorn
Joined: Oct 13, 2004
Posts: 4
posted
0
There is a setText method in the javax.mail.message class, but no getText. Can anyone tell me why and how to get the message text of an email with the java mail api?