现在大多数smtp服务器都需要身份认证,若用javamail写一个邮件收发客户端,怎么来实现这种功能呢?下面是一个简单的列子,模拟foxmail对认证功能的实现。
package jmail;
import javax.mail.*;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
public class MailAuthenticator extends Authenticator{
String authenName; //用户名
String authenPass; //密码
public MailAuthenticator(String authenName,String authenPass) {
super();
this.authenName=authenName;
this.authenPass=authenPass;
}
public PasswordAuthentication getPasswordAuthentication(){ /*若服务器需要身份认证,Sission会自动调用这个方法
String temp=null;
if(authenPass.equals("")||authenPass==null){ /*若密码为空*/
Option op=new Option(null,"身份验证",true); /*弹出要求用户输入密码的对话框,Option是自定义的JDialog,包含一个密码域*/
temp=op.showDialog(); /*Option的返回输入的密码*/
authenPass=temp;
}
return new PasswordAuthentication(authenName,authenPass);
}
}
/* 下面是Option 类,jbuilder里写的,无须解释*/
package jmail;
import java.awt.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.awt.event.*;
public class Option extends JDialog {
JPanel panel1 = new JPanel();
JLabel jLabel1 = new JLabel();
XYLayout xYLayout1 = new XYLayout();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JPasswordField jPasswordField1 = new JPasswordField();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
Icon forget=new ImageIcon(".imagesforget.gif");
boolean ok=false;
JLabel jLabel4 = new JLabel();
JLabel jLabel5 = new JLabel();
public Option(Frame frame, String title, boolean modal) {
super(frame, title, modal);
try {
jbInit();
pack();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public Option() {
javamail实现smtp身份认证
时间: 2024-11-26 03:39:10
javamail实现smtp身份认证的相关文章
部署Postfix邮件系统(四)设置SMTP发信认证及别名机制
SMTP发信认证的常见形式如下:当用户通过SMTP协议向外部邮件域发送邮件时,服务器会要求用户提供用户账号和口令进行身份验证,只有成功通过身份验证的用户才被允许向外部发送邮件,否则将拒绝发信请求. 在Postfix邮件系统中,可以使用Cyrus SASL软件来实现基本的SMTP认证机制.Postfix通过调用CyrusSASL的函数库,使用Cyrus SASL提供的认证服务saslauthd来核对系统账号和密码. 1.设置Cyrus SASL函数库,并启动saslauthd服务 [root@lo
Linux+Apache实现用户身份认证
一.序言 现在很多网站对用户的访问权限进行了严格的限制,用户在访问某些资源时需要给出"用户名/口令"来确认自己的身份. 目前,使用最多的身份认证方法是将用户名.口令存放在一个数据库中,当用户要访问某些受限制的资源时,要在某一个页面中输入用户名和口令,程序将用户输入的用户名和口令与数据库存放的"用户名/口令"相比较,如果输入正确,则正常使用资源,否则,资源访问被拒绝.但是,这种身份认证方式有两个很大的问题,一方面只要用户有一次身份认证成功,就可以记录下受限资源的链接地
宽带门户网站身份认证系统设计
设计 摘 要 研究了湖南铁通宽带门户网站身份认证系统的功能需求,从统一认证.认证安全性和通用性等方面提出了一套全面的解决方案.方案利用集中用户管理实现统一认证:利用"一次一密",两次认证的方式实现良好的安全性:利用WEB SERVICES架构实现系统的通用性. 关键词 统一身份认证:时间戳:Web Services 背景 在以前,宽带的速度是吸引用户的根本原因.当宽带用户以前所未有的速度成倍增长的时候,价格和速度已不是影响网民上网的主要因素,没有丰富的内容用户就不能真正享受"
浅谈php用户身份认证(四)
浅谈php用户身份认证(四) 爆米花 2001 12,28 www.westxj.net 大家好,前面几节讲了这个基于http单用户和多用户的密码验证的编写程序的方法,这种方法对于需要身份验证的页面,是最好不过的了.但是,这种验证不能在cgi模式的php,iis下的php使用.所以,我们就可以利用session在不同页面之间来保存用户信息,达到验证的目的. session是指一个终端用户与交互系统进行通信的
浅谈php用户身份认证(二)
浅谈php用户身份认证(二) 爆米花 2001年12月28日 www.westxj.net(二)基于http的多用户验证 上次给大家介绍了基于http的单用户验证,这次利用mysql数据库储存多用户数据,进行多用户验证.1.首先建立mysql数据库mysql>create database user; //建立数据库usermysql>use user;
浅谈php用户身份认证(一)
浅谈php用户身份认证(一) 爆米花2001年9月25日 www.westxj.net 大家在浏览网站的时候,常常会遇到某些网页会需要用户和密码的验证,这就需要我们编写相应的身份验证程序来实现此功能.以下是我的一些学习过程和体会,希望对大家有所帮助.(一).基于HTTP验证的单用户身份验证: 我们利用函数header()发送HTTP标头强制进行验证,客户端浏览器则弹出要输入用户名和密码的对话框,
linux ldap认证:windos 和 linux 下实现PHP和LDAP身份认证
我现在的老板曾要求我为企业内部互联网的Web服务提供一种标准的身份验证方法.我遇到的一个主要问题就是我们公司主要使用了两种平台:UNIX和Windows.所以,我的第一个想法并不很成功:它要求每个员工都使用UNIX或者Linux而放弃Windows.我认为解决现在的UNIX/Windows问题的最好方法就是利用PHP的LDAP特性.由于LDAP服务器,要求我使用现有的系统,主要指的是一个巨大的Microsoft Exchange Server系统.我非常高兴使用Exchange,它很可靠,而且L
浅谈Oracle外部身份认证研究
一.服务器上使用操作系统验证 1.配置SQLNET.ORA文件 参数NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)表明解析客户端连接时所用的主机字符串的方式 TNSNAMES表示采用TNSNAMES.ORA文件来解析: ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES: HOSTNAME表示使用h
PHP中用户身份认证实现二法
用户在设计和维护站点的时候,经常需要限制对某些重要文件或信息的访问.通常,我们可以采用内置于WEB服务器的基于HTTP协议的用户身份验证机制.当访问者浏览受保护页面时,客户端浏览器会弹出对话窗口要求用户输入用户名和密码,对用户的身份进行验证,以决定用户是否有权访问页面.下面用两种方法来说明其实现原理. 一.用HTTP标头来实现 标头是服务器以HTTP协议传送HTML信息到浏览器前所送出的字串.HTTP采用一种挑战/响应模式对试图进入受密码保护区域的用户进行身份验证.具体来说,当用户首次向WEB服