Enviar objeto por e-mail

8 respostas
velo

Imaginemos uma classe bem simples:

public class Dados implements Serializable{ String nome = "marvin"; String nick = "velo"; }

Eu estou tentando enviar um new Dados por e-mail, sendo, q vou recupera-los posteriormente com um aplicativo em java para le-los, imaginem uma conexão via socket “offline”.

A coisa pegou quando eu tentei colocar o meu objeto quadrado (Dados) no buraco redondo (DataHandler).

Todos os exemplos q eu encontrei ensinam a anexar arquivos, no caso objetos do tipo File

File f = new File("c:/CONFIG.SYS");
mbp.setDataHandler(new DataHandler(new FileDataSource(f)));

Se alguem tiver uma ideia de como se fazer isso…

VELO

PS: Eu fiz salvando o objeto serializado no disco e li ele usando o File, mas eu queria uma solução menos braçal.

8 Respostas

danieldestro

Vês e o seu amigo pode receber um InputStream ao invés de um file. Caso positivo, você pode serialziar o seu objeto para um ByteArrayOutputStream, transformar em um ByteArrayInputStream e passar esse InputStream.

velo
<blockquote>DataHandler(DataSource ds)

Create a DataHandler instance referencing the specified DataSource.

DataHandler(Object obj, String mimeType)

Create a DataHandler instance representing an object of this MIME type.

DataHandler(URL url)

Create a DataHandler instance referencing a URL.</blockquote>

Ele ateh aceita Object… mas tem esse MIME q sei não o que que é, ateh coloquei umas coisas (xutes), mas soh lança exception…

VELO

danieldestro

Não sei, mas tente este MIME: application/octet-stream

É um chute esdrúxulo… mas o melhor seria usar o ByteArray[Input][Output]Stream.

velo

ixi, lançou exception de tres coes diferentes 8)

<blockquote>javax.mail.MessagingException: IOException while sending message;

nested exception is:

javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/octet-stream

at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:566)

at javax.mail.Transport.send0(Transport.java:151)

at javax.mail.Transport.send(Transport.java:80)

at email.cafeh.MailManager.send(MailManager.java:108)

at email.cafeh.MailManager.send(MailManager.java:120)

at email.cafeh.MailServer.main(MailServer.java:125)

javax.mail.MessagingException: IOException while sending message;

nested exception is:

javax.activation.UnsupportedDataTypeException: no object DCH for MIME type application/octet-stream

at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:566)

at javax.mail.Transport.send0(Transport.java:151)

at javax.mail.Transport.send(Transport.java:80)

at email.cafeh.MailManager.send(MailManager.java:108)

at email.cafeh.MailManager.send(MailManager.java:120)

at email.cafeh.MailServer.main(MailServer.java:125)</blockquote>

Eu tentei pegar o objeto DataHandler e dar um getMime, mas num tem esse metodo :frowning:

cv1

O mime-type pra arquivos anexados eh application/octet-stream, mesmo, como o Daniel disse. Mesmo assim, voce ainda vai ter que usar serializacao. Se voce nao quiser se matar de tentar, use text/xml e boa diversao com o http://xstream.codehaus.org :wink:

velo

Uhm, interessante, jah toh fuçando no Xstream…

Mas aquela pergunta bem tosca, o que eu faço?

Escrevo no corpo do e-mail esse XML todo?

VELO

velo

Como anexo…

Darm pra min…

Agora entendi o XStream consegui anexar numa boa, esquece as perguntas e obrigado pela ajuda pessoal.

velo

Mudando um pouco, mas sem mudar muito, alguem jah usou o javamail com o gmail…

http://gmail.google.com/support/bin/answer.py?answer=13287

Preciso ativar o SSL e usar uma porta que não tem nada de convencional, 465 ou 587.

VELO

Criado 4 de janeiro de 2005
Ultima resposta 4 de jan. de 2005
Respostas 8
Participantes 3