import java.io.*;
import java.util.*;
import javax.servlet.http.*;
import javax.servlet.*;
import javax.mail.*;
import javax.mail.internet.*;


public class mail1 extends HttpServlet
{
    protected   String  myHost  = null;
    protected   String  myTo    = null;
    protected   String  myFrom  = null;
    protected   String  mySubj  = null;
    protected   String  myBody  = null;
    
    public void init(ServletConfig sConf) throws ServletException
    {
        super.init(sConf);
        myHost  = getInitParameter("host");
        myTo    = getInitParameter("to");
        myFrom  = getInitParameter("from");
        mySubj  = getInitParameter("subject");
        myBody  = getInitParameter("body");
    }
    
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
    
        res.setContentType("text/html");
        PrintWriter writer      = res.getWriter();
        String      actionPath  = removeQueryString(req.getRequestURI());
        String      host        = req.getServerName();
        
        writer.println("<html>");
        writer.println("<head>\n<title>Mailversand</title>\n</head>");
        writer.println("<body>");
        writer.println("<h2>Mailversand</h2>");
        writer.println("<pre>");
        writer.println("<form action='"+actionPath+ "' method='post'>");
        if(myHost == null)
        writer.println("Host   : <input name='host' type=text maxlength=100 size=50>");
        if(myFrom == null)
        writer.println("From   : <input name='from' type=text maxlength=100 size=50>");
        if(myTo == null)
        writer.println("To     : <input name='to' type=text maxlength=100 size=50>");
        if(mySubj == null)
        writer.println("Subject: <input name='subject' type=text maxlength=100 size=50>");
        if(myBody == null)
        writer.println("         <textarea name='body' wrap='soft' cols='50' rows='10'></textarea>\n");
        writer.println("         <input type='submit' value='Senden'>");
        writer.println("</form>");
        writer.println("</pre>");
        writer.println("</body>");
        writer.println("</html>");
    }
    
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        res.setContentType("text/html");
        PrintWriter writer      = res.getWriter();
        String      actionPath  = removeQueryString(req.getRequestURI());
        
        writer.println("<html>\n<head>\n<title>Mailversand</title>\n</head>\n<body>\n<h2>Mailversand 5</h2>");
        
        String from = myFrom==null?req.getParameter("from"):myFrom;
        String to   = myTo==null?req.getParameter("to"):myTo;
        String subj = mySubj==null?req.getParameter("subject"):mySubj;
        String body = myBody==null?req.getParameter("body"):myBody;
        String host = myHost==null?req.getParameter("host"):myHost;
        
        writer.println("From   = "+from+"<br>");
        writer.println("To     = "+to+"<br>");
        writer.println("Subject= "+subj+"<br>");
        writer.println("Body   = "+body+"<br>");
        writer.println("Host   = "+host+"");
        
        if(host == null)
            host = req.getServerName();
        if(from     == null) writer.println("Sie müssen einen Absender angeben.");    
        if(to       == null) writer.println("Sie müssen einen Empfänger angeben.");    
        {
            //Mail-Session
            Properties  props   = new Properties();
            props.put("mail.smtp.host", host);
            Session session = Session.getDefaultInstance(props, null);
            try {
                // Message Object erstellen
                StringTokenizer     st          = new StringTokenizer(to, " ,;");
                int                 length      = st.countTokens();
                InternetAddress[]   toAddresses = new InternetAddress[length];
                for(int i=0; st.hasMoreTokens(); i++)
                {
                    toAddresses[i] = new InternetAddress(st.nextToken());
                }
                Message             msg     = new MimeMessage(session);
                msg.setFrom(new InternetAddress(from));
                msg.setSubject(subj);
                msg.setRecipients(Message.RecipientType.TO, toAddresses);
                msg.setContent(body, "text/plain");
                
                //Senden
                Transport.send(msg);
                writer.println("Die Nachricht wurde versandt.<p>");
            } catch(MessagingException mex) {
                writer.println("Beim Senden der Nachricht trat ein Fehler auf:<br><blockquote>"
                    +mex.toString()+"</blockquote><p>");
            }
        }
        writer.println("</body>\n</html>");
    }
    
    protected static String removeQueryString(String aURI)
    {
        int i   = aURI.indexOf('?');
        if(i != -1) aURI = aURI.substring(0, i);
        return aURI;
    }
}
