Não estou conseguindo instanciar a classe SendMail

Bom gente, não estou conseguindo instanciar a uma classe chamada SendMail, sendo que o código dela eu peguei aqui mesmo no fórum.

Aqui está o servlet que estou tentando instanciar a SendMAil nele:

[code]package controller;

import model.SendMail;
import model.dao.AlunoDAO;
import model.dao.FuncionarioDAO;
import model.dao.ProfessorDAO;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
import org.apache.commons.lang.RandomStringUtils;

public class RegistroServlet extends HttpServlet {

/*vei enviar um email de confirmação de inscrição,
 para a pessoa que acabou de efetuar o registro*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {

        //recupera dos dados do primeiro registro
        String email = request.getParameter("email");
        String matricula = request.getParameter("matricula");
        
        //gera a senha aleatória
        String alePWD = RandomStringUtils.randomAlphanumeric(6);
        
        String matricula1 = matricula.substring(0,3);
        
        if ( matricula1.equals( "PRO" ) )
        {
            ProfessorDAO.inserirRegistro(matricula, email, alePWD);
            
            JOptionPane.showMessageDialog(null, "Cadastro efetuado com sucesso! "
                + "Verifique o email para completar o seu cadastro");
        
        response.sendRedirect("index.jsp");
        
        }
        else if ( matricula1.equals( "ALU" ) )
        {
            //faz o primeiro registro
            AlunoDAO.inserirRegistro(matricula, email, alePWD);
            
            SendMail sm = new SendMail();
            
            //envia o email
            //SendMail sm = new SendMail();
            //sm.sendMail("sistema.infoteca@gmail.com", email, "Registro efetuado com sucesso", "sua senha aleatória é:"+ alePWD);
            
            JOptionPane.showMessageDialog(null, "Cadastro efetuado com sucesso! "
                + "Verifique o email para completar o seu cadastro");
        
        response.sendRedirect("index.jsp");
        
        }    
        else if ( matricula1.equals( "FUN" ) )
        {
            FuncionarioDAO.inserirRegistro(matricula, email, alePWD);
            
            JOptionPane.showMessageDialog(null, "Cadastro efetuado com sucesso! "
                + "Verifique o email para completar o seu cadastro");
        
        response.sendRedirect("index.jsp");
        }
        else{
            JOptionPane.showMessageDialog(null, "Insira uma matrícula válida. Consulte a sua secretaria para obte-la.");
            
            response.sendRedirect("index.jsp");
        }
        
        //SendMail sm = new SendMail();
        /*sm.sendMail("sistema.infoteta@gmail.com", "coolrafael625@gmail.com", "Complete o seu cadastro", 
                "Email cadastrado com sucesso<br>"
                + "Complete o seu cadastro por favor");*/
        
    } finally { 
        out.close();
    }
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/** 
 * Handles the HTTP <code>GET</code> method.
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    processRequest(request, response);
} 

/** 
 * Handles the HTTP <code>POST</code> method.
 * @param request servlet request
 * @param response servlet response
 * @throws ServletException if a servlet-specific error occurs
 * @throws IOException if an I/O error occurs
 */
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    processRequest(request, response);
}

/** 
 * Returns a short description of the servlet.
 * @return a String containing servlet description
 */
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>

}
[/code]

e aqui vai a classe SendMail:

[code]package model;

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

public class SendMail {

private String mailSMTPServer;
private String mailSMTPServerPort;

/*quando instanciar um objeto já será atribuido o servidor SMTP do GAMIL
 e a porta usada por ele
 */

SendMail()
{//Para o GMAIL
    mailSMTPServer = "smtp.gmail.com";
    mailSMTPServerPort = "465";
}

/*
 caso queira mudar o servidor e a porta, só enviar para o construtor
 * os valores cmo string
 */
SendMail(String mailSMTPServer, String mailSMTPServerPort)
{
    this.mailSMTPServer = mailSMTPServer;
    this.mailSMTPServerPort = mailSMTPServerPort;
}

public void sendMail(String from, String to, String subject, String message)
{
    Properties props = new Properties();

    //proxy
    props.setProperty("proxySet","true");
    props.setProperty("socksProxyHost", "192.168.155.1");
    props.setProperty("socksProxyPort", "1080");

    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", mailSMTPServer);
    props.put("mai.smtp.auth", "true");
    props.put("mail.smtp.user", from);
    props.put("mail.debug", "true");
    props.put("mail.smtp.port", mailSMTPServerPort);
    props.put("mail.smtp.socketFactory.port", mailSMTPServerPort);
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");

    SimpleAuth auth = null;
    auth = new SimpleAuth("sistema.infoteca@gmail.com","sistemaFIRJAN");

    Session session = Session.getDefaultInstance(props, auth);
    session.setDebug(true);

    Message msg = new MimeMessage(session);

    try
    {
        msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
        msg.setFrom(new InternetAddress(from));
        msg.setSubject(subject);
        msg.setContent(message, "text/html");

    }catch (Exception e)
    {
        System.out.println(">> Erro: Completar Mensagem");
        e.printStackTrace();
    }

    Transport tr;
    try
    {
        tr = session.getTransport("smtp");
        tr.connect(mailSMTPServer, "sistema.firjan@gmail.com","sistemaFIRJAN");
        msg.saveChanges();
        tr.sendMessage(msg, msg.getAllRecipients());
        tr.close();
    }catch( Exception e )
    {
        System.out.println( ">> Erro: Completar Mensagem" );
        e.printStackTrace();
    }


}

}
[/code]
Será que alguém do fórum poderia me dar uma mão d

