Java實現發送郵件功能
阿新 • • 發佈:2018-11-15
word 標題 ssi bject ace mail 使用 string int
代碼:
import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeUtility; import org.apache.commons.lang3.StringUtils; public class EmailUtil { /** * 發送郵件 * @param to 接收郵件郵箱號 * @param cc 抄送郵件郵箱號 * @param subject 郵件標題 * @param content 郵件內容 * @return */ public boolean sendEmail(String to, String cc, String subject, String content) { if (StringUtils.isEmpty(to)) { return false; } EmailConfig config = createEmailConfig(to, cc); try { return send(config, subject, content); } catch (Exception e) { e.printStackTrace(); return false; } } private static EmailConfig createEmailConfig(String to, String cc) { EmailConfig config = new EmailConfig(); config.setHost("發送郵件服務器"); config.setPort("服務器發送端口"); config.setEmail("系統使用郵箱號"); config.setUserName("系統發送郵件用戶名"); config.setPassword("系統發送郵件所用郵箱密碼"); config.setToEmails("接收郵件郵箱號"); config.setCcEmails("抄送郵件郵箱號"); return config; } private static boolean send(EmailConfig config, String subject, String content) { Session session = EmailUtil.creatSession(config); try { MimeMessage message = new MimeMessage(session); // 設置郵件頭及編碼格式 subject = MimeUtility.encodeWord(subject, "UTF-8", "Q"); message.setSubject(subject); // 郵件署名 message.setFrom(new InternetAddress(config.getEmail(), config.getUserName())); // 消息接收者(收件地址) if (StringUtils.isNotBlank(config.getToEmails())) { String[] emails = config.getToEmails().split(","); InternetAddress[] addresses = new InternetAddress[emails.length]; for (int i = 0; i < emails.length; i++) { addresses[i] = new InternetAddress(emails[i]); } message.addRecipients(Message.RecipientType.TO, addresses); } // 消息抄送者(收件地址) if (StringUtils.isNotBlank(config.getCcEmails())) { String[] emails = config.getCcEmails().split(","); InternetAddress[] addresses = new InternetAddress[emails.length]; for (int i = 0; i < emails.length; i++) { addresses[i] = new InternetAddress(emails[i]); } message.addRecipients(Message.RecipientType.CC, addresses); } message.saveChanges(); // 設置郵件內容及編碼格式 // 後一個參數可以不指定編碼,如"text/plain",但是將不能顯示中文字符 message.setContent(content, "text/plain;charset=UTF-8"); // 發送 Transport.send(message); } catch (Exception e) { e.printStackTrace(); return false; } return true; } private static Session creatSession(EmailConfig config) { Properties props = new Properties(); props.setProperty("mail.transport.protocol", "SMTP"); props.setProperty("mail.smtp.host", config.getHost()); props.setProperty("mail.smtp.port", config.getPort()); props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.smtp.ssl.enable", "true"); props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.socketFactory.port", config.getPort()); props.setProperty("mail.smtp.connectiontimeout", "5000"); Session session = Session.getInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { // 登錄用戶名密碼 return new PasswordAuthentication(config.getEmail(), config.getPassword()); } }); // session.setDebug(true); return session; } }
Java實現發送郵件功能