API Javamail использует класс javax.mail.message для представления сообщения. Класс сообщений является абстрактным классом, поэтому нам нужно использовать его подклассы Javax.mail.Internet.MiMemessage Class для создания объекта экземпляра класса сообщений. Если мы создадим простое текстовое сообщение, то класс Mimemessage может удовлетворить наши потребности. Однако, если нам нужно создать сложное электронное письмо, содержащее встроенные ресурсы или вложения, нам нужно использовать такие классы, как Mimemessage, javax.mail.internet.mimebodypart и javax.mail.internet.miMultipart в API Javamail.
1. Mimemessage Class представляет всю электронную почту
2. Класс MimeBodyPart представляет собой сообщение MIME по электронной почте
3. Класс MiMemultIpart представляет собой комбинированное сообщение MIME, состоящее из нескольких сообщений MIME.
Рабочая связь этих трех классов показана на рисунке ниже:
Хотя разработчикам приложений обычно нужно использовать только три основных класса: Mimemessage, Mimebodypart и MiMemultipart при создании контента электронной почты с использованием JavamailApi, также необходимо понять их отношения наследования в классе. На следующем рисунке перечислены отношения наследования и общие методы этих трех классов.
Затем используйте класс javax.mail.internet.mememessage, чтобы создать простое текстовое сообщение.
Import java.util.date; Import java.util.properties; импорт javax.mail.message; импорт javax.mail.session; импорт javax.mail.internet.internetaddress; импорт javax.mail.internet.mimemessage; import java.io.fileOutputStream; args) бросает исключение {string from = "[email protected]"; String to = "[email protected]"; Строка субъекта = "test"; Строка Body = "test !!!"; // Создать сеанс объекта сеанса сеанса = session.getDefaultInstance (new Properties ()); // Создать Mimemessage Encement объект Mimemessage msg = new Mimemessage (Session); // Установить отправитель msg.setfrom (new InternetAddress (от)); // Установить получатель msg.setRecipients (message.recipienttype.to, internetAddress.parse (to)); // Установить дату отправки msg.setsentdate (new Date ()); // Установите предмет электронной почты msg.setsubject (субъект); // Установить тело электронной почты простого текстового контента msg.settext (body); // Сохранить и генерировать окончательный контент электронной почты msg.savechanges (); // Написать содержимое объекта MimeMessage в файл msg.writeto (new FileOutputStream ("c: //test.eml")); }}Мы используем почтовый клиент (используя здесь Foxmail), чтобы открыть файл test.eml под дискором C, и вы можете увидеть следующую информацию, указывая на то, что наша электронная почта была создана успешно.
Вот краткое объяснение некоторых классов, которые появляются выше
1. Класс Mimemessage: приведенное выше представлено, что Mimemessage - это конкретный класс реализации класса сообщений, который используется для создания объекта экземпляра класса сообщений. Здесь конструктор передает объект сеанса в качестве параметра;
2. Класс сеанса: этот объект используется для сбора информации о сетевом соединении между клиентом и почтовым сервером и определения информации о среде, необходимой для определения всей почтовой программы. Эта информация хранится в объекте сеанса как атрибуты объекта сеанса. Объект сеанса использует объект java.util.properties для получения почтового сервера, имени пользователя, информации о паролях и общей информации, которую необходимо использовать все приложение. Поскольку конструктор класса сеанса является частным, мы используем статический метод фабрики getDefaultInstance (), предоставленный классом сеанса для получения объекта сеанса по умолчанию;
3. Класс свойств: этот класс представляет собой набор постоянного свойства, который используется для хранения информации пары значений ключей в качестве параметров для создания объекта сеанса. Здесь пустой набор построен как параметр;
4. Класс InternetAddress: этот класс является подклассом класса адреса абстрактного класса, используемый для создания адреса электронной почты;
5. Класс получателя: этот класс является внутренним классом класса сообщений. Этот класс имеет 3 статических переменных. Для представленного получателя CC представляет отправителя CC (получатель знает отправителя CC), а BCC представляет секретного отправителя отправителя (получатель не знает отправителя отправителя).
Приведенное выше электронное письмо содержит только простой текст. Иногда нам нужно использовать HTML -файлы для обогащения нашего корпуса электронной почты, например, использование HTML -тегов для ввода тела электронной почты и использование HTML -тегов для представления некоторых изображений или звуков в корпус электронной почты. Следующий код создает электронное письмо, содержащее HTML -формат
Import java.util.date; import java.util.properties; импорт javax.mail.message; импорт javax.mail.session; импорт javax.mail.internet.internetaddress; импорт javax.mail.Internet.mimeMessage; import java.fileOutputStream; public Classmes main (string [] args) бросает исключение {string from = "[email protected]"; String to = "[email protected]"; Строка субъекта = "test"; String body = "<h4> добро пожаловать, чтобы прочитать эту электронную почту </h4>"; // Создать сеанс объекта сеанса сеанса = session.getDefaultInstance (new Properties ()); // Создать Mimemessage Encement объект Mimemessage msg = new Mimemessage (Session); // Установить отправитель msg.setfrom (new InternetAddress (от)); // Установить получатель msg.setRecipients (message.recipienttype.to, internetAddress.parse (to)); // Установить дату отправки msg.setsentdate (new Date ()); // Установить почтовый предмет msg.setsubject (субъект); // Установить HTML FORMAT FORMAT BODY MSG.SETCONTENT (Body, "Text/HTML; charset = gb2312"); // Сохранить и генерировать окончательный содержимое почты msg.savechanges (); // Написать содержимое объекта MimeMessage в файл msg.writeto (new FileOutputStream ("c: //test.eml")); }}Мы будем использовать Foxmail для открытия test.eml и следующего дисплея
Разница от предыдущего кода состоит в том, что когда мы устанавливаем содержимое электронной почты, мы используем метод SetContent вместо метода SetText и указываем тип MIME корпуса электронной почты как текст/HTML.
Теперь мы научились создавать электронные письма с тегами HTML, но иногда нам может потребоваться вставить некоторые изображения в электронное письмо, чтобы выразить наше значение более интуитивно. Тогда нам нужно использовать класс MiMemultIpart и класс MimeBodyPart
Импорт java.io.fileOutputStream; импорт java.util.properties; импорт javax.activation.datahandler; импорт javax.activation.filedataSource; импорт javax.mail.message; импорт javax.mail.session; импорт javax.mail.internet.internetdetdresstestestem. javax.mail.internet.mimemessage; import javax.mail.internet.miMultipart; открытый класс PictUreMessage {public static void main (string [] args) бросает исключение {string из = "[email protected]"; // strder sender to = "[email protected]"; // Строка Адреса получателя субъект = "html email"; String body = "<a href = http: //www.cnblogs.com>" + "Добро пожаловать в блог сад </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Session Session = session.getDefaultInstance (new Properties ()); // Создать объект Mimemessage и установить различные поля заголовка сообщений Mimemessage message = new Mimemessage (Session); message.setfrom (new InternetAddress (от)); message.setRecipients (message.recipienttype.to, InternetAddress.parse (to)); message.setsubject (субъект); // Создать объект MiMemultIpart с подтипом «связанный». Mimemultipart multipart = new MiMemultipart ("связанный"); /** Создать объект MimeBodyPart, представляющий тело HTML, и добавьте его в объект MiMemultipart, созданный ранее*/ mimebodypart htmlbodypart = new MimeBodyPart (); htmlbodypart.setContent (body, "text/html; charset = gb2312"); multipart.addbodypart (htmlbodypart); /** Создать объект MimeBodyPart, представляющий содержимое изображения, и добавьте его в объект MiMemultIpart, созданный ранее*/ mimeBodyPart gifBodyPart = new MimeBodyPart (); FileDataSource fds = new FileDataSource ("c: //dog.jpg"); GIFBODYPART.SETFILENAME (fds.getName ()); GifbodyPart.SetDataHandler (новый DataHandler (FDS)); multipart.addbodypart (GifbodyPart); /** Установите объект MiMemultIpart в содержимое всего сообщения, обратите внимание на вызов метода SaveChanges для обновлений*/ message.setContent (multipart); message.savechanges (); // Написать содержимое объекта Mimemessage в файл message.writeto (new FileOutputStream ("c: //picturemessage.eml")); }}Код кажется немного сложным. Вы можете взглянуть на диаграмму отношений вышеупомянутого Mimemessage, MiMemultipart и MimeBodyPart. Это облегчит понимание приведенного выше кода. Мы открываем picturemessage.eml и видим следующую информацию, которая показывает, что мы успешно создали электронное письмо с изображением, и изображение включено в электронное письмо в форме вложения.
Mimemultipart имеет два конструктора.
Public MiMemultipart () Public MiMemultipart (String Subtype)
Первый не является параметрическим, а объект экземпляра по умолчанию имеет смешанный тип MIME. Второй формулирует тип для создания объекта экземпляра класса MiMemultIpart. Существует три широко используемых типа: смешанный, связанный и альтернативный. Комбинированная взаимосвязь этих трех типов в Mime заключается в следующем:
Теперь мы используем комбинированную связь, показанную выше, чтобы создать сообщение с вложением и встроенным ресурсом в теле.
Импорт java.io.fileOutputStream; импорт java.util.properties; импорт javax.activation.datahandler; импорт javax.activation.filedataSource; импорт javax.mail.message; импорт javax.mail.session; импорт javax.mail.internet.internetdetdresstestestem. javax.mail.internet.mimemessage; import javax.mail.internet.miMultipart; открытый класс ComplexMessage {public static void main (string [] args) выбрасывает исключение {session = session.getDefaultInstance (new Properties ()); Mimemessage message = createmessage (session); message.writeto (new FileOutputStream ("c: //complexmessage.eml")); } public static mimemessage createmessage (сеанс сеанса) выбрасывает exection {string from = "[email protected]"; // Строка адреса отправителя по адресу = "[email protected]"; // Строка Адреса получателя субъект = "html email"; // Электронная почта субъекта строки строки = "<a href = http: //www.cnblogs.com>" + "Добро пожаловать в парк блога </a> </br>" + "<img src =/" c: //dog.jpg/ ">"; Mimemessage Message = new Mimemessage (Session); message.setfrom (new InternetAddress (от)); message.setRecipients (message.recipienttype.to, InternetAddress.parse (to)); message.setsubject (субъект); // Создание каждого объекта MimeBodyPart, представляющего тело сообщения и вложение MimeBodyPart ContentPart = createContent (body, "c: //dog.jpg"); // Следующим вложением может быть видео или аудио -mimebodypart atchatpart1 = createattachment ("c: //music.mp3"); Mimebodypart atchatpart2 = createattachment ("c: //video.avi"); // Создать объект MiMemultIpart для сочетания тела сообщений и прикрепления MiMemultipart allMultipart = new MiMemultipart («Mixed»); allmultipart.addbodypart (ContentPart); allmultipart.addbodypart (AttactPart1); allmultipart.addbodypart (AttactPart2); // Установить весь содержимое электронной почты в окончательное объединение MiMemultIpart Object Message.setContent (allMultipart); message.savechanges (); вернуть сообщение; } public static mimebodypart createContent (строковое тело, название строкового файла) выбрасывает исключение { /** Создать объект MiMemultipart, представляющий комбинированное сообщение MIME, и объект MimeBodyPart, которому сохраняется объект MiMemultIpart* / mimeBodyPart ContentPart = new MimeBodyPart (); MiMemultIpart contentMultipart = new MiMemultIpart («связанный»); /** Создать объект MimeBodyPart, чтобы сохранить тело HTML и сохранить его для MiMemultipart*/ mimebodypart htmlbodypart = new MimeBodyPart (); htmlbodypart.setContent (body, "text/html; charset = gb2312"); contentmultipart.addbodypart (htmlbodypart); /** Создать объект MimeBodyPart, чтобы сохранить изображение и сохранить его для MiMemultIpart*/ mimeBodyPart gifBodyPart = new MimeBodyPart (); FileDataSource fds = new FileDataSource (имя файла); GifbodyPart.SetDataHandler (новый DataHandler (FDS)); contentmultipart.addbodypart (GifbodyPart); // Сохранить объект MiMemultIpart в объекте MimeBodyPart contentPart.setContent (ContentMultipart); вернуть ContentPart; } public Static MimeBodyPart CreateAtTachment (String FileName) бросает Exception {// Создать объект MimeBodyPart, который сохраняет вложение, и добавляйте содержимое вложения и соответствующую информацию MimeBodyPart AttachPart = new MimeBodyPart (); FileDataSource fds = new FileDataSource (имя файла); AttachPart.SetDataHandler (New DataHandler (FDS)); AttachPart.SetFilENAME (fds.getName ()); вернуть AttachPart; }}Откройте файл SpextMessage.eml, и вы можете увидеть следующее содержимое:
Теперь мы узнали, как создать простое текстовое электронное письмо, электронное письмо с форматом HTML и электронное письмо со встроенными изображениями и вложениями. Следующая статья представит, как отправить электронные письма Javamail. Начало работы с третьей статьей Отправить электронное письмо
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.