- Spring Java邮件教程
- 在Spring发送邮件的示例
org.springframework.mail软件包是在Spring框架中提供邮件支持的根软件包。
Spring Java Mail API Spring框架中Java邮件支持的接口和类如下:
文章图片
- MailSender接口:它是根接口。它提供了用于发送简单邮件的基本功能。
- JavaMailSender接口:它是MailSender的子接口。它支持MIME消息。它通常与MimeMessageHelper类一起使用, 以创建JavaMail MimeMessage及其附件等。spring框架推荐使用MimeMessagePreparator机制来使用此接口。
- JavaMailSenderImpl类:它提供JavaMailSender接口的实现。它支持JavaMail MimeMessages和Spring SimpleMailMessages。
- SimpleMailMessage类:用于创建简单的邮件消息, 包括从, 到, 抄送, 主题和文本消息。
- MimeMessagePreparator接口:它是用于准备JavaMail MIME消息的回调接口。
- MimeMessageHelper类:它是用于创建MIME消息的帮助器类。它支持内联元素, 例如图像, 典型的邮件附件和HTML文本内容。
在此示例中, 我们使用两个spring邮件类:
- 用于创建消息的SimpleMailMessage。
- JavaMailSenderImpl用于发送消息。
- MailMail.java
- applicationContext.xml
- Test.java
1) MailMail.java
这是定义mailSender属性的简单类。 MailSender对象将在运行时提供给此属性。
在sendMail()方法中, 我们将创建SimpleMailMessage的实例并将信息(例如, 从, 到, 主题和消息)存储到该对象中。
MailSender接口的send()方法用于发送简单邮件。
package com.srcmini;
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) {
//creating message
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
message.setSubject(subject);
message.setText(msg);
//sending message
mailSender.send(message);
}
}
2)applicationContext.xml
在这个xml文件中, 我们正在为JavaMailSenderImpl类创建一个bean。我们需要定义以下属性的值:
- 主办
- 用户名
- 密码
- javaMailProperties
<
?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="http://www.srcmini.com/smtp.gmail.com" />
<
property name="username" value="http://www.srcmini.com/yourgmailid@gmail.com" />
<
property name="password" value="http://www.srcmini.com/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.srcmini.MailMail">
<
property name="mailSender" ref="mailSender" />
<
/bean>
<
/beans>
3) Test.java
此类从applicationContext.xml文件获取mailMail的bean, 并调用MailMail类的sendMail方法。
package com.srcmini;
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="sendergmailid@gmail.com";
//write here sender gmail id
String receiver="receiveremailid@gmail.com";
//write here receiver id
m.sendMail(sender, receiver, "hi", "welcome");
System.out.println("success");
}
}
如何运行这个例子
- 加载spring jar文件以获取核心和Java邮件
- 加载mail.jar和activation.jar
- 更改applicationContext.xml文件中的username和password属性, 并指定你的gmail ID和密码。
- 更改Test.java文件中的发件人gmail ID和Receivermail ID。
- 编译并运行测试类
由主机提供商在服务器中在Spring中发送邮件的示例
如果你有自己的站点, 则可以使用邮件服务器。 MailMail.java和Test类将是相同的。你只需要在Test.java文件中更改发件人电子邮件ID。 applicationContext.xml文件中需要进行一些更改。
在applicationContext.xml文件中, 我们正在使用:
- mail.unitedsquaad.com作为主机名。更改。
- 用户名a@unitedsquaad.com。更改。
- xxxxxx作为密码。更改。
<
?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="http://www.srcmini.com/mail.unitedsquaad.com" />
<
property name="username" value="http://www.srcmini.com/a@unitedsquaad.com" />
<
property name="password" value="http://www.srcmini.com/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>
下载此示例(使用myeclipse IDE开发)
向多个收件人发送邮件
你可以借助SimpleMailMessage类将邮件发送到多个收件人。 SimpleMailMessage类的setTo(String [] receivers)方法用于将消息发送到多个接收者。让我们看一下简单的代码。
....
public void sendMail(String from, String[] to, String subject, String msg) {
//creating message
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
//passing array of recipients
message.setSubject(subject);
message.setText(msg);
//sending message
mailSender.send(message);
}
...
Spring MimeMessagePreparator示例
我们可以借助MimeMessagePreparator接口发送mime消息。它有一种方法prepare(MimeMessage消息)。
让我们看一下发送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文件与上面给出的相同。
通过Spring MimeMessageHelper示例发送附件
我们可以在Spring借助MimeMessageHelper类发送带有附件的mime消息。建议比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);
// attach the file
FileSystemResource file = new FileSystemResource(new File("c:/rr.jpg"));
helper.addAttachment("mybrothermage.jpg", file);
//image will be sent by this namemailSender.send(message);
}catch(MessagingException e){e.printStackTrace();
}
}
}
【Spring Java邮件教程入门详解】applicationContext.xml和Test.java文件与上面给出的相同。
推荐阅读
- Spring Xstream示例详解
- Spring和Struts 2集成详细步骤和示例
- Spring Castor用法示例详解
- Spring通过HTTP Invoker进行远程处理示例
- Spring和Struts 2集成的登录详细示例
- Android精通(View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件)
- android greenDao使用
- Android 应用资源
- Android 9 Pie震撼来袭 同步登陆WeTest