English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring-фреймворк предоставляет множество полезных интерфейсов и классов для отправки и получения почты.
org.springframework.mail Этот пакет является корневым пакетом для поддержки почты в Spring-фреймворке.
В Spring框架 поддерживаются следующие интерфейсы и классы Java для отправки почты:
Интерфейс MailSender: Это корневой интерфейс. Он предоставляет базовые функции для отправки простых писем. интерфейс JavaMailSender: Это подинтерфейс MailSender. Он поддерживает MIME-сообщения. Он主要用于 MimeMessageHelper вместе с классом класс MimeMessage и вложения и т.д. Рекомендуется использовать в Spring框架 MimeMessagePreparator Механизм для использования этого интерфейса. Класс JavaMailSenderImpl: Он предоставляет реализацию интерфейса JavaMailSender. Он поддерживает JavaMail MimeMessages и Spring SimpleMailMessages. Класс SimpleMailMessage: Используется для создания простых писем, включая от, к, копия, тема и текст письма. Интерфейс MimeMessagePreparator: Это回调 интерфейс для подготовки JavaMail MIME-сообщений. Класс MimeMessageHelper: Это помощник класса для создания MIME-сообщений. Он поддерживает встроенные элементы, такие как изображения, типичные вложения писем и текст HTML.
Используйте два класса Spring для почты:
SimpleMailMessage Для создания сообщений. JavaMailSenderImpl Для отправки сообщений.
Вам нужно создать следующие файлы, чтобы отправлять письма через Spring фреймворк.
MailMail.java applicationContext.xml Test.java Для выполнения этого примера вам нужно загрузить файлы mail.jar и activation.jar.
Скачайте mail.jar и Activation.jar или перейдите на веб-сайт Oracle, чтобы загрузить последнюю версию.
1)MailMail.java
Это простая класс, который определяет атрибут mailSender. В време выполнения объект MailSender будет предоставлен этому атрибуту.
В методе sendMail() мы создаем экземпляр класса SimpleMailMessage и храним информацию (например, от, до, тема и сообщение) в этом объекте.
Здесь используется метод send() интерфейса MailSender для отправки простого письма.
package com.w3codebox; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; public class MailMail{ private MailSender mailSender; public void setMailSender(MailSender mailSender) { this.mailSender = mailSender; } public void sendMail(String from, String to, String subject, String msg) { //создание сообщения SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(msg); //отправка сообщения mailSender.send(message); } }
2)applicationContext.xml
В этом xml-файле мы создали bean для класса JavaMailSenderImpl. Нам нужно определить значения следующих свойств:
Хост Имя пользователя Пароль javaMailProperties
Мы также будем использовать атрибут mailSender для создания bean класса MailMail. Теперь, в атрибуте mailSender класса MailMail будет установлен экземпляр класса JavaMailSenderImpl.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="smtp.gmail.com" /> <property name="username" value="[email protected]" /> <property name="password" value="yourgmailpassword" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.socketFactory.port">465</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> <prop key="mail.smtp.port">465</prop> </props> </property> </bean> <bean id="mailMail" class="com.w3codebox.MailMail"> <property name="mailSender" ref="mailSender" /> </bean> </beans>
3) Test.java
Этот класс получает bean mailMail из файла applicationContext.xml и вызывает метод sendMail класса MailMail.
package com.w3codebox; import org.springframework.beans.factory.*; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.*; public class Test { public static void main(String[] args) { Resource r=new ClassPathResource("applicationContext.xml"); BeanFactory b=new XmlBeanFactory(r); MailMail m=(MailMail)b.getBean("mailMail"); String sender="[email protected]";//введите здесь ваш gmail идентификатор String receiver="[email protected]";//введите здесь идентификатор получателя m.sendMail(sender,receiver,"hi","welcome"); System.out.println("success"); } }
Загрузка jar файла spring для core и Java почты Загрузите библиотеки mail.jar и activation.jar Измените атрибуты пользователя и пароля в файле applicationContext.xml, а также укажите ваш идентификатор gmail и пароль. Измените идентификатор отправителя gmail и идентификатор получателя почты в файле Test.java. Компилируйте и запускайте класс Test
Если у вас есть свой сайт, вы можете использовать почтовый сервер. Файлы MailMail.java и Test будут одинаковыми. Вам нужно только изменить идентификатор отправителя электронной почты в файле Test.java. В файле applicationContext.xml необходимо произвести некоторые изменения.
В файле applicationContext.xml мы используем:
mail.unitedsquaad.com в качестве имени хоста. Измените его. [email protected] в качестве имени пользователя. Измените его. xxxxx в качестве пароля. Измените его.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="mail.unitedsquaad.com" /> <property name="username" value="[email protected]" /> <property name="password" value="xxxxx" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> </props> </property> </bean> <bean id="mailMail" class="MailMail"> <property name="mailSender" ref="mailSender" /> </bean> </beans>
Вы можете использовать класс SimpleMailMessage для отправки сообщения нескольким получателям. Класс SimpleMailMessage позволяет setTo(String [] получатели)Метод используется для отправки сообщения нескольким получателям. Давайте посмотрим на простой код.
.... public void sendMail(String from, String[] to, String subject, String msg) { //создание сообщения SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(to); //передача массива получателей message.setSubject(subject); message.setText(msg); //отправка сообщения mailSender.send(message); } ...
Мы можем использовать интерфейс MimeMessagePreparator для отправки mime-сообщений. У него есть метод prepare(MimeMessage message).
Давайте посмотрим на простой код для отправки mime-сообщений.
import javax.mail.Message; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessagePreparator; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void sendMail(final String from, final String to, final String subject, final String msg) { MimeMessagePreparator messagePreparator = new MimeMessagePreparator() { public void prepare(MimeMessage mimeMessage) throws Exception { mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); mimeMessage.setFrom(new InternetAddress(from)); mimeMessage.setSubject(subject); mimeMessage.setText(msg); } }; mailSender.send(messagePreparator); } }
Файлы applicationContext.xml и Test.java такие же, как указано выше.
Мы можем отправлять mime-сообщения с приложениями с помощью класса MimeMessageHelper в Spring. Рекомендуется использовать MimeMessagePreparator.
Давайте посмотрим на простой код для отправки mime-сообщения с приложением (изображением).
import java.io.File; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; public class MailMail{ private JavaMailSender mailSender; public void setMailSender(JavaMailSender mailSender) { this.mailSender = mailSender; } public void sendMail(final String from, final String to, final String subject, final String msg) { try{ MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(to); helper.setSubject(subject); helper.setText(msg); // приложить файл FileSystemResource file = new FileSystemResource(new File("c:/rr.jpg")); helper.addAttachment("mybrothermage.jpg", file); // изображение будет отправлено под этим именем mailSender.send(message); catch(MessagingException e){e.printStackTrace();} } }
Файлы applicationContext.xml и Test.java такие же, как указано выше.