Ajuda com Javamail e servidor de proxy

6 respostas
M

Ola, estou desenvolvendo uma classe que usa Javamail para enviar um relatório para os clientes.
O meu problema é que existe um servidor de proxy no meu trabalho que exige autenticação.
Alguem sabe me dizer como faço essa autenticação com javamail??

Obrigado!!!

6 Respostas

W

Olá Mathias,

Provavelmente a autenticação que esta sendo requisitada não seja em seu servidor proxy, mas no seu servidor smtp.
Poste seu código aqui para eu ver se consigo te ajudar. :wink:

Valeu !!!

M

Cara valeu , realmente o problema era a autenticação do servidor smtp.

meu código ficou assim:

Properties props = new Properties();
				
props.put("mail.smtp.host", host);
				
props.put("mail.smtp.auth", "true");		
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth); 	
session.setDebug(true);
				
MimeMessage message = new MimeMessage(session);
			
message.setFrom(new InternetAddress(usuarioEmail));
				
message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailContato));
message.addRecipient(Message.RecipientType.CC, new InternetAddress(usuarioEmail));

message.setSubject("Cotação de Preços # " + cotacao.getId());
			
message.setContent(mensagem, "text/html");
			
Transport.send(message);

Ele funcionou legal em uma aplicação local para teste que fiz aki.

Mas o meu problema agora é outro quando coloco essa classe para ser chamada no Tomcat, em uma action do Struts, o email nao é enviado.

Alguem sabe me dizer se tenho q configurar algo no Tomcat, ou mesmo no Struts?

M

Cara valeu , realmente o problema era a autenticação do servidor smtp.

meu código ficou assim:

Properties props = new Properties();
				
props.put("mail.smtp.host", host);
				
props.put("mail.smtp.auth", "true");		
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth); 	
session.setDebug(true);
				
MimeMessage message = new MimeMessage(session);
			
message.setFrom(new InternetAddress(usuarioEmail));
				
message.addRecipient(Message.RecipientType.TO, new InternetAddress(emailContato));
message.addRecipient(Message.RecipientType.CC, new InternetAddress(usuarioEmail));

message.setSubject("Cotação de Preços # " + cotacao.getId());
			
message.setContent(mensagem, "text/html");
			
Transport.send(message);

Ele funcionou legal em uma aplicação local para teste que fiz aki.

Mas o meu problema agora é outro quando coloco essa classe para ser chamada no Tomcat, em uma action do Struts, o email nao é enviado.

Alguem sabe me dizer se tenho q configurar algo no Tomcat, ou mesmo no Struts?

W

Olá Mathias,

Gostaria de saber a respeito do código :

props.put("mail.smtp.auth", "true"); Authenticator auth = new SMTPAuthenticator(); Session session = Session.getInstance(props, auth);

Vc criou esta classe SMTPAuthenticator() ?
Quando vc instancia a classe com o contrutor vazio ela já tem usuario e senha ?
Porque funciona da seguinte forma :
Quando vc utiliza a autenticação vc deve passar usuario e senha para que ela funcione, como por exemplo:

Session session = null; properties.put("mail.smtp.auth", "true"); session = Session.getInstance(properties, new Autenticador(user, psw));

Onde Autenticador é a seguinte classe :

public class Autenticador extends Authenticator { private String usr; private String pwd; public Autenticador(String usr, String pwd) { this.usr = usr; this.pwd = pwd; } public PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(this.usr, this.pwd); } }

Resumindo…
Se esta classe que vc instancia “SMTPAuthenticator()” não tem no contrutor usuario e senha, acho que o problema ainda não é o Struts, e sim continua a autenticação no smtp.

[]'s

M

Cara era realmente isso!
Estava faltando o getpassword na classe, agora esta tudo funcionando mto obrigado cara!!!

W

Blz cara… precisando… .estamos ai !!!

Criado 29 de agosto de 2007
Ultima resposta 4 de set. de 2007
Respostas 6
Participantes 2