Mensagem de diálogo não envia e-mail

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 )

+++