grazie per i suggerimenti... cercherò di essere più preciso... la mia pagina jsp che richiama la servlet è la seguente:
codice:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%@ page language="java" import="java.text.*, com.lowagie.text.*, com.lowagie.text.pdf.*, java.io.*, java.net.URL, java.net.URLConnection, java.net.URLDecoder, java.net.URLEncoder, java.util.*"%>
<%
String qualifica = request.getParameter("qualifica");
String info = request.getParameter("info");
String motivo = request.getParameter("motivo");
String why = request.getParameter("why");
String suggerimento = request.getParameter("suggerimento");
String come = request.getParameter("come");
String giornalino = request.getParameter("giornalino");
String news = request.getParameter("news");
String like = request.getParameter("like");
String email = request.getParameter("email");
String nuovo = request.getParameter("nuovo");
%>
<form name="servlet" action="Mail" method="POST">
<%
out.println("riepilogo:\r\n");%>
<%out.println("qualifica: " +qualifica+"\n");%>
<%out.println("ti e' facile reperir informazioni: "+info+"\n");%>
<%out.println("se no,dai motivo: "+motivo+"\n");%>
<%out.println("se si, le info sono chiare?: "+why+"\n");%>
<%out.println("se no, dai un suggerimento: "+suggerimento+"\n");%>
<%out.println("come reperisci le info: "+come+"\n");%>
<%out.println("come vorresti ripristinare il giornalino: "+giornalino+"\n");%>
<%out.println("nuovi articoli proposti: "+news+"\n");%>
<%out.println("ti farebbe riceverlo sulla tua email: "+like+"\n");%>
<%out.println("email se si: "+email+"\n");%>
<%out.println("altri suggerimenti: "+nuovo+"\n\n");%>
<%out.println("è stata salvata una copia sul vostro desktop.\n\n");
String from=email;
String per = "mio.indirizzo@hotmail.it";
String smtpServ = "smtp.live.com";
String subject = "questionario";
String message = "In allegato il questionario";
%>
<input type="hidden" name="per" value="<% out.print(per);%>" />
<input type="hidden" name="from" value="<% out.print(from);%>" />
<input type="hidden" name="smtpServ" value="<% out.print(smtpServ);%>" />
<input type="hidden" name="subject" value="<% out.print(subject);%>" />
<input type="hidden" name="message" value="<% out.print(message);%>" />
<input type="submit" value="premi per confermare" name="ok" />
</form>
</body>
</html>
la servlet è la seguente:
codice:
package servlet;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import java.util.Properties;
import javax.activation.*;
import java.io.*;
public class Mail extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String to=request.getParameter("per");
String from= request.getParameter("from");
String message=request.getParameter("message");
String subject=request.getParameter("subject");
String smtpServ=request.getParameter("smtpServ");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>inviomail</title>");
out.println("</head>");
out.println("<body>");
Properties props = System.getProperties();
// -- Attaching to default Session, or we could start a new one --
props.put("mail.transport.protocol", "smtp" );
props.put("mail.smtp.starttls.enable","true" );
props.put("mail.smtp.host",smtpServ);
props.put("mail.smtp.auth", "true" );
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
// -- Create a new message --
Message msg = new MimeMessage(session);
// -- Set the FROM and TO fields --
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
msg.setSubject(subject);
msg.setText(message);
// provo ad inviare allegato
String informazione=System.getProperty("user.home");
Document d = new Document();
PdfWriter.getInstance( d,new FileOutputStream(informazione+"/Desktop/"+from+".pdf"));
d.open();
d.add(new Paragraph("qualifica: \r\n"));
d.add(new Paragraph("ti e' facile reperir informazioni: \r\n"));
d.add(new Paragraph("se no,dai motivo: \r\n"));
d.add(new Paragraph("se si, le info sono chiare?: \r\n"));
d.add(new Paragraph("se no, dai un suggerimento: \r\n"));
d.add(new Paragraph("come reperisci le info: \r\n"));
d.add(new Paragraph("come vorresti ripristinare il giornalino: \r\n"));
d.add(new Paragraph("nuovi articoli proposti: \r\n"));
d.add(new Paragraph("ti farebbe riceverlo sulla tua email: \r\n"));
d.add(new Paragraph("email se si: \r\n"));
d.add(new Paragraph("altri suggerimenti:\r\n"));
d.close();
MimeMultipart multipart = new MimeMultipart();
FileDataSource source = new FileDataSource(informazione+"/Desktop/"+from+".pdf");
// Create a message part to represent the body text
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setDataHandler(new DataHandler(source));
// add the message body to the mime message
multipart.addBodyPart( messageBodyPart );
messageBodyPart.setFileName(from+".pdf");
msg.setContent(multipart);
// -- Set some other header information --
msg.setHeader("MyMail", "Mr. XYZ" );
msg.setSentDate(new Date());
// -- Send the message --
Transport.send(msg);
out.println("Message sent to"+to+" OK." );
out.println("</body>");
out.println("</html>");
doRedirect("view.jsp", response );
}catch (Exception ex)
{
ex.printStackTrace();
out.println("Exception "+ex);
} finally {
out.close();
}
}
private void doRedirect(String nuovaPagina, HttpServletResponse response )
throws IOException {
response.sendRedirect( nuovaPagina);
}
private class SMTPAuthenticator extends javax.mail.Authenticator {
@Override
public PasswordAuthentication getPasswordAuthentication() {
String username = "mio.indirizzo@hotmail.it";
String password = "miapassw";
return new PasswordAuthentication(username, password);
}
}
il seguente è il file web.xml
codice:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Mail</servlet-name>
<servlet-class>servlet.Mail</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Mail</servlet-name>
<url-pattern>/Mail</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
quando provo ad eseguire questo programma sul mio pc funziona... quando provo ad eseguirlo sul web, dopo averlo caricato su questo sito di hosting java, il browser mi da il seguente errore:
codice:
type Status report
message: Servlet Mail is not available
description: The requested resource (Servlet Mail is not available) is not available.
mentre il file di log mi dice quanto segue:
codice:
18-feb-2013 17.00.17 org.apache.catalina.core.StandardWrapperValve invoke
INFO: Servlet Mail is currently unavailable
usando netbeans, la struttura della mia applicazione è del tipo:
codice:
Web Pages
+ META-INF
+ WEB_INF
web.xml
index.jsp
newjsp.jsp
Source Packages
+servlet
Mail.java
spero di essere stato più chiaro! di nuovo grazie in anticipo.