Java.javax郵件傳送
阿新 • • 發佈:2018-12-06
java自帶的擴充套件包javax實現郵件傳送
public class EmailEntity { /** * 郵箱伺服器ip */ private String mailServerHost; /** * 郵箱伺服器埠 */ private String mailServerPort; /** * 郵件傳送者郵箱地址 */ private String fromAddress; /** * 郵件傳送者郵箱使用者名稱 */ private String username; /** * 郵件傳送者郵箱密碼 */ private String passwd; /** * 收件人 */ private String[] toAddress; /** * 抄送人 */ private String[] cc; /** * 密送人 */ private String[] bcc; /** * 是否認證郵件傳送者身份 */ private boolean validate; /** * 郵件主題 */ private String subject; /** * 郵件內容 */ private String content; /** * 郵件附件 */ private File[] files; public Properties getProperties(){ Properties properties = new Properties(); properties.put("mail.smtp.host", this.mailServerHost); properties.put("mail.smtp.port", this.mailServerPort); properties.put("mail.smtp.auth", this.validate ? "true":"false"); properties.put("mail.smtp.sendpartial", "true"); /** * 開啟tls properties.put("mail.smtp.ssl.checkserveridentity", "false"); //新增信任的伺服器地址,多個地址之間用空格分開 properties.put("mail.smtp.ssl.trust","0.0.0.0"); properties.put("mail.smtp.starttls.enable", tlsEnabled); */ return properties; } public String getMailServerHost() { return mailServerHost; } public void setMailServerHost(String mailServerHost) { this.mailServerHost = mailServerHost; } public String getMailServerPort() { return mailServerPort; } public void setMailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } public String[] getToAddress() { return toAddress; } public void setToAddress(String[] toAddress) { this.toAddress = toAddress; } public String[] getCc() { return cc; } public void setCc(String[] cc) { this.cc = cc; } public String[] getBcc() { return bcc; } public void setBcc(String[] bcc) { this.bcc = bcc; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public File[] getFiles() { return files; } public void setFiles(File[] files) { this.files = files; } }
public class EmailSender { private static Logger logger = LoggerFactory.getLogger(uyun.bird.notify.core.sender.email.MailSender.class); public boolean sendMail(EmailEntity emailEntity){ IdentityAuthenticator authenticator = null; if (emailEntity.isValidate()) { authenticator = new IdentityAuthenticator(emailEntity.getUsername(), emailEntity.getPasswd()); } Session sendMailSession = Session.getInstance(emailEntity.getProperties(), authenticator); try { Message mailMessage = new MimeMessage(sendMailSession); // 建立郵件傳送者地址 mailMessage.setFrom(new InternetAddress(emailEntity.getFromAddress())); // 收件人 if (emailEntity.getToAddress() != null && emailEntity.getToAddress().length > 0) { for (String to : emailEntity.getToAddress()) { if (!StringUtils.isBlank(to)) { mailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); } } } // 抄送人 if (emailEntity.getCc() != null && emailEntity.getCc().length > 0) { for (String cc : emailEntity.getCc()) { if (!StringUtils.isBlank(cc)) { mailMessage.addRecipient(Message.RecipientType.CC, new InternetAddress(cc)); } } } // 密送人 if (emailEntity.getBcc() != null && emailEntity.getBcc().length > 0) { for (String bcc : emailEntity.getBcc()) { if (!StringUtils.isBlank(bcc)) { mailMessage.addRecipient(Message.RecipientType.BCC, new InternetAddress(bcc)); } } } Multipart mainPart = new MimeMultipart(); File[] files = emailEntity.getFiles(); if (files != null) { MimeBodyPart filePart; FileDataSource filedatasource; for (File file : files) { filePart = new MimeBodyPart(); filedatasource = new FileDataSource(file); filePart.setDataHandler(new DataHandler(filedatasource)); try { filePart.setFileName(MimeUtility.encodeText(filedatasource.getName())); } catch (Exception e) { logger.error(String.format("file not exist", file.getName()), e); } mainPart.addBodyPart(filePart); } } mailMessage.setSubject(emailEntity.getSubject()); mailMessage.setSentDate(new Date()); // 設定郵件內容 BodyPart html = new MimeBodyPart(); html.setContent(emailEntity.getContent(), "text/html; charset=utf-8"); mainPart.addBodyPart(html); mailMessage.setContent(mainPart); // 傳送郵件 Transport.send(mailMessage); return true; } catch (MessagingException e) { logger.error("mail sending fail:", e); throw new Exception("500", e.getMessage()); } } }