Salve a tutti. Ho scritto questa servlet, ma il problema è che l'e-mail arriva 2 volte! Perchè?

codice:
package servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.Properties;
import java.util.Date;
import javax.mail.Transport;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Address;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;

public class TestMailer extends HttpServlet {
    private String smtp = "mail.libero.it";
    private String mitt = "test@dieffeweb.com";
    private String dest = "thelizard.king@hotmail.it";

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet TestMail</title>");
        out.println("</head>");
        out.println("<body>");
        try
        {
            Properties props = System.getProperties();
            props.put ("mail.smtp.host", smtp);

            Session session = Session.getDefaultInstance (props);
            Message message = new MimeMessage (session);

            message.setFrom (new InternetAddress (mitt));
            message.setRecipient (Message.RecipientType.TO, new InternetAddress (dest));
            message.setSubject ("E-mail test");
            message.setSentDate (new Date());
            message.setText ("Questa è una e-mail di prova");

            Transport.send (message);

            out.println ("E-mail inviata");
        }
        catch (Exception exception)
        {
            out.println ("E-mail NON inviata");
        }
        out.println("</body>");
        out.println("</html>");

        out.close();
    }

    protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        processRequest (request, response);
    }

    protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        processRequest (request, response);
    }
}
Ma l'host smtp deve essere sempre quello del mio provider? Perchè provando con mail.tin.it non va... e se invece di eseguire questa servlet in locale la eseguissi su un server, che host dovrei specificare? Non esiste un metodo di invio e-mail senza l'uso dell'smtp? Come ad esempio la funzione mail() del PHP...