在实现javamail之前首先要搭建邮件服务器

James

在进行WEB程序开发的时候需要使用Tomcat服务器,但是Tomcat服务器并不支持邮件的处理操作,所以要想进行邮件的发送,还需要配置一个单独的Java Mail服务器,James 就是一个企业级的邮件服务器,它完全实现了SMTP(Simple Mail Transfer Protocol,简单邮件传输协议) 和POP3(Post Office Protocol 3,邮局协议的第三个版本)以及NNTP (Network News Transport Protocol,网络新闻传输协议)协议。同时,James服务器又是一个邮件应用程序平台。它可以让用户常容易的实现出很强大的邮件应用程序。读者可以使用Apache的James服务器,直接登陆http://james.apache.org/,下载James服务器。
在网上可以直接搜索配置James服务器,有大量的博文可以参考,我在这里就不累赘重复了,有一点值得注意的是:
在配置过程中有打

telnet localhost 

没有反应的需要在控制面板-->程序与功能-->打开或关闭windows功能中 打开Telnet服务即可

JavaMail简介及配置

JavaMail是Java中专门用来处理电子邮件处理的一套规范,使用它可以方便的进行mail的发送、也可以使用JavaMail开发出类似于Microsoft Outlook样的应用程序。

JavaMail核心类:

  1. javax.mail.Session:表示整个邮件的会话,所有的类都要通过session才可以使用;
  2. javax.mail.Message:Message类表示的是邮件传递的内容;
  3. javax.mail.Address:当确定好Session和Message之后,就可以通过Address进行发送地址的指定;
  4. javax.mail. Authenticator:使用此类可以通过用户名和密码保护资源;
  5. javax.mail.Transport:在消息发送的最后一步使用此类,此类的功能是使用指定的语言发送消息;
  6. javax.mail.Store:此类主要是进行信息的读、写等操作,也可以通过此类读取文件夹中的邮件;
  7. javax.mail.Folder:用于对邮件进行分级管理。

实例:发送普通邮件

发送邮件依靠之前配置过的James服务器和JavaMail(JAF)类完成,但是在进行邮件发送时,一定要注意的是,由于现在所有的邮箱用户都保存在了James服务器上,所以一定要首先编写一个可以用于服务器验证用户名和密码的操作类,此类必须继承javax.mail.Authenticator类,而且必须覆写getPasswordAuthentication()方法。
<%@ page contentType="text/html; charset=GBK" language="java" %>
<html>
<head>
<title>发送普通文本格式的E-mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<link href="css/style.css" rel="stylesheet">
<script language="javascript">
function checkform(myform){
for(i=0;i<myform.length;i++){
if(myform.elements[i].value==""){
alert(myform.elements[i].title+"不能为空!");
myform.elements[i].focus();
return false;
}
}
}
</script>
</head>
<body>
<form name="form1" method="post" action="mydeal.jsp" onSubmit="return checkform(form1)">
<table width="588" height="360" border="0" align="center" cellpadding="0" cellspacing="0" background="images/bg.jpg">
<tr>
<td width="60" height="73" background="Images/board_left.gif">&nbsp;</td>
<td width="486" background="Images/board_left.gif">&nbsp;</td>
<td width="46" background="Images/board_left.gif">&nbsp;</td>
</tr>
<tr valign="top">
<td height="247">&nbsp;</td>
<td valign="top"><table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="16%" height="27" align="center">收件人:</td>
<td width="84%" colspan="2" align="left"><input name="to" type="text" id="to" title="收件人" size="60" ></td>
</tr>
<tr>
<td height="27" align="center">发件人:</td>
<td colspan="2" align="left"><input name="from" type="text" id="from" title="发件人" size="60"></td>
</tr>
<tr>
<td height="27" align="center">密&nbsp;&nbsp;码:</td>
<td colspan="2" align="left"><input name="password" type="password" id="password" title="发件人信箱密码" size="60"></td>
</tr>
<tr>
<td height="27" align="center">主&nbsp;&nbsp;题:</td>
<td colspan="2" align="left"><input name="subject" type="text" id="subject" title="邮件主题" size="60"></td>
</tr>
<tr>
<td height="93" align="center">内&nbsp;&nbsp;容:</td>
<td colspan="2" align="left"><textarea name="content" cols="59" rows="7" class="wenbenkuang" id="content" title="邮件内容"></textarea></td>
</tr>
<tr>
<td height="30" align="center">&nbsp;</td>
<td height="40" align="right"><input name="Submit" type="submit" class="btn_bg" value="发送">
&nbsp;
<input name="Submit2" type="reset" class="btn_bg" value="重置">
&nbsp;
<input name="Submit3" type="button" class="btn_bg" onClick="window.close();" value="关闭">
&nbsp;&nbsp;&nbsp;</td>
<td align="left">&nbsp;</td>
</tr>
</table></td>
<td>&nbsp;</td>
</tr>
<tr valign="top">
<td height="40">&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</form>
</body>
</html>

mydeal.jsp

