2010-01-19 33 views
15

Estoy tratando de enviar un correo electrónico con archivos adjuntos y encontré que la API de java es irritantemente insuficiente.Alternativas a la API de Java Mail

Existen solo dos implementaciones de javax.activation.DataHandler que me obligan a crear un archivo local para enviar un archivo adjunto. Puede ser que tenga que escribir mi propia implementación de DataHandler, pero no quiero hacerlo en este momento.

gracias de antemano!

Addy

EDIT: Me refería javax.activation.DataSource no javax.activation.DataHandler

+0

¿Puede implementarlo usted mismo, tal vez? Encontré que Java Mail no es suficiente. http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol – Pindatjuh

Respuesta

9

Spring proporciona un partial wrapper around the JavaMail API , por lo que es un poco más fácil de tragar.

Por ejemplo, la clase MimeMessageHelper le permite agregar archivos adjuntos utilizando varias interfaces, including from a general InputStream source.

La mecánica subyacente de JavaMail es muy completa y robusta, solo la API es basura. Esto aborda esa preocupación, en gran medida.

+0

Sí, eso es casi cerca de casa, si no te importa el valor de los frascos de MB. !! – anilit99

+2

En Spring 3, el material de correo está en el JAR de soporte de contexto que, junto con sus dependencias, será relativamente pequeño (ciertamente no MB) – skaffman

1

¿Ha intentado apache commons para esta tarea?
Tiene MultiPartEmail que tiene varios métodos attach sobrecargados.

+0

¡Gracias por eso! ¡Pero incluso esta Clase no tomará una Cadena como entrada y la enviará como un archivo adjunto! Tiene que ser desde un archivo o desde un URI. – anilit99

1

Escribir un DataSource personalizado es bastante fácil (arrojé uno para una de nuestras aplicaciones hace un año, y tomó menos de una hora). Si ese es el único problema que tiene con JavaMail, le sugiero que lo intente.

Dicho esto, acepto que JavaMail es definitivamente demasiado complejo para los casos de uso más comunes.