社区
非技术区
帖子详情
如何用jsp搞定邮件系统。那里有邮件服务器的下载?
pqds
2002-03-04 01:44:56
客户是服务器托管。要求可以申请邮箱。发-收邮件。
怎么搞?那里有邮件服务器的下载,有邮件系统的现成代码。要JSP的!
如果您知道,不吝赐教!
...全文
128
14
打赏
收藏
如何用jsp搞定邮件系统。那里有邮件服务器的下载?
客户是服务器托管。要求可以申请邮箱。发-收邮件。 怎么搞?那里有邮件服务器的下载,有邮件系统的现成代码。要JSP的! 如果您知道,不吝赐教!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jianhua23
2002-03-15
打赏
举报
回复
可以在jakarta.apache.org 上下载到
joyplay
2002-03-15
打赏
举报
回复
基本都注释了,代码的核心思路很简单:
1、指定一个pop3账号,一个smtp帐号(支持smtp验证),提供smtp需要的一些参数(比如reply等)
2、定时从指定pop3账号获取邮件,循环将这些邮件转发(smpt)到一个文本文件中的所有邮件地址,同时删除已经发送完毕的信件(避免重发)。
smtp和pop3都有了,写个webmail也很简单了。
标准的smtp/pop3邮件系统很多,linux类平台下有sendmail和qmail,windows下就更多了,随便找个软件下载站点,去网络->服务器类下面看看,甚至不少免费的。
呵呵,原先我们做过webmail,用asp+com/freeBSD下自己扩展的mailserver
joyplay
2002-03-15
打赏
举报
回复
javamail 功能弱了一点。但是如果用来实现基本的 smtp/pop3 还是可以了。
给你一段代码吧。
下面是我给朋友们发信息用的一个小工具的部分代码,需要你在classpath中加入
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
所需要的 mail.jar pop3.jar 和 activation.jar
/**
* 类ListServer提供基本的邮件列表服务功能:读取指定邮件帐号的所有新邮件,然后转发给
* 在emailListFile文件中指定的所有邮件帐号(订阅者).emailListFile中的邮件帐号格式
* 为每一行一个邮件帐号.
*/
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class ListServer {
private static final String INBOX = "INBOX", POP_MAIL="pop3", SMTP_MAIL="smtp";
private boolean debugOn = false;
private String _smtpHost = null, _pop3Host = null, _user = null, _password = null, _emailListFile = null, _fromName = null;
private javax.mail.internet.InternetAddress[] _toList = null;
//main():创建和启动ListServer实例
public static void main(String args[]) throws Exception
{
//检查输入参数
if (args.length < 6)
{
System.err.println("Usage: java ListServer SMTP服务器 POP3服务器 POP3帐号 POP3帐号密码 订阅者清单文件 检查周期(分钟) 发信人名称");
//System.exit(1);
args = null;
args = new String[]{"","","","","","",""};
args[0] = "202.xxx.xxx.xxx";
args[1] = "202.xxx.xxx.xxx";
args[2] = "play@xiaozhu.com";
args[3] = "test";
args[4] = "d.txt";
args[5] = "1";
args[6] = "play";
}
// 将命令行参数赋值给对应的变量
String smtpHost = args[0],
//smtp服务器
pop3Host = args[1],
//pop3服务器
user = args[2],
//pop3邮件帐号
password = args[3],
//pop3邮件帐号密码
emailListFile=args[4],
//订阅者清单文件
fromName = null;
//发信人名称
int checkPeriod = Integer.parseInt(args[5]);
//新邮件检查周期
if (args.length > 6) fromName = args[6];
// 创建ListServer实例,循环处理新邮件
ListServer ls = new ListServer();
ls.setDebug(true);
while (true)
{
ls.debugMsg("ListServer启动...");
ls.process(smtpHost, pop3Host, user, password, emailListFile, fromName);
ls.debugMsg("ListServer暂停 (休息 " + checkPeriod + " 分钟)");
Thread.sleep(checkPeriod * 1000 * 60);
}
}
// process(): 检查新邮件,调用 processMsg() 处理单个邮件
public void process(String smtpHost, String pop3Host, String user, String password, String emailListFile, String fromName) throws Exception {
_smtpHost = smtpHost;
_pop3Host = pop3Host;
_user = user;
_password = password;
_emailListFile = emailListFile;
if (fromName != null) _fromName = fromName;
// 将订阅者帐号读入
java.util.Vector vList = new Vector(10);
BufferedReader listFile = new BufferedReader(new FileReader(emailListFile));
String line = null;
while ((line = listFile.readLine()) != null)
{
vList.addElement(new javax.mail.internet.InternetAddress(line));
}
listFile.close();
debugMsg("共计 " + vList.size() + " 个订阅者");
_toList = new javax.mail.internet.InternetAddress[vList.size()];
vList.copyInto(_toList);
vList = null;
// 获得 Session 对象
Properties sysProperties = System.getProperties();
Session session = Session.getDefaultInstance(sysProperties, null);
session.setDebug(false);
// 连接POP3邮件服务器
Store store = session.getStore(POP_MAIL);
store.connect(pop3Host, -1, _user, _password);
//store.connect(pop3Host,8888 ,_user, _password);
// 打开缺省文件夹
try
{
store.getDefaultFolder();
}
catch(javax.mail.AuthenticationFailedException ex)
{
System.out.println("smtp 验证失败" + ex);
return;
}
try
{
Folder folder = store.getDefaultFolder();
if (folder == null) throw new NullPointerException("没有缺省邮件文件夹");
folder = folder.getFolder(INBOX);
if (folder == null) throw new NullPointerException("无法打开文件夹: " + folder);
folder.open(Folder.READ_WRITE);
// 获得新邮件数
int totalMessages = folder.getMessageCount();
if (totalMessages == 0)
{
debugMsg(folder + " 没有新邮件");
folder.close(false);
store.close();
return;
}
// 获得所有新邮件的属性和标记
Message[] messages = folder.getMessages();
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
fp.add(FetchProfile.Item.FLAGS);
fp.add("X-Mailer");
folder.fetch(messages, fp);
// 处理每一个新邮件
for (int i = 0; i < messages.length; i++)
{
if ( ( ! messages[i].isSet(Flags.Flag.SEEN)) && ( ! messages[i].isSet(Flags.Flag.DELETED)) )
{
processMsg( smtpHost, messages[i]);
messages[i].setFlag(Flags.Flag.DELETED, true);
}
}
folder.close(true);
store.close();
}
catch(javax.mail.AuthenticationFailedException e)
{
System.out.println("密码验证失败 " + e);
}
catch(Exception e)
{
System.out.println("getFolder: " + e);
}
}
// processMsg(): 分析单个新邮件并调用sendMsg()将它转发给所有订阅者
private void processMsg(String smtpHost, Message message) throws Exception
{
String replyTo=_user, subject, xMailer, messageText;
Date sentDate;
int size;
Address[] a=null;
// 获得邮件头信息 (发件人,收件人,邮件主题,发送日期等.)
if ((a = message.getFrom()) != null) replyTo = a[0].toString();
subject = message.getSubject();
sentDate = message.getSentDate();
size = message.getSize();
String[] hdrs = message.getHeader("X-Mailer");
if (hdrs != null) xMailer = hdrs[0];
// 转发邮件
sendMsg(_user, sentDate, replyTo, subject, message);
}
// sendMsg():将指定邮件转发给所有订阅者
private void sendMsg(String from, Date sentDate, String replyTo, String subject, Message message) throws Exception
{
// 获得缺省 Session实例
Properties props = new Properties();
props.put("mail.smtp.host", _smtpHost);
Session session = Session.getDefaultInstance(props, null);
// 创建转发邮件,填写各栏目
Address replyToList[] = { new javax.mail.internet.InternetAddress(replyTo) };
Message newMessage = new MimeMessage(session);
if (_fromName != null)
{
newMessage.setFrom(new javax.mail.internet.InternetAddress(from, _fromName + " / " + replyTo));
}
else
{
newMessage.setFrom(new javax.mail.internet.InternetAddress(from));
newMessage.setReplyTo(replyToList);
newMessage.addHeader("X-Mailor","MailList@xiaozhu.com");
newMessage.setRecipients(Message.RecipientType.BCC, _toList);
}
newMessage.setSentDate(sentDate);
// 填写转发邮件内容(注意区分内容类型)
Object content = message.getContent();
//原邮件内容
String debugText = "主题: " + subject + ", 发送日期: " + sentDate;
if (content instanceof Multipart)
{
debugMsg("发送复合内容邮件 (" + debugText + ")");
newMessage.setContent((Multipart)message.getContent());
}
else
{
debugMsg("发送纯文本邮件 (" + debugText + ")");
newMessage.setText((String)content);
}
// 转发邮件
Transport transport = session.getTransport(SMTP_MAIL);
transport.connect(_smtpHost, _user, _password);
transport.sendMessage(newMessage, _toList);
}
private void debugMsg(String s)
{
if (debugOn) System.out.println(new Date() + "> " + s);
}
public void setDebug(boolean state)
{
debugOn = state;
}
}
csdn_k
2002-03-15
打赏
举报
回复
jianhua23()
哪里可以下载到james呢?
jianhua23
2002-03-15
打赏
举报
回复
用用Jakarta Apache 组织的James吧.
James: Java Apache Mail Enterprise Server.
很好用又免费,还提供源代码
pqds
2002-03-15
打赏
举报
回复
yanchang(笨笨:
exechange,可以通过设定来申请新邮箱吗?
可以跑两千吗,可以与APCHHE,TOMCAT并存吗?
yanchang
2002-03-13
打赏
举报
回复
在nt下用exchange啊,巨好用,连web方式收发都有,绝对专业
用vjavamailjavamail实现象专业的mail系统比较困难啊
简单的还可以
ldgs
2002-03-13
打赏
举报
回复
免费的邮件服务器软件一大把,搜一下。
snowredfox
2002-03-13
打赏
举报
回复
http://developer.java.sun.com/developer/onlineTraining/JavaMail/contents.html
pqds
2002-03-13
打赏
举报
回复
不是JSP的,别的也可以!主要是在2000下跑!
pqds
2002-03-11
打赏
举报
回复
怎么搞得,没人里!
baitianhai
2002-03-06
打赏
举报
回复
http://www.csdn.net/expert/topic/439/439489.xml
你去联系联系这个人吧
pqds
2002-03-05
打赏
举报
回复
怎么没人里我!
baitianhai
2002-03-04
打赏
举报
回复
因该是有的,你去找找javamail的东西
java简单--
邮件
发送
使用的时候只需要导jar文件 并且一行代码
搞定
邮件
发送操作 简单方便发送
邮件
下载
评论反还积分
邮件
发送系统操作: 第一步骤: 将SendMail.jar、smtp.jar及mailapi.jar文件构建到项目中 第二步骤: 将mail....
Nginx+Tomcat 负载均衡 3分钟
搞定
Nginx 是一款轻量级的 Web
服务器
、反向代理
服务器
和电子
邮件
代理
服务器
。其配置文件主要包括以下几个部分: 1. worker_processes:指定工作进程的个数,一般与计算机的 cpu 核数一致。 2. events:指定事件处理的...
JSP
验证码,这个是我自己刚测试过的,非常好用
例如,一个名为`yanzheng.tld`的TLD文件定义了一个`<yanzheng:code/>`标签,然后在
JSP
页面中使用这个标签生成并显示验证码。 以下是一个简化的
JSP
示例,展示如何生成验证码: ```
jsp
// 生成随机字符串 ...
服务器
将代码删除文件,
jsp
删除
服务器
上的文件
一个小问题
jsp
删除
服务器
上的文件调试了很长的时间结果发现试绝对路径的问题现在
搞定
了 ‘String path = application.getRealPath(“/”); //获得当前的绝对路径String url= path+”at.jpg”; //获得绝对文件名称...
最新web/java/
jsp
实现发送手机短信验证码和邮箱验证码的注册登录功能(详细)
最新web/java/
jsp
实现发送手机短信验证码和邮箱验证码的...作为一个演示项目,我没有使用任何框架,用了一个简单的
jsp
+Servlet,当然用boostrap美化了一下。代码带有注释,非常简单易懂。 一、手机验证码 由于手机...
非技术区
23,407
社区成员
70,513
社区内容
发帖
与我相关
我的任务
非技术区
Java 非技术区
复制链接
扫一扫
分享
社区描述
Java 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章