I have an online email form which allows users to send an attachment. I have read through the following tutorials but I keep getting errors and I can't get my code to work.
The errors I keep getting are:
An error occurred at line: 13 in the jsp file: /submit2.jsp
Generated servlet error:
Duplicate local variable session
An error occurred at line: 13 in the jsp file: /submit2.jsp
Generated servlet error:
The constructor MimeMessage(HttpSession) is undefined
Do I need to create a location on the server for the uploaded file first and then attach to the email OR is it possible for the file to be stored in memory when uploaded? I would prefer the second option if possible.
Can someone please help me out.
<%@page import="java.util.*"%><%@page import="javax.mail.*"%><%@page import="javax.mail.internet.*"%><%@page import="javax.mail.internet.MimeMessage.RecipientType"%><%@page import="java.io.*"%><%@page import="java.util.Properties"%> <%@page import="java.lang.*"%><%@page import="javax.naming.*"%><%@page import="javax.activation.DataHandler"%><%@page import="javax.activation.DataSource"%><%@page import="javax.activation.FileDataSource"%><%@page import="java.util.Date"%><% String smtpServer = "mail.myhost.no"; // put here SMTP server address or IP you use for sending email request.setCharacterEncoding("UTF-8"); // take the submitted form values from the request String toAddress = "me@myemail.no"; String fromAddress = request.getParameter("epost"); String hvaSlags = request.getParameter("onatype"); String gjelder = request.getParameter("message"); String produkt = request.getParameter("produkt"); String viktighet = request.getParameter("grad"); String navn = request.getParameter("navn"); String adresse = request.getParameter("adresse"); String postnr = request.getParameter("postnr"); String poststed = request.getParameter("poststed"); String telefon = request.getParameter("telefon"); String fileName = request.getParameter("file1"); //this is the name of the file from the form field boolean sessionDebug = false; // create some properties and get the default Session Properties props = new Properties(); props.put("mail.smtp.host", smtpServer); try { Session session = Session.getInstance(props, null); //create a message MimeMessage message = new MimeMessage(session); InternetAddress from = new InternetAddress(fromAddress); message.setFrom(from); InternetAddress to = new InternetAddress(toAddress); message.addRecipient(Message.RecipientType.TO, to); message.setSubject("Tilbakemelding"); // create the Multipart Multipart multipart = new MimeMultipart(); // create part 1 and fill the first message part BodyPart mbpText = new MimeBodyPart(); mbpText.setText("Melding til Sjøkartverket\n" + "Hva Slags type melding: " + hvaSlags + "\nMelding gjelder: " + gjelder + "\nProdukt: " + produkt + "\nViktighet: " + viktighet + "\nNavn: " + navn + "\nAdresse: " + adresse + "\nPostnr: " + postnr + "\nPoststed: " + poststed + "\nTelefon: " + telefon + "\nEpost: " + fromAddress); multipart.addBodyPart(mbpText); // create part 2, attach file mbpText = new MimeBodyPart(); DataSource source = new FileDataSource(fileName); mbpText.setDataHandler(new DataHandler(source)); mbpText.setFileName(fileName); multipart.addBodyPart(mbpText); // add the Multipart to the message message.setContent(multipart); // set the Date: header message.setSentDate(new Date()); Transport.send(message); } catch (MessagingException mex) { // Prints all nested (chained) exceptions as well System.out.println("ERROR SENDING EMAIL:"+ mex); mex.printStackTrace(); }%><html><p align="center"> A Message has been sent by submit2.jsp<br> Check your inbox.</p><p align="center"> <a href="testmail.html">Click here to send another! - Hallelujah</a></p></html>
What you need to do is change the line 37 to
Session mysession = Session.getInstance(props, null)
and line 40 to
MimeMessage message = new MimeMessage(mysession);
as the session variable is the default name used by the JSP HttpSession.
I have tried your suggestion and I still get errors. I can't see what the problem is
org.apache.jasper.JasperException: Exception in JSP: /mailer2.jsp:43
40:
41: //create a message
42: MimeMessage message = new MimeMessage(s);
43: InternetAddress from = new InternetAddress(fromAddress);
44: message.setFrom(from);
45: InternetAddress to = new InternetAddress(toAddress);
46: message.addRecipient(Message.RecipientType.TO, to);
setFrom does not take any parameters. see manual. :)
Regards,
Tomas Helgi
0
ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.
One of a set of tools we're offering as a way to say thank you for being a part of the community.
What you need to do is change the line 37 to
Session mysession = Session.getInstance(props,
and line 40 to
MimeMessage message = new MimeMessage(mysession);
as the session variable is the default name used by the JSP HttpSession.
http://java.sun.com/products/javamail/javadocs/javax/mail/internet/MimeMessage.html
Regards,
Tomas Helgi