引入:最近项目中要做一个简单的邮件功能,即从前台输入邮件内容,去配置文件中读取发件人、收件人等信息后,然后发送邮件到指定的邮箱,其中收件人和抄送人可以有多个,基于这个需求,查询了相关资料,决定采用JavaMail这个插件来实现。
preparation:
1.JavaMail的介绍
JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。
虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(JavaDevelopmentKit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。
JavaMail是可选包,因此如果需要使用的话你需要首先从java.sun.com下载。目前最新版本是JavaMail1.4,使用JavaMail的时候需要Javabean Activation Framework的支持,因此你也需要下载JAF。安装JavaMail只是需要把他们加入到CLASSPATH中去,如果你不想修改 CLASSPATH的话,可以直接把他们的jar包直接copy到JAVA_HOME/lib/ext下。这样JavaMail就安装好了。
JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息
2.下载jar包
网上有下载链接,但是这里我还是把jar包给上传
dom4j.jar 这个jar就不提供下载资源了
3.项目环境
system:win7 myeclipse:6.5 tomcat:5.0 JDK:编译和运行都是1.4
为了方便,还是在之前的UpDown项目下运行的,本次用到的文件只有sendmail包下的文件。
4.class&method
请参考:http://www.jspcn.net/htmlnews/1150019680500144.html
start
导入javamail、JAF、dom4j的jar包,然后新建对应的文件如下:
Encrypt.jar 主要是用于对密码进行加密和解密
- package sendmail;
- /**
- * Module: Encrypt.java
- * Description: 对密码进行加密和解密
- * Company:
- * Author: ptp
- * Date: Mar 6, 2012
- */
- public class Encrypt
- {
- public static final int pass1 = 10;
- public static final int pass2 = 1;
- public Encrypt()
- {
- }
- /**
- * @Title: DoEncrypt
- * @Description: 对密码进行加密的方法
- * @param @param str
- * @param @return 设定文件
- * @return String 返回类型
- * @throws
- */
- public static String DoEncrypt(String str)
- {
- StringBuffer enStrBuff = new StringBuffer();
- for (int i = 0; i < str.length(); i++)
- {
- int tmpch = str.charAt(i);
- tmpch ^= 1;
- tmpch ^= 0xa;
- enStrBuff.append(Integer.toHexString(tmpch));
- }
- return enStrBuff.toString().toUpperCase();
- }
- /**
- * @Title: DoDecrypt
- * @Description: 对密码进行解密的方法
- * @param @param str
- * @param @return 设定文件
- * @return String 返回类型
- * @throws
- */
- public static String DoDecrypt(String str)
- {
- String deStr = str.toLowerCase();
- StringBuffer deStrBuff = new StringBuffer();
- for (int i = 0; i < deStr.length(); i += 2)
- {
- String subStr = deStr.substring(i, i + 2);
- int tmpch = Integer.parseInt(subStr, 16);
- tmpch ^= 1;
- tmpch ^= 0xa;
- deStrBuff.append((char)tmpch);
- }
- return deStrBuff.toString();
- }
- public static void main(String args[])
- {
- String source = "123456";
- String s = DoEncrypt(source);
- System.out.println("de=" + s);
- source = DoDecrypt(s);
- System.out.println("en=" + source);
- }
- }
MailInfo.java javabean定义邮件需要的字段以及对应的get和set方法
- package sendmail;
- /**
- *Module: MailInfo.java
- *Description: 定义发送邮件的所有字段的javabean
- *Company:
- *Author: ptp
- *Date: Mar 1, 2012
- */
- public class MailInfo{
- private String host;// 邮件服务器域名或IP
- private String from;// 发件人
- private String to;// 收件人
- private String cc;// 抄送人
- private String username;// 发件人用户名
- private String password;// 发件人密码
- private String title;// 邮件的主题
- private String content;// 邮件的内容
- public String getHost() {
- return host;
- }
- public void setHost(String host) {
- this.host = host;
- }
- public String getFrom() {
- return from;
- }
- public void setFrom(String from) {
- this.from = from;
- }
- public String getTo() {
- return to;
- }
- public void setTo(String to) {
- this.to = to;
- }
- public String getCc() {
- return cc;
- }
- public void setCc(String cc) {
- this.cc = cc;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- }