在实现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. 【算法】MD5加密

    1.什么是MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍 ...

  2. iOS扩大UIButton按钮的可点击区域

    一.开发中遇到的问题 我们在开发时有时遇到这中情况:UI给的图片很小,button的点击区域要求比较大.如果用 setBackgroundImage: 方式设置图片会导致图片也跟着button的fra ...

  3. .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片

    .NET压缩图片保存   需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...

  4. 使用JDBC改变Oracle的session參数 NLS_DATE_FORMAT

    近期项目除了一个问题,场景大概是这种,项目在国外开发.在项目开发过程中使用了大量的Oracle函数TO_DATE,可是开发者没有写第二个參数. 所以项目在国外的server上能够正常执行.但是在国内的 ...

  5. hibernate的native sql查询

    在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hibernate推荐的HQL查询语句呢?这是因为HQ ...

  6. C#两个DataTable拷贝问题:该行已经属于另一个表的解决方法

    一.DataTable.Rows.Add(DataRow.ItemArray); 二.DataTable.ImportRow(DataRow) 三.设置DataTable的tablename,然后.R ...

  7. 使用 Zipkin 和 Brave 实现分布式系统追踪(基础篇)

    一.Zipkin 1.1.简介 Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper 的论文设计而来,由 Twi ...

  8. Atitti dbutil获取多个返回结果集的解决

    Atitti dbutil获取多个返回结果集的解决 1.1. 多个select默认只返回第一个resultset1 1.2. 调用存储过程,也是返回第一个select的1 1.3. 如果insert前 ...

  9. ubuntu 编译android 源码笔记

    已经验证,可以编译成功.过程中会碰到一些编译错误,安装好依赖环境,可以解决. 1.splite压缩包的合并,解压缩,md5验证 http://pan.baidu.com/s/1bnG1NtX kitk ...

  10. HTML5学习笔记(二十六):JavaScript的错误处理

    错误相关的调试和处理在开发中是特别重要的一种技能. try-catch 我们来看下面的情况: // noneFunc 这个方法并不存在 window.noneFunc(); // js 报错后终止运行 ...