================ 封装邮件发送器类 ================ 在cn.tedu.springmail包中创建邮件实体类: // 邮件实体类 public class Mail { private String host; // SMTP服务器地址 private int port; // SMTP服务器端口 private boolean auth; // 是否需要身份认证 private String username; // 用户名 private String password; // 密码(第三方授权码) private String from; // 发件人 private List recipients; // 收件人 private Date date; // 时间 private String subject; // 主题 private String text; // 正文 private List attachments; // 附件 public Mail(String host, int port, boolean auth, String username, String password, String from, List recipients, Date date, String subject, String text) { this.host = host; this.port = port; this.auth = auth; this.username = username; this.password = password; this.from = from; this.recipients = recipients; this.date = date; this.subject = subject; this.text = text; } public Mail(String host, int port, boolean auth, String username, String password, String from, List recipients, Date date, String subject, String text, List attachments) { this.host = host; this.port = port; this.auth = auth; this.username = username; this.password = password; this.from = from; this.recipients = recipients; this.date = date; this.subject = subject; this.text = text; this.attachments = attachments; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public boolean isAuth() { return auth; } public void setAuth(boolean auth) { this.auth = auth; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public List getRecipients() { return recipients; } public void setRecipients(List recipients) { this.recipients = recipients; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getText() { return text; } public void setText(String text) { this.text = text; } public List getAttachments() { return attachments; } public void setAttachments(List attachments) { this.attachments = attachments; } } 在cn.tedu.springmail包中创建邮件发送器类: // 邮件发送器类 public class MailSender { private Mail mail; // 邮件实体 public MailSender(Mail mail) { this.mail = mail; } // 发送邮件 public void send() { // 创建包含邮箱服务器配置的属性对象 Properties properties = new Properties(); properties.put("mail.smtp.host", mail.getHost()); // SMTP服务器地址 properties.put("mail.smtp.port", mail.getPort()); // SMTP服务器端口 properties.put("mail.smtp.auth", mail.isAuth()); // 是否需要身份认证 // 创建包含属性对象的会话对象 Session session = Session.getInstance( properties, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( mail.getUsername(), mail.getPassword()); } }); session.setDebug(true); try { // 创建包含邮件内容的邮件对象 Message message = createMessage(session); // 发送邮件 Transport.send(message); } catch (MessagingException | UnsupportedEncodingException exception) { exception.printStackTrace(); } } // 创建包含邮件内容的邮件对象 private Message createMessage(Session session) throws MessagingException, UnsupportedEncodingException { // 创建邮件对象 MimeMessage message = new MimeMessage(session); message.setFrom(mail.getFrom()); // 发件人 if (mail.getRecipients() != null) { Address[] recipients = new Address[ mail.getRecipients().size()]; for (int i = 0; i < mail.getRecipients().size(); ++i) recipients[i] = new InternetAddress( mail.getRecipients().get(i)); message.setRecipients(RecipientType.TO, recipients); // 收件人 } message.setSentDate(mail.getDate()); // 时间 message.setSubject(mail.getSubject()); // 主题 MimeMultipart mp = new MimeMultipart(); // 容器 MimeBodyPart text = new MimeBodyPart(); // 正文 text.setContent(mail.getText(), "text/html;charset=utf-8"); mp.addBodyPart(text); // 将正文加入容器 if (mail.getAttachments() != null) for (String filepath : mail.getAttachments()) { File file = new File(filepath); if (file.exists()) { MimeBodyPart attachment = new MimeBodyPart(); // 附件 DataSource ds = new FileDataSource(file); DataHandler dh = new DataHandler(ds); attachment.setDataHandler(dh); attachment.setFileName( MimeUtility.encodeText(dh.getName())); mp.addBodyPart(attachment); // 将附件加入容器 mp.setSubType("mixed"); // 含附件的邮件为混合类型 } } message.setContent(mp); // 内容 // 返回邮件对象 return message; } } 在cn.tedu.springmail包中创建邮件发送器测试类: // 邮件发送器测试类 public class MailSenderTest { // 测试:发送普通文本邮件 @Test public void testSendPlainTextMail() { List recipients = new ArrayList<>(); recipients.add("johnmin740523@163.com"); recipients.add("johnmin74@hotmail.com"); Mail mail = new Mail( "smtp.163.com", 25, true, "johnmin740523", "QRPYPLKSXOCPPBBN", "johnmin740523@163.com", recipients, new Date(), "普通文本邮件", "这是一封普通文本邮件"); MailSender mailSender = new MailSender(mail); mailSender.send(); } // 测试:发送HTML格式邮件 @Test public void testSendHTMLMail() { List recipients = new ArrayList<>(); recipients.add("johnmin740523@163.com"); recipients.add("johnmin74@hotmail.com"); Mail mail = new Mail( "smtp.163.com", 25, true, "johnmin740523", "QRPYPLKSXOCPPBBN", "johnmin740523@163.com", recipients, new Date(), "HTML格式邮件", "" + "这是一封HTML格式邮件"); MailSender mailSender = new MailSender(mail); mailSender.send(); } // 测试:发送带附件的邮件 @Test public void testSendAttachmentsMail() { List recipients = new ArrayList<>(); recipients.add("johnmin740523@163.com"); recipients.add("johnmin74@hotmail.com"); List attachments = new ArrayList<>(); attachments.add( "C:\\Users\\Administrator\\Work\\34_研发课时\\肖旭伟_研发统计表.xlsx"); attachments.add( "C:\\Users\\Administrator\\Work\\31_智库\\photo.jpg"); Mail mail = new Mail( "smtp.163.com", 25, true, "johnmin740523", "QRPYPLKSXOCPPBBN", "johnmin740523@163.com", recipients, new Date(), "带附件的邮件", "这是一封带附件的邮件", attachments); MailSender mailSender = new MailSender(mail); mailSender.send(); } } 运行,登录所有收件邮箱查看。