Olá pessoALL,
Estou usando o método JOptionPane.showMessageDialog para exibir uma mensagem, esndo que dentro há um e-mail que gostaria de que o usuário pudesse clicar alí para instanciar o Outlook.
JOptionPane.showMessageDialog( PainelPrincipal ,
"<html><body>" +
"Clique <xa href="mailto:voce@seusite.com?subject=Assunto da Mensagem">aqui </xa>para obter suporte" +
"</body></html>" ,
"e-Mail",
JOptionPane.PLAIN_MESSAGE);
Entretanto, apesar de o e-mail aparecer em azul ( que significa que o Java interpretou como texto formatado ), quando clico no link, nada acontece, como mostra uma visualização do resultado abaixo.
Clique [color=blue]aqui [/color]para obter suporte
Estou esquecendo de algum detalhe ?
( OBS.: Para poder apresentar aqui o código, renomeei o comando a do HTML para xa, afim de evitar que o browser o interprete )
+++
Use " para representar aspas dentro de uma String.
Então…Também tinha feito isso, e nada aconteceu.
Parece que tem mais algum macete necessário.
Catei exemplos na web, mas nenhum com mailto dentro da caixa de mensagem.
+++
Na verdade eu acho que o html em componentes swing auxiliam só na formatação. Mas também não corri atrás de informações mais detalhadas para ver se é só isso mesmo.
Nunca usei, mas a classe Desktop tem um método mail, que deve fazer o papel do mailto.
Olha, acho que nesse caso provavelmente não sirva, pois a idéia é que tenha a funcionalidade de um hipertexto.
Mas, valeu pela dica…vou continuar procurando uma solução.
+++
O método mail da classe Desktop faz a mesma coisa que o a href="mailto:…
A diferença é que ele deve ser executado em um método, por exemplo de um botão.
URI mailto = new URI("mailto", "voce@seusite.com?subject=Assunto da Mensagem", null);
Desktop.getDesktop().mail(mailto);
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/
Fiz um exemplo que faz o que você está querendo. O código ficaria mais bonito com JDialog e um método para acessar o e-mail separado, mas fica aí um início.
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
panel.add(new JLabel("Clique "));
JLabel link = new JLabel("<html><u>aqui</u>");
link.setForeground(Color.BLUE);
link.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
link.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
try {
URI mailto = new URI("mailto", "voce@seusite.com?subject=Assunto da Mensagem", null);
Desktop.getDesktop().mail(mailto);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
panel.add(link);
panel.add(new JLabel(" para obter suporte"));
JOptionPane.showMessageDialog(this, panel, "e-Mail", JOptionPane.PLAIN_MESSAGE);
Ahh…agora entendi.
Valeu pelo código. Vou fazer assim então.
Obrigado !
+++
Testado, e funcionando perfeitamente.
Muito obrigado novamente.
+++
Olá Eric,
Apenas por curiosidade :
Apesar de não precisar desse recurso, acabei testando a funcionalidade de anexar arquivos, mas não está funcionando.
URI mailto = new URI(
"mailto",
"voce@seusite.com" +
"&subject=Assunto da Mensagem" +
"&body=Corpo da Mensagem" +
"&attach=LOGs.txt",
null);
Nenhuma excessão ocorre, e o arquivo está na mesma pasta onde o programa esta executando ( “System.out.println(System.getProperty(“user.dir”))” ).
Abusando da sua boa-vontade, se fosse possível, poderia ajudar a resolver esse problema ?
Muito obrigado.
+++
Você só se confundiu na sintaxe do mailto:
URI mailto = new URI(
"mailto",
"voce@seusite.com" +
"?subject=Assunto da Mensagem" + // Usar ponto de interrogação
"&body=Corpo da Mensagem" +
"&attach=LOGs.txt",
null);
Na verdade, já estava assim, eu só tentei outras combinações.
Tentei agora novamente e não funcionou.
Estou usando o Outlook.
Valeu…vou continuar catando na Web alguma referencia.
AT+
Entendi. O que eu uso aqui é o Evolution e anexou o arquivo normalmente.
Já tentou especificar o caminho completo do arquivo?
Sim…tentei usar o caminho com barra comum ("/") ou com barra invertida, precedida de escape ("\") mas não funciona.
Para simplificar, coloquei no C:\TEMP.
Estou achando que deve haver alguma configuração segurança/proteção do Windows que talvez bloqueie isto…é provável ?
+++
Não sei não. Se não me engano o Outlook bloqueava o download de anexos de certos tipos de arquivos, mas nunca ouvi sobre nem chegar a anexar.
Pra ter certeza, pode escrever um arquivo html com este link e fazer o teste.
Eric,
Encontrei esse programa na WEB, testei, e apesar de também instanciar uma nova mensagem no Outlook, também não anexa arquivos na mensagem.
http://stackoverflow.com/questions/81862/how-do-i-send-an-email-attachment-using-the-designated-client-programmatically-f
[code]import java.awt.Desktop;
import java.io.File;
import java.net.URI;
public class TestMail {
public static void main(String[] args) {
try {
Runtime.getRuntime().exec(
new String[] {"rundll32", "url.dll,FileProtocolHandler",
"mailto:a@a.de?subject=someSubject&cc=a@a.de&bcc=a@a.de&body=someBodyText&Attach=c:\test\test.doc"}, null
);
} catch (Exception e) {
e.printStackTrace();
}
}
}[/code]
Pra mim, isso reforça a tese de que há algum problema local, mas não tenho como confirmar.
( Me certifiquei de colocar o arquivo na devida pasta sugerida no programa acima )
+++