微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > JavaMail >

java 邮件认证

时间:2017-01-16 03:31  浏览:努力统计中...
在前面的教程里面我们都是用Session. getDefaultInstance (props)没有通过认证的方式取得session,这样明显的缺点是我们要连接邮件服务器的用户名和密码都要写死在代码里面,如:transport.co

        在前面的教程里面我们都是用Session.getDefaultInstance(props)没有通过认证的方式取得session,这样明显的缺点是我们要连接邮件服务器的用户名和密码都要写死在代码里面,如:transport.connect("smtp.qq.com", "***@qq.com", "****");

store.connect("pop.qq.com", "*****@qq.com", "******");

       这样子显得程序拓展性很差,如果要切换不同的用户就要修改源代码,这样是很麻烦的,还有用户名和密码明文地写在代码里很容易就泄露,这样是很不安全的。这一讲就是通过运用Authenticator类来进行邮件的认证。

        Authenticator是一个抽象类,所以要extends Authenticator 抽象类在子类中覆盖父类中的 getPasswordAuthentication() 方法,就可以实现以不同的方式来进行登录邮箱时的用户身份认证。JavaMail 中的这种设计是使用了策略模式(Strategy),具体的请参看相关文章。

这一讲我们来建立一个通过对话框输入用户名和密码进行收发邮件。如果想了解不通过邮件认证连接服务器,请观看2~3讲的内容。

1、  首先我们建立一个继承Authenticator的子类。

1 import java.util.*;
2  import javax.mail.*;
3  import javax.swing.*;
4
5  public class GUIAuthenticator extends Authenticator {
6
7 protected PasswordAuthentication getPasswordAuthentication() {
8 String user;
9 String pwd;
10 // 弹出输入对话框
11   String result = JOptionPane.showInputDialog("请输入用户名和密码,以','隔开!");
12 StringTokenizer st = new StringTokenizer(result, ",");
13 user = st.nextToken();
14 pwd = st.nextToken();
15 return new PasswordAuthentication(user, pwd);
16 }
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------
栏目列表
推荐内容