利用JDNI基於tomcat服務器進行簡單郵件開發
一般流程:
1.配置文件:
在項目的根目錄下的META-INF下創建context.xml,配置如下:
<Context>
<Resource name="mail/session" auth="Container"
type="javax.mail.Session"
mail.smtp.host="smtp.sina.com"
mail.transport.protocol="smtp"
mail.smtp.auth="true"/>
</Context>
在web.xml文件中需要配置:
<resource-ref>
<res-ref-name>mail/session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
這些配置的基本信息,在自己安裝的tomcat的主目錄下的webapps下的docs下的 jndi-resources-howto.html這個文件下有詳細的說明,我這裏就不加解釋了。
2.創建servlet對象:
在創建servlet對象之前,需要把java mail依賴的jar文件,也就是mail.jar加入到tomcat的根目錄下的lib裏面,因爲,在tomcat啓動時就會創建郵件環境對象Session,所以要依賴mail.jar文件。
SendMailServlet.java詳細如下:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//String smtpServer = "smtp.sina.com";
String user = "******@sina.com";//用戶名
String password = "**********";//密碼
String from="********@sina.com";//發件人
String to="**********@qq.com";//收件人
String subject="Html Test";//郵件標題
String body="<a href=http://www.baidu.com>"+"歡迎訪問百度"+"</a></br>";
try {
//利用JDNI創建並初始化session對象
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
Session session = (Session) envCtx.lookup("mail/session");
//創建郵件的MimeMessage對象
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(RecipientType.TO, InternetAddress.parse(to));
message.setSentDate(new Date());
message.setSubject(subject);
message.setText(body);
//保存並生成郵件
message.saveChanges();
Transport transport = session.getTransport();
transport.connect(user, password);
transport.sendMessage(message, message.getRecipients(RecipientType.TO));
//關閉transport對象
transport.close();
response.setContentType("text/html,charset=gbk");
response.getWriter().write("您的郵件發送成功");
} catch (NamingException e) {
e.printStackTrace();
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
通過上面的基本配置,加代碼就可完成web端的郵件開發。有什麼不對的地方,望指正。