📅  最后修改于: 2020-12-04 08:58:01             🧑  作者: Mango
Spring框架提供了许多用于发送和接收邮件的有用接口和类。
org.springframework.mail软件包是在Spring框架中提供邮件支持的根软件包。
Spring框架中Java邮件支持的接口和类如下:
在此示例中,我们使用两个spring邮件类:
您需要创建以下文件以通过Spring框架发送电子邮件。
下载mail.jar和activation.jar或访问Oracle站点以下载最新版本。
这是定义mailSender属性的简单类。 MailSender对象将在运行时提供给此属性。
在sendMail()方法中,我们将创建SimpleMailMessage的实例,并将信息(例如,从,到,主题和消息)存储到该对象中。
MailSender接口的send()方法用于发送简单邮件。
package com.javatpoint;
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);
}
}
在这个xml文件中,我们为JavaMailSenderImpl类创建一个bean。我们需要定义以下属性的值:
我们还将使用mailSender属性为MailMail类创建bean。现在,将在MailMail类的mailSender属性中设置JavaMailSenderImpl类的实例。
true
465
javax.net.ssl.SSLSocketFactory
465
此类从applicationContext.xml文件获取mailMail的bean,并调用MailMail类的sendMail方法。
package com.javatpoint;
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");
}
}
如果您有自己的站点,则可以使用邮件服务器。 MailMail.java和Test类将相同。您只需要在Test.java文件中更改发件人电子邮件ID。 applicationContext.xml文件中需要进行一些更改。
在applicationContext.xml文件中,我们正在使用:
true
您可以借助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);
}
...
我们可以借助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类发送带有附件的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 name
mailSender.send(message);
}catch(MessagingException e){e.printStackTrace();}
}
}
applicationContext.xml和Test.java文件与上面给出的相同。