1. 程式人生 > >java利用commons-email.jar傳送郵件

java利用commons-email.jar傳送郵件

這幾天寫了一個簡歷網站,因為簡歷下面有個聯絡我的功能,這個功能可以可以向郵箱傳送郵件,所以自己便開始學習部落格開始解決傳送郵件功能。

引入相關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]

這個親測是成功的