<%@ page contentType="text/html; charset=GBK" language="java"  errorPage="" %>
<%@ page import="java.util.*" %>
<%@ page import ="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="org.apache.commons.mail.*" %>
<%
try{
request.setCharacterEncoding("GBK");
String from=request.getParameter("from");
String to=request.getParameter("to");
String subject=request.getParameter("subject");
String messageText=request.getParameter("content");
String password=request.getParameter("password");
String mailserver="localhost"; //局域网发送邮件时的SMTP服务器
SimpleEmail email = new SimpleEmail();
email.setHostName(mailserver);//设置邮件服务器
email.setAuthentication(from,password);//设置邮箱用户名和密码
email.setFrom(from); //设置发件人地址
email.addTo(to); //设置收件人地址
email.setSubject(subject); //设置主题
email.setSentDate(new Date());//设置发送时间
email.setMsg(messageText); //设置发送的消息
email.send(); //发送邮件
out.println("<script language='javascript'>alert('邮件已发送!');window.location.href='index.jsp';</script>");
}catch(Exception e){
e.printStackTrace();
System.out.println("发送邮件产生的错误:"+e.getMessage());
out.println("<script language='javascript'>alert('邮件发送失败!');window.location.href='index.jsp';</script>");
}
%>

需要导的包:mail.jar

JAVA实用工具--javamail的更多相关文章

  1. 常用的16个Java实用工具类,Java开发人员请收藏!

    在Java中,实用程序类是一个定义一组执行常用功能的方法的类.这篇文章展示了最常用的Java实用程序类及其最常用的方法.类列表及其方法列表都按流行度排序.该数据基于GitHub随机选择的50,000个 ...

  2. 【Java实用工具】——使用oshi获取主机信息

    最近在筹划做一个监控系统.其中就要获取主机信息,其中遇到一些问题.在此做个记录,以便以后查阅. 在该监控系统中,想要做到主机的CPU.内存.磁盘.网络.线程.JVM内存.JVM GC 等维度的监控,J ...

  3. Java效率工具Lombok使用与原理

    Java效率工具Lombok使用与原理 我个人觉得 Lombok是一个优化Java代码以及提升开发效率不错的工具.Lombok 的Github地址为:https://github.com/rzwits ...

  4. Java日期时间实用工具类

    Java日期时间实用工具类 1.Date (java.util.Date)    Date();        以当前时间构造一个Date对象    Date(long);        构造函数   ...

  5. java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源

    实现该方法需要导入一些jar包 可以去一下地址下载: http://pan.baidu.com/s/1hqrJF7m /** * 实用工具类来获取服务器资源 * * get方法传送数据 * * 1.通 ...

  6. java开发工具比较(16个工具修订版)

    1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利 ...

  7. 每位iOS开发人员不容错过的10大实用工具

    内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...

  8. JAVA实用案例之水印开发

    写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...

  9. JAVA实用案例之图片水印开发

    写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...

随机推荐

  1. 【Smali】Smali文件的动态调试

    1.简介 smalidea是一个IntelliJ IDEA/Android Studio smali语言插件,可实现动态调试smali代码.下载地址为:https://github.com/Jesus ...

  2. Spring 注解 hibernate 实体方法 <property name="packagesToScan" value="com.sise.domain"/>

    <property name="annotatedClasses"> <list> <value>com.sise.domain.Admin&l ...

  3. solrj索引操作

    添加索引 Solr添加文档至索引: http://www.cnblogs.com/dennisit/p/3621717.html 删除索引: 每天索引记录有一个唯一标识,索引的删除通过唯一标识操作,如 ...

  4. 【struts2】<package>的配置

    <package>元素可以把逻辑上相关的一组Action.Result.Intercepter等元素封装起来,形成一个独立的模块,package可以继承其他的package,也可以作为父包 ...

  5. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  6. error nr.1045 access denied for user 'root'@'localhost' (using passwd:no)

    在windows上卸载了mysql,再次重新安装的时候运行失败,并报以下错误: 解决办法: 1.服务里面停止Mysql服务. 2.卸载Mysql,删除MySQL的安装目录. 3.此外还要删除以下目录的 ...

  7. Linux引导启动程序 - boot

    主要描述 boot/目录中的三个汇编代码文件,见列表 3-1 所示.正如在前一章中提到的,这三个 文件虽然都是汇编程序,但却使用了两种语法格式.bootsect.s 和 setup.s 采用近似于 I ...

  8. 【转】dubbo各种协议

    原文地址:http://dubbo.io/User+Guide-zh.htm#UserGuide-zh-协议参考手册 协议参考手册 (+) (#) 推荐使用Dubbo协议 性能测试报告各协议的性能情况 ...

  9. 使用Python3自带工具2to3.py 转换 Python2.x 代码 到Python3

    几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下.为了简化这个转换过程,Python 3自带了一个叫做2to3的实用脚本(Utility Script),这个脚本会 ...

  10. vuex 温故而知新 mapState的使用

    虽然早就知道 mapState 的存在,但还是极少使用.最近代码的computed变多才开始意识到好处. 原来的代码: computed: { findLastSixMonthAir () { ret ...