Отправка электронной почты через Outlook со слиянием почты с использованием Java

У меня есть набор контактов в моей базе данных. Я хочу, чтобы мое приложение создавало собственный шаблон электронной почты для моих клиентов.

Мой клиент может установить пользовательские заполнители, такие как название компании, адрес:

Например:

Dear <<name>>,

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

Sincerely,
<<sender>>

После того, как шаблон настроен, я могу использовать его в качестве тела для своей электронной почты. Затем получатели извлекаются из базы данных.

Я знаю о пакете java.awt.Desktop, который позволяет мне создать ПОЧТОВЫЙ URI и открыть его с помощью почтового клиента пользователя по умолчанию. Проблема в том, как я могу включить в него слияние почты? Не могли бы вы рассказать мне о существующих библиотеках или решениях для этого?


person jamesv    schedule 30.10.2011    source источник
comment
Сделайте это так же в Swing, как вы могли бы сделать это из приложения AWT, командной строки или сервлета. Или, другими словами, тег swing не имеет отношения к вопросу и был удален.   -  person Andrew Thompson    schedule 30.10.2011


Ответы (2)


Используйте библиотеку JavaMail для отправки почты. Вы найдете множество примеров, если будете искать «пример JavaMail», среди прочего: Отправка электронной почты через пример Gmail SMTP. Что касается заполнителей, я бы просто использовал функцию String.replace.

person Hontvári Levente    schedule 30.10.2011
comment
Я также думал о функции String.replace, но что, если у меня есть несколько получателей? Я хочу, чтобы он был отправлен так, чтобы каждое имя было заменено именем каждого получателя. Я не могу просто открыть его, используя другой экземпляр клиента пользователя по умолчанию для каждого получателя. Кстати, это обязательное условие, чтобы открыть его в почтовом клиенте, поэтому я не могу отправить его через Gmail SMTP. - person jamesv; 01.11.2011
comment
@jamesv Если у вас несколько получателей, отправьте несколько писем. Вам определенно не нужно открывать письмо в почтовом клиенте, чтобы отправить его. Посмотрите на пример JavaMail, который я связал, он не имеет ничего общего с клиентским приложением электронной почты. - person Hontvári Levente; 01.11.2011
comment
Привет, это обязательное условие, чтобы открыть его в почтовом клиенте, так как это то, что хочет мой клиент. Я просто хочу знать, есть ли решения для этого, прежде чем я скажу ему, что это невозможно. - person jamesv; 01.11.2011
comment
@jamesv Я неправильно прочитал твой комментарий. Почтовый URI не может создавать шаблоны (слияние почты). Возможно, вы можете отобразить шаблон в своем приложении Swing и позволить пользователю редактировать его и, наконец, отправить несколько сгенерированных писем с помощью JavaMail. - person Hontvári Levente; 01.11.2011

  1. Вам нужно будет контролировать, как устанавливаются переменные в шаблоне. Я не думаю, что вы можете разобрать произвольную строку и узнать, есть ли в ней переменные. Следовательно, когда пользователь добавляет переменную, убедитесь, что вы вставляете переменную, которую ваша программа будет понимать в теле письма. Это не проблема, но я подумал, что добавлю это для полноты картины.

  2. Вы можете сохранить тело письма как шаблон скорости, убедившись, что переменные, которые вы добавили, соответствуют нашему языку шаблонов скорости. Velocity будет проще, чем string.replace(), если настраиваются сложные шаблоны. Если это просто, то подойдет String.replace(). http://velocity.apache.org/

  3. Затем используйте почтовую библиотеку Java, чтобы отправить ее непосредственно из вашей Java-программы, или запустите почтовый клиент коробки по умолчанию, используя класс Desktop.

ИЗМЕНИТЬ:

Если вы хотите открыть Outlook, вам нужно будет использовать API Desktop.mail(). Вы можете предварительно заполнить поля «Кому», «Копия», «Скрытая копия», «Тема» и «Тело» в окне отправки электронной почты Outlook, создав соответствующий URI и передав его в Desktop.mail().

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

Дополнительную информацию см. здесь: http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

Для нескольких получателей должно работать разделение адресов электронной почты запятыми. Если это не так, попробуйте с точкой с запятой. Outlook использует точку с запятой.

person sethu    schedule 30.10.2011
comment
Привет, это обязательное условие, чтобы открыть его в Outlook или любом почтовом клиенте по умолчанию или, скажем, просто в Outlook. Проблема в том, что у почты несколько получателей; Как я могу отправить его, заменив все заполнители имени именем получателя в одном электронном письме? Другие заполнители могут не быть проблемой. - person jamesv; 01.11.2011