2011-10-30 2 views
0

J'ai un ensemble de contacts dans ma base de données. Je souhaite que mon application génère un modèle d'e-mail personnalisé pour mes clients.Envoyer un e-mail via Outlook avec la fusion de courrier en utilisant Java

Mon client peut définir un des espaces réservés personnalisés tels que le nom de l'entreprise, adresse:

Par exemple:

Dear <<name>>, 

This is to inform you that our <<company name>>, located in <<address>> ... 

Sincerely, 
<<sender>> 

Une fois le modèle est configuré je peux alors utiliser comme un corps à mon email. Les destinataires sont ensuite extraits de la base de données.

Je suis conscient du paquet java.awt.Desktop qui me permet de créer un URI MAIL et de l'ouvrir en utilisant le client de messagerie par défaut de l'utilisateur. Le problème est comment puis-je intégrer la fusion et publipostage dans celui-ci? Pouvez-vous me guider sur les bibliothèques existantes ou des solutions à cela? Utilisez la bibliothèque JavaMail pour envoyer des mails.

+1

Procédez de la même manière dans Swing que vous le feriez à partir d'une application AWT, de la ligne de commande ou d'une servlet. Ou pour le dire autrement, la balise [tag: swing] n'est pas pertinente à la question et a été supprimée. –

Répondre

0

Vous trouverez beaucoup d'exemples si vous recherchez "Exemple JavaMail", entre autres: Sending email via Gmail SMTP example. En ce qui concerne les espaces réservés, j'utiliserais simplement la fonction String.replace.

+0

J'ai aussi pensé à la fonction String.replace mais que se passe-t-il si j'ai plusieurs destinataires? Je veux qu'il soit envoyé pour que chaque nom soit remplacé par le nom de chaque destinataire. Je ne peux pas simplement l'ouvrir en utilisant une autre instance du client par défaut de l'utilisateur pour chaque destinataire. BTW c'est un prérequis pour l'ouvrir dans un client de messagerie, donc je ne peux pas faire cet envoi via Gmail SMTP. – jamesv

+0

@jamesv Si vous avez plusieurs destinataires, envoyez plusieurs emails.Vous n'avez certainement pas besoin d'ouvrir un mail dans un client de messagerie pour l'envoyer. Regardez l'exemple JavaMail que j'ai lié, il n'a rien à voir avec une application client de messagerie. –

+0

Bonjour, c'est un pré-requis pour l'ouvrir dans un client de messagerie car c'est ce que veut mon client. Je veux juste savoir s'il y a des solutions à cela avant que je lui dise que ce n'est pas possible. – jamesv

0
  1. Vous devrez contrôler la configuration des variables du modèle. Je ne pense pas que vous pouvez analyser une chaîne arbitraire et savoir s'il y a des variables dedans. Par conséquent, lorsqu'un utilisateur ajoute une variable, assurez-vous d'insérer une variable que votre programme comprendra dans le corps du message. Ce n'est pas un problème, mais je pense que je vais l'ajouter pour l'exhaustivité.

  2. Vous pouvez enregistrer le corps de l'e-mail en tant que modèle de vélocité, en vous assurant que les variables que vous avez ajoutées à notre langage de modèle de vélocité sont conformes. Velocity serait plus facile que string.replace() s'il y a des templates compliqués en cours de configuration. Si c'est un simple, alors String.replace() ferait l'affaire. Ensuite, utilisez la bibliothèque de messagerie Java pour l'envoyer directement à partir de votre programme Java, ou lancez le client de messagerie par défaut de la boîte en utilisant la classe Desktop.

EDIT:

Si vous souhaitez ouvrir des perspectives, alors vous aurez besoin d'utiliser l'API Desktop.mail(). Vous pouvez pré-remplir les à, cc, bcc, les domaines et le corps dans l'envoi de perspectives fenêtre email en construisant un à Desktop.mail() URI approprié et passer

mailto:[email protected]?SUBJECT=Happy New Year!&BODY=Happy New Year, Duke! 

Jetez un oeil ici pour plus d'informations : http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

Pour plusieurs destinataires, la séparation des adresses électroniques avec des virgules devrait fonctionner. Si ce n'est pas le cas, essayez avec un point-virgule. Outlook utilise le point-virgule.

+0

Salut, c'est une condition préalable pour l'ouvrir dans Outlook ou un client de messagerie par défaut ou simplement dire Outlook. Le problème est si le courrier a plusieurs destinataires; Comment puis-je l'envoyer avec tous les espaces réservés "nom" remplacés par le nom du destinataire dans un seul e-mail? D'autres espaces réservés pourraient ne pas poser de problème. – jamesv

Questions connexes