i am sending an email the mail is sent successfully as a sting .In string i write the whole HTML code and that works fine but one thing here to be noted down is i have to send a image and that image is in data base as in blob data and a java file reterieve that image and print it in socket .
i am using the struts for mapping to that path
so when ever i try to write
String strItem +="<img src=request.getContextPath()/show.do?id=1234>" >;
when i do in this way then my the control doesnt go to that file instead of that simple string in which html text and a blank image is sent
so tell me the solution
so that i can send image and text through my mail
Here is my mail code:-- Bold text is to map the struts-config file and write the image to the socket
******************************************************************************
/*
* Created on Aug 17, 2005
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.gpi.h2.web.ecards;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
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 java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.Properties;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
import com.gpi.h2.transferobject.CatalougeItem;
import com.gpi.h2.transferobject.EcardsInfo;
import com.gpi.h2.transferobject.UserInfo;
import com.gpi.h2.businessdelegate.ecards.EcardsListImpl;
import com.gpi.h2.web.ecards.SendEcardForm;
/**
* @author Administrator
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class SendEcardMailAction extends Action
{
private static final String SMTP_HOST_NAME = "192.168.0.250";
private static final String SMTP_AUTH_USER = "tarund";
private static final String SMTP_AUTH_PWD = "password";
private String emailMsgTxt = "";
public String emailSubjectTxt = "";
public String emailFromAddress = "";
// private String filename="c:/two.jpg";
ServletOutputStream out= null;
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception
{
try
{
String userid=((UserInfo)request.getSession().getAttribute("UserInfo")).getM_strUserId();
boolean success=false;
HttpSession session = request.getSession(false);
String strItem=null;
String strItemId=null;
String strRecipients=null;
boolean save_image=false;
SendEcardForm ecardform= (SendEcardForm)form;
CatalougeItem l_CatalougeItem= new CatalougeItem();
EcardsListImpl l_EcardListImpl= new EcardsListImpl();
EcardsInfo l_EcardInfo= new EcardsInfo();
String itemid=request.getParameter("id");
l_EcardInfo.setCard_bgcolor(ecardform.getCard_bgcolor());
l_EcardInfo.setFilename(ecardform.getFilename());
l_EcardInfo.setCard_fontColor(ecardform.getCard_fontColor());
l_EcardInfo.setCard_fontSize(ecardform.getCard_fontSize());
l_EcardInfo.setCard_fontface(ecardform.getCard_fontface());
l_EcardInfo.setUserID(ecardform.getUserID());
l_EcardInfo.setCatagoryid(ecardform.getCatagoryid());
l_EcardInfo.setUserID(userid);
String[] astrRecipients;
String forsave=ecardform.getForSave();
if(forsave!=null)
{
save_image=l_EcardListImpl.saveECardLayout(l_EcardInfo);
}
strRecipients=ecardform.getRec_email();
astrRecipients=strRecipients.split(",");
//strItem=filename;
emailSubjectTxt=ecardform.getSubject();
//*****************************************HTML TEXT**************************************
strItem ="<html><body>";
strItem +="<table border=1 align='center' bgcolor='"+ecardform.getCard_bgcolor()+"'>";
strItem +="<tr><td align=left >";
strItem +="<font face="+ecardform.getCard_fontface()+" size="+ecardform.getCard_fontSize()+" color="+ecardform.getCard_fontColor()+">";
strItem +=""+ecardform.getCard_title()+" ";
strItem +="</font>";
strItem +="</tr></td>";
strItem +="<tr><td>";
strItem +="<img src=\http://localhost:8080/Harmonization/ShowEcard.do?id="+itemid+" >";
strItem +="</tr></td>";
strItem +="<tr><td align='center'>";
strItem +="<font face="+ecardform.getCard_fontface()+" size="+ecardform.getCard_fontSize()+" color="+ecardform.getCard_fontColor()+">";
strItem +=" "+ecardform.getMessage()+" ";
strItem +="</font>";
strItem +="</tr></td>";
strItem +="<tr><td align='right'>";
strItem +="<font face="+ecardform.getCard_fontface()+" size="+ecardform.getCard_fontSize()+" color="+ecardform.getCard_fontColor()+">";
strItem +=" "+ecardform.getSignature()+" ";
strItem +="</font>";
strItem +="</tr></td>";
strItem +="</table>";
strItem +="</body></html>";
//************************************************* End of HTML TEXT*****************
emailMsgTxt=strItem;
System.out.println(emailMsgTxt);
emailFromAddress=ecardform.getSen_email();
if (strRecipients!=null && strRecipients.length()>0)
{
SendEcardMailAction smtpMailSender=new SendEcardMailAction();
smtpMailSender.postMailTo( astrRecipients, emailSubjectTxt, emailMsgTxt, emailFromAddress);
success=true;
}
}catch(Exception e)
{
request.setAttribute("message"," Sorry ..Your mail has not been sent to your friend(s)");
request.setAttribute("towhichlinkforward","/mailsentfailure");
return mapping.findForward("error");
}
request.setAttribute("message","You have successfully mail the item to your friend(s)");
request.setAttribute("towhichlinkforward","/mailsentsuccess");
return mapping.findForward("ecards.confirmation");
}
public void postMailTo( 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", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "true");
Authenticator auth = new SMTPAuthenticator();
System.out.println(auth);
Session session = Session.getInstance(props, auth);
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(recipient);
Address[] addressTo=new Address[recipients.length];
for (int i = 0; i < recipients.length; i++)
{
addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
// Setting the Subject and Content Type
msg.setSubject(subject);
//********************** code for attachment************************
MimeMultipart mp= new MimeMultipart();
MimeBodyPart attach = new MimeBodyPart();
attach = new MimeBodyPart();
attach.setContent(message,"text/html");
mp.addBodyPart(attach);
msg.setContent(mp);
//**********************end of attachment code***************************
//msg.setContent(message, "text/html");
Transport transport = session.getTransport("smtp");
transport.connect( "192.168.0.250", SMTP_AUTH_USER, SMTP_AUTH_PWD);
transport.sendMessage(msg, msg.getRecipients( Message.RecipientType.TO));
//Transport.send(msg);
}
/**
* SimpleAuthenticator is used to do simple authentication
* when the SMTP server requires it.
*/
private class SMTPAuthenticator extends javax.mail.Authenticator
{
public PasswordAuthentication getPasswordAuthentication()
{
String username = SMTP_AUTH_USER;
String password = SMTP_AUTH_PWD;
System.out.println("PasswordAuthentication");
return new PasswordAuthentication(username, password);
}
}
}