測試可用:
有些重複代碼沒有給註釋。類的方法作用自行查看API瞭解,最後附上源碼。
首先使用JavaMail的jar,官網可下載。
公共靜態的常量:
- public final static String MAIL = "@sina.com"; // 郵箱格式
- public final static String SEND_HOST = "smtp.sina.com"; // 郵箱發送服務器
- public final static String ACCEPT_HOST = "pop.sina.com"; // 郵箱服務器
- public final static String SEND_USER = "xxxx"; // 用戶名
- public final static String SEND_PWD = "xxxxx"; // 密碼
- public final static String FROM_MAIL = SEND_USER + "@sina.com";// 發送方郵箱地址
- public final static String TO_MAIL = "[email protected]"; // 接收方郵箱地址
- public final static String CC_MAIL = SEND_USER + MAIL; // 抄送方郵箱地址
- public final static String BCC_MAIl = SEND_USER + MAIL; // 密送方郵箱地址
- public final static String ENCODE = "UTF-8";
- public static Date date = new Date();
使用Java自帶的接口和類發送文本格式郵件
- Properties prop = new Properties();
- prop.setProperty("mail.host", SEND_HOST);
- prop.setProperty("mail.transport.protocol", "smtp");
- prop.setProperty("mail.smtps.ssl.enable", "true");
- // prop.setProperty("mail.smtp.port", "25");
- prop.setProperty("mail.smtp.auth", "true");
- Session session = Session.getInstance(prop); //創建應用會話
- Message message = new MimeMessage(session); //消息摘要,是郵件的主體
- message.setSubject("測試"); //設置主題
- message.setText("你好!"); //郵件內容
- message.setSentDate(new Date()); //發送日期
- message.setFrom(new InternetAddress(FROM_MAIL)); //發送方
- message.addRecipient(Message.RecipientType.TO, new InternetAddress(TO_MAIL)); //接受方
- message.saveChanges(); //保存郵件主體對象內容
- Transport transport = session.getTransport(); //傳輸對象
- transport.connect(SEND_HOST, FROM_MAIL, SEND_PWD); //連接服務器中的郵箱
- transport.sendMessage(message, message.getAllRecipients()); //發送
- transport.close(); //關閉傳輸
- System.out.println("Successfully send mail to all user");
感覺自帶的接口方法比較麻煩,使用spring封裝的javamail,記的導入spring相關包。
使用spring發送文本格式的郵件,代碼如下:
- public static void sendTxtMail() throws MailException {
- JavaMailSenderImpl send = new JavaMailSenderImpl();
- Properties prop = new Properties();
- prop.setProperty("mail.transport.protocol", "smtp");
- prop.setProperty("mail.host", SEND_HOST);
- prop.setProperty("mail.smtps.ssl.enable", "true");
- prop.setProperty("mail.smtp.auth", "true");
- send.setUsername(SEND_USER);
- send.setPassword(SEND_PWD);
- send.setJavaMailProperties(prop);
- SimpleMailMessage msg = new SimpleMailMessage();
- msg.setFrom(FROM_MAIL);
- msg.setTo(TO_MAIL);
- msg.setReplyTo(FROM_MAIL);
- msg.setCc(CC_MAIL);
- msg.setBcc(BCC_MAIl);
- msg.setSentDate(date);
- msg.setSubject("發送的文本格式郵件");
- msg.setText("文本格式 測試成功!");
- send.send(msg);
- System.out.println("Successfully send mail to the user");
使用spring的封裝方法發送Html格式郵件 ,代碼如下:
- // 發送Html格式郵件
- public static void sendHtmlMail() throws Exception {
- JavaMailSenderImpl send = new JavaMailSenderImpl();
- Properties prop = new Properties();
- prop.setProperty("mail.transport.protocol", "smtp");
- prop.setProperty("mail.host", SEND_HOST);
- prop.setProperty("mail.smtps.ssl.enable", "true");
- prop.setProperty("mail.smtp.auth", "true");
- send.setUsername(SEND_USER);
- send.setPassword(SEND_PWD);
- send.setJavaMailProperties(prop);
- MimeMessage msg = send.createMimeMessage();
- MimeMessageHelper helper = new MimeMessageHelper(msg, ENCODE);
- helper.setFrom(FROM_MAIL);
- helper.setTo(TO_MAIL);
- helper.setReplyTo(FROM_MAIL);
- helper.setCc(CC_MAIL);
- helper.setBcc(BCC_MAIl);
- helper.setSentDate(date);
- helper.setSubject("發送的HTML格式郵件");
- String html = "<font size='5' color='red'>HTML格式測試成功!</font>";
- helper.setText(html, true); // 郵件內容,參數true表示是html代碼
- send.send(msg);
- System.out.println("Successfully send mail to the user");
使用spring的封裝方法發送帶內嵌內容的Html格式郵件 ,代碼如下:
- // 發送帶內嵌文件的HTML格式郵件
- public static void sendInlineMail() throws Exception {
- // spring提供的郵件實現類
- JavaMailSenderImpl send = new JavaMailSenderImpl();
- Properties prop = new Properties();
- prop.setProperty("mail.transport.protocol", "smtp"); // 設置郵件發送協議
- prop.setProperty("mail.host", SEND_HOST); // 郵件服務器地址
- prop.setProperty("mail.smtps.ssl.enable", "true"); // 郵件ssl驗證
- prop.setProperty("mail.smtp.auth", "true"); // 郵件服務身份驗證
- send.setUsername(SEND_USER); // 設置用戶名
- send.setPassword(SEND_PWD); // 設置密碼
- send.setJavaMailProperties(prop);
- MimeMessage msg = send.createMimeMessage();
- // 指定HTML編碼,參數true表示爲multipart
- MimeMessageHelper helper = new MimeMessageHelper(msg, true, ENCODE);
- helper.setFrom(FROM_MAIL); // 發送者郵箱
- helper.setTo(TO_MAIL); // 接收者郵箱
- helper.setReplyTo(FROM_MAIL); // 回覆郵箱
- helper.setCc(CC_MAIL); // 抄送郵箱
- helper.setBcc(BCC_MAIl); // 密送郵箱
- helper.setSentDate(date); // 發送日期
- helper.setSubject("發送的帶有內部文件的HTML格式郵件");
- String html = "<font size='5' color='red'>HTML格式測試成功!</font>"
- + "<img src ='cid:demoimg'>"; // cid是一個固定前綴,demoimg是一個資源名稱
- helper.setText(html, true); // 郵件內容,參數true表示是html代碼
- ClassPathResource resource = new ClassPathResource("col.jpg"); // 加載項目路徑下資源
- helper.addInline("demoimg", resource); // 將資源綁定到demoimg上
- send.send(msg); // 發送郵件
- System.out.println("Successfully send mail to the user");
- }
使用spring的封裝方法發送帶附件的郵件 ,代碼如下:
- // 發送帶附件的郵件
- public static void sendAttachmentMail() throws Exception {
- // spring提供的郵件實現類
- JavaMailSenderImpl send = new JavaMailSenderImpl();
- Properties prop = new Properties();
- prop.setProperty("mail.transport.protocol", "smtp"); // 設置郵件發送協議
- prop.setProperty("mail.host", SEND_HOST); // 郵件服務器地址
- prop.setProperty("mail.smtps.ssl.enable", "true"); // 郵件ssl驗證
- prop.setProperty("mail.smtp.auth", "true"); // 郵件服務身份驗證
- send.setUsername(SEND_USER); // 設置用戶名
- send.setPassword(SEND_PWD); // 設置密碼
- send.setJavaMailProperties(prop);
- MimeMessage msg = send.createMimeMessage();
- // 指定HTML編碼,參數true表示爲multipart
- MimeMessageHelper helper = new MimeMessageHelper(msg, true, ENCODE);
- helper.setFrom(FROM_MAIL); // 發送者郵箱
- helper.setTo(TO_MAIL); // 接收者郵箱
- helper.setReplyTo(FROM_MAIL); // 回覆郵箱
- helper.setCc(CC_MAIL); // 抄送郵箱
- helper.setBcc(BCC_MAIl); // 密送郵箱
- helper.setSentDate(date); // 發送日期
- helper.setSubject("發送帶有附件的郵件");
- String html = "<font size='5' color='red'>附件測試成功!</font>";
- helper.setText(html, true); // 郵件內容,參數true表示是html代碼
- String demo = "demo.docx";
- ClassPathResource resource = new ClassPathResource(demo); // 加載項目路徑下資源
- helper.addAttachment(MimeUtility.encodeWord(demo), resource); // 如果文件是中文名,需要轉碼。
- send.send(msg); // 發送郵件
- System.out.println("Successfully send mail to the user");
- }
在測試之前記得將郵箱smtp、pop設置上,否者會報驗證錯誤或連接服務錯誤 即50X系列錯誤。