package mail; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail.Message.RecipientType; import javax.mail.internet.*; import java.util.Date; import java.util.Properties; /** * @author TH */ public class SendMail { private Session session = null; private Transport transport = null; /*** * 连接SMTP服务器 * @param userAuth * @param keyword * @throws MessagingException * 返回SMTPSession */ public Session connectSMTP(UserAuthenticator userAuth, String keyword) throws MessagingException { //获取服务 Properties props = MailUtil.getProps(userAuth.getMailAddr(), keyword); //创建服务环境 if (userAuth.getMailAddr().split("@")[1].startsWith("163")) { session = Session.getDefaultInstance(props, userAuth); } else { session = Session.getInstance(props, userAuth); } //调试 session.setDebug(true); //发送 transport = session.getTransport(); //连接SMTP服务器 transport.connect(userAuth.getMailAddr(), userAuth.getMailPass()); return session; } public void close() throws MessagingException { transport.close(); } /** * 写邮件主体 返回邮件 * * @param session * @param userAuth * @param mail * @param mailAddr * @param filePath * @return * @throws Exception */ public Message createMessage(Session session, UserAuthenticator userAuth, Mail mail, MailAddr mailAddr, String filePath) throws Exception { Message msg = new MimeMessage(session);//创建邮件对象 msg.setFrom(new InternetAddress(MimeUtility.encodeText(mail.getSender()) + "<" + userAuth.getMailAddr() + ">"));//可随便取的发件人名字 msg.setSubject(mail.getSubject());//标题 msg.setSentDate(new Date());//设置发送时间 //收件人 if (MailUtil.isNotNull(mailAddr.getReveiceAddr())) { msg.setRecipients(RecipientType.TO, InternetAddress.parse(mailAddr.getReveiceAddr())); } //抄送人 if (MailUtil.isNotNull(mailAddr.getSereveicerAddr())) { msg.setRecipients(RecipientType.CC, InternetAddress.parse(mailAddr.getSereveicerAddr())); } //暗送人 if (MailUtil.isNotNull(mailAddr.getAnreveicerAddr())) { msg.setRecipients(RecipientType.BCC, InternetAddress.parse(mailAddr.getAnreveicerAddr())); } // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件 Multipart multipart = new MimeMultipart(); // 添加邮件正文 if (MailUtil.isNotNull(mail.getContent())) { MimeBodyPart contentBodyPart = new MimeBodyPart(); contentBodyPart.setContent(mail.getContent(), "text/html;charset=UTF-8"); multipart.addBodyPart(contentBodyPart); } //添加附件 if (MailUtil.isNotNull(filePath)) { MimeBodyPart attachmentBodyPart = new MimeBodyPart(); // 根据附件路径获取文件, FileDataSource dataSource = new FileDataSource(filePath); attachmentBodyPart.setDataHandler(new DataHandler(dataSource)); attachmentBodyPart.setFileName(MimeUtility.encodeWord(dataSource.getFile().getName())); multipart.addBodyPart(attachmentBodyPart); } // 邮件的内容 msg.setContent(multipart); return msg; } /** * 综上 发邮件 * * @param userAuth * @param mail * @param mailAddr * @param filePath * @return */ public boolean sendMails(Session session, UserAuthenticator userAuth, Mail mail, MailAddr mailAddr, String filePath) { try { //写邮件 Message msg = createMessage(session, userAuth, mail, mailAddr, filePath); //发送 transport.send(msg); if (transport != null) { transport.close(); } } catch (Exception e) { e.printStackTrace(); return false; } return true; } }
最近下载更多
annazhang LV29
2023年4月8日
crosa_Don LV18
2023年2月8日
duanzhouyang LV10
2021年1月4日
1355862436 LV9
2020年10月15日
数据库1 LV12
2020年7月30日
qiu臻至慕青 LV1
2020年6月22日
zhoumeng1 LV12
2020年5月20日
lzy6312 LV14
2020年5月15日
1529860026 LV24
2020年4月15日
周大福 LV12
2020年2月27日