java利用commons-email.jar傳送郵件
阿新 • • 發佈:2018-11-06
這幾天寫了一個簡歷網站,因為簡歷下面有個聯絡我的功能,這個功能可以可以向郵箱傳送郵件,所以自己便開始學習部落格開始解決傳送郵件功能。
引入相關jar包
要用commos-email.jar實現傳送郵箱功能需要先匯入三個jar包:
- commos-email.jar
- mail.jar
- activation-1.1.jar
修改郵箱的配置(這裡以163為例)
首先登入你的163郵箱賬號,然後在設定裡選擇POP3/SMTP/IMAP選項
然後將這些服務都開啟
開啟時系統會提醒你先填寫一個授權碼,這個授權碼一定要記住
程式
然後就是程式碼部分的內容了
我的郵件是以HTML的格式釋出的。
MailUtil:
public class MailUtil { public static void sendHtmlEmail(String name,String phone,String Email,String subject,String context){ // 不要使用SimpleEmail,會出現亂碼問題 HtmlEmail email = new HtmlEmail(); // SimpleEmail email = new SimpleEmail(); try { // 這裡是SMTP傳送伺服器的名字:163的如下: email.setHostName(MailConfig.host); email.setSSLOnConnect(true);//設定用ssl協議傳送郵件 System.out.println(MailConfig.port); email.setSmtpPort(MailConfig.port); // 字元編碼集的設定 email.setCharset("gbk"); // 收件人的郵箱 email.addTo(MailConfig.emailTo); // 傳送人的郵箱 email.setFrom(MailConfig.userName,name); // 如果需要認證資訊的話,設定認證:使用者名稱-授權碼。分別為發件人在郵件伺服器上的註冊名稱和設定的授權碼, email.setAuthentication(MailConfig.userName, MailConfig.passWord); email.setSubject(subject); // 要傳送的資訊,由於使用了HtmlEmail,可以在郵件內容中使用HTML標籤 email.setMsg("<h1 style='color:red'>"+subject+"</h1>" +"姓名:"+name+"<br/>" +"電話:"+phone +"<br/>" +"Email:"+Email +"<br/>" +"內容:"+context); // 傳送 email.send(); System.out.println("郵件傳送成功!"); } catch (EmailException e) { e.printStackTrace(); System.out.println("郵件傳送失敗!"); } } }
MailConfig.port
public class MailConfig { private static final String PROPERTIES_DEFAULT = "mailConfig.properties"; public static String host;//用什麼郵件伺服器 public static Integer port;//埠 public static String userName;//使用者名稱,即賬號 public static String passWord;//授權碼,不是登入密碼 public static String emailTo;//收件人 public static String timeout; public static String personal; public static Properties properties; static{ init(); } /** * 初始化 */ private static void init() { properties = new Properties(); try{ InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT); properties.load(inputStream); inputStream.close(); host = properties.getProperty("mailHost"); port = Integer.parseInt(properties.getProperty("mailPort")); userName = properties.getProperty("mailUsername"); passWord = properties.getProperty("mailPassword"); timeout = properties.getProperty("mailTimeout"); emailTo = properties.getProperty("mailTo"); } catch(IOException e){ e.printStackTrace(); } } }
mailConfig.properties
#伺服器
mailHost=smtp.163.com
#埠號
mailPort=465
#郵箱賬號
[email protected]
#郵箱授權碼,不是賬號登入密碼,是你開啟POP3/SMTP/IMAP服務時設定的授權碼
mailPassword=123456789
#時間延遲
mailTimeout=25000
#收件人
[email protected]
這個親測是成功的