Enviar email usando java.mail

Pessoal, boa tarde.

Estou com problemas para enviar email utilizando o java.mail.

Segue o codigo da classe para enviar e da classe teste;

[code]

import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.MailcapCommandMap;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EnviarEmail {

private String host = "smtp.mail.yahoo.com.br"; /* endereço do servidor smtp */

public class SMTPAuthenticator extends Authenticator {
	@Override
	public PasswordAuthentication getPasswordAuthentication() {
		String username = "caxxxxxxxxxxxxxx@yahoo.com.br";
		String password = "xxxxxxxxx";
		return new PasswordAuthentication(username, password);
	}
}

public void EnviarEmailPara(String para, String assunto, String mensagem)
		throws Exception {
	String from = "caxxxxxxxxxxxxxxx@yahoo.com.br";
	String fileAttachment = "";

	Properties mailProps = System.getProperties();

	mailProps.put("mail.smtp.host", this.host);

	Authenticator auth = new SMTPAuthenticator();
	Session session = Session.getDefaultInstance(mailProps, auth);

	mailProps.put("mail.smtp.auth", "true");
	mailProps.put("mail.debug", "true");
	mailProps.put("mail.smtp.debug", "true");
	mailProps.put("mail.mime.charset", "ISO-8859-1");
	mailProps.put("mail.smtp.port", "587");

	MailcapCommandMap mc = (MailcapCommandMap) CommandMap
			.getDefaultCommandMap();
	mc
			.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
	mc
			.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
	mc
			.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
	mc
			.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
	mc
			.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
	CommandMap.setDefaultCommandMap(mc);

	// Definir mensagem
	MimeMessage message = new MimeMessage(session);
	message.setFrom(new InternetAddress(from));
	message.addRecipient(Message.RecipientType.TO,
			new InternetAddress(para));
	message.setSubject(assunto);

	// Criar parte da mensagem
	MimeBodyPart messageBodyPart = new MimeBodyPart();

	// Texto da mensagem
	messageBodyPart.setText(mensagem);

	Multipart multipart = new MimeMultipart();
	multipart.addBodyPart(messageBodyPart);

	// Enviar parte da mensagem
	message.setContent(multipart);

	message.setContent(mensagem.toString(), "text/html");

	// Enviar toda a mensagemSend the message
	Transport.send(message);
}

}[/code]

public class testaEnvia {
	public static void main(String[] args) {
		EnviarEmail enviarEmail = new EnviarEmail();
		try {
			enviarEmail.EnviarEmailPara("caxxxxxx@hotmail.com",	"teste", "testando aplicativo");
		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}

}

o erro que dá, é este:
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319 )
at javax.mail.Service.connect(Service.java:169 )
at javax.mail.Service.connect(Service.java:118 )
at javax.mail.Transport.send0(Transport.java:188 )
at javax.mail.Transport.send(Transport.java:118 )
at be.com.camilo.jdbc.comunicacao.EnviarEmail.EnviarEmailPara(EnviarEmail.java:84)
at be.com.camilo.jdbc.comunicacao.testaEnvia.main(testaEnvia.java:7)

Ja mudei o email de destino pra yahoo, etc e sempre da o mesmo erro.

Ja nao sei mais oq fazer…

Por favor, me ajudem.

valew

talvez o yahoo use smtp com ssl … e a porta q vc usa pra conectar seja outra …

mas é so uma hipotese

Ja tentei fazer isso, mudei pro gmail tambem e continua dando o mesmo erro…

Para o Yahoo, veja:

http://java.sun.com/products/javamail/FAQ.html#yahoomail

Para o GMail,

http://java.sun.com/products/javamail/FAQ.html#gmail

Opa, valew.

Vou estudar e qualquer dúvida eu posto aqui…

Assim q eu conseguir solucionar o problema, posto aqui pra todos.

Agora, só uma dúvida que já veio de cara…para cada tipo de e-mail tenho que ter um jeito de mandar?? ou esse tipo é para meu e-mail do yahoo, do gmail, etc.

E para hotmail? tem algo como isso que vc me passou?

Att

Camilo Oscar

Hotmail - http://jdavmail.sourceforge.net/

Olha, este fórum me ajudou bastante, consegui enviar e-mail usando o GMail: http://forums.sun.com/thread.jspa?threadID=759635

O curioso é que eu só consegui enviar as mensagens quando eu testo a aplicação localmente. Quando eu publiquei no servidor e tentei enviar deu o seguinte erro: “access denied (java.net.SocketPermission smtp.gmail.com resolve)”.

De volta à prancheta…

[quote=onyaszimba]O curioso é que eu só consegui enviar as mensagens quando eu testo a aplicação localmente. Quando eu publiquei no servidor e tentei enviar deu o seguinte erro: “access denied (java.net.SocketPermission smtp.gmail.com resolve)”.

De volta à prancheta…[/quote]

Dependendo do seu application server, ele não habilita acesso a sockets, a menos que seja alterada a policy correspondente. Você tem de consultar a documentação do seu application server (ou seja, não precisa mudar seu programa, mas precisa mexer em alguma configuração do seu application server).

[quote=thingol][quote=onyaszimba]O curioso é que eu só consegui enviar as mensagens quando eu testo a aplicação localmente. Quando eu publiquei no servidor e tentei enviar deu o seguinte erro: “access denied (java.net.SocketPermission smtp.gmail.com resolve)”.

De volta à prancheta…[/quote]

Dependendo do seu application server, ele não habilita acesso a sockets, a menos que seja alterada a policy correspondente. Você tem de consultar a documentação do seu application server (ou seja, não precisa mudar seu programa, mas precisa mexer em alguma configuração do seu application server).
[/quote]

Pois é thingol. Mas o meu problema é que o meu “server”, no caso, é um host gratuito na internet. Então acho que não tem muito jeito mesmo. Mesmo assim eu consegui enviar e-mail (mesmo que testando na minha máquina) depois de três dias penando em cima disso. Valeu as dicas aí pessoal!