PS: A API javamail está devidamente importada no projeto

PS: Tanto a classe SendMail quanto uma outr classe que a SendMail faz “referência”, estão digitadas corretamente.

braços a todos!

Amigo

Tem como postar o erro de exception, ou o problema que está gerando.
As classes postadas no forum são somente para entendimento de lógica, vc nao deve copiar e colar.

Acho que eu não foi claro, foi mal, quando eu tento instanciar a classe SendMail no servlet RegistroServlet, o netbeans fica acusando um erro. Ele diz que não pode achar o construtor dessa classe e me dá a opção de criar um, só que esta classe(SendMail), já tem esse construtor.

Acho que você esta instaciando a classe erroniamente.

[code]//faz o primeiro registro
AlunoDAO.inserirRegistro(matricula, email, alePWD);

            SendMail sm = new SendMail();  
              
            //envia o email  
            //SendMail sm = new SendMail();  
            //sm.sendMail("sistema.infoteca@gmail.com", email, "Registro efetuado com sucesso", "sua senha aleatória é:"+ alePWD);  
              
            JOptionPane.showMessageDialog(null, "Cadastro efetuado com sucesso! "  
                + "Verifique o email para completar o seu cadastro");  [/code]

Ela esta dentro de sua função, experimente colocar ela fora da função, e fazer uma classe publica, essa classe deve permanecer dentro de sua classe Registro, incorpore somente a função com seus derivados.
Se quiser posso colocar um exemplo para você.

cara, desculpe a minha extrema ignorancia, mas não estou conseguindo ver a diferença. rsrsrsrs

Para ficar claro vou postar meu exemplo…

[code] public main(Strings[] args){
emailSimples();
}

	private SimpleEmail emailSimples(){			
									
				this.assuntoEmail = "Assunto";
				eviarEmail(getEmailDestinatario(), getNomeDestinatario(),
							getEmailRemetente(), getNomeRemetente(), assuntoEmail,
							mensagemEmail);				

				
	}

private void enviarEmail(String emailDest, String nomeDest,
String emailRemet, String nomeRemet, String assunto, String corpo)
throws Exception{

		Authenticator auth = new Authenticator() {
			@Override
			public PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication(
							getUserMail(), getUserPassword());
				}			
		};

		Session session = Session.getInstance(Properties.Seu auth);
                    //Coloque em session seu properties ou sua configuração de servidor.

		MimeMessage message = new MimeMessage(session);
		message.setFrom(new InternetAddress(emailRemet, nomeRemet));
		message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailDest, nomeDest));
		message.setSubject(assunto);
		message.setContent(corpo, "text/plain");
		
		Transport.send(message);
		
	}

[/code]

O que faço então, utilizo em main, um metodo simpleemail, de envio de email simples(sem anexo),
com o metodo enviarEmail, um metodo void que pega todas informações de servidor e autenticação, adicionar e dar um transport.send

Nessa classe utilizei a bibilioteca javax.mail.

Crie uma classe para pegar seu properties.

[code]
public class PropertiesSeu{

private static Properties config = new Properties();
private static InputStream configFile = null;

static {
	configFile = PropertiesSeu.class.getResourceAsStream("/configs.properties");

//Quando o arquivo esta dentro do seu projeto/package(pacote)
try {
config.load(configFile);
configFile.close();
} catch (IOException e) {
e.printStackTrace();
}

}
public static Properties getPropertiesSeu() throws IOException{
	
	return config;
	
}

}[/code]

Exemplo de arquivo properties para email:


#Configurações de servidor Email SMTP
#Host#
mail.smtp.host=smtp.gmail.com.br
#Autenticação#
mail.smtp.auth=false
#Porta para envio de email
mail.smtp.port=465
#SSL#
mail.smtp.starttls.enable=true
#Remetente#
remetente=remtt@remtt.com.br
#Nome específicado do Remetente#
nomeRemetente=NomeRemetente
#Senha para autenticação no servidor#
passwordUserMail=
#Destinátario#
destinatario=destinatario@destinatario.com.br
#Nome específicado do Destinátario#
nomeDestinatario=Destino

#------------------------------------#