求救--javamail做收邮件时:javax.mail.NoSuchProviderException: No provider for pop3

getnull 2002-08-15 09:05:30
我的classpath 已经设置了,但是就是说不支持pop3,为什么啊,那为高手给点指点啊!!

classpath:
.;F:\db2\java\db2java.zip;F:\db2\java\runtime.zip;F:\db2\bin;.;G:\JBuilder6\jdk1.3.1\lib;.;G:\j2sdkee1.3.1\lib\j2ee.jar;G:\javamail\pop3.jar;G:\javamail\mail.jar;G:\javamail\mailapi.jar;G:\javamail\smtp.jar;G:\javamail\Libs.rar;G:\javamail\imap.jar;
...全文
1125 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
woodpeng 2002-08-15
  • 打赏
  • 举报
回复
我用我自己写的代码试了试,也不行,可是对于在本局域网设置的一个mailserver是可以的,所以我怀疑是不是因为网络的原因
getnull 2002-08-15
  • 打赏
  • 举报
回复
一开始就是用的默认,但是还不好用。
woodpeng 2002-08-15
  • 打赏
  • 举报
回复
直接用store.connect(mailhost, user, password);用默认看看
getnull 2002-08-15
  • 打赏
  • 举报
回复
jsp:
<%@ page contentType="text/html; charset=ISO8859_1" %>
<%@ page import="ejb.pop3Bean"%>
<%

pop3Bean pop = new pop3Bean();
pop.setServer("pop3.163.com",110);
pop.setUser("wjmmml");
pop.setPass("******");
pop.pop3accept();

%>
package ejb;

import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import java.io.*;
import javax.activation.*;
public class pop3Bean {
String m_host; //SMTP服务器名称
int m_port;
String m_user;
String m_pass;
String info;
public pop3Bean() {
m_host=null;
m_port=110;
m_user=null;
m_pass=null;
info="";
}
public String getInfo() {
return info;
}
public void setInfo(String newSample) {
info = newSample;
}

//设定smtp服务器用户名(可选)
public void setUser(String user){
m_user=user;
}


//设定smtp服务器口令(可选)
public void setPass(String pass){
m_pass=pass;
}

//设定pop3的地址和端口号(可选)
public void setServer(String server,int port){
if(port>0) m_port=port;
m_host=server;
}

//设定pop3服务器地址,端口号使用缺省值
public void setServer(String server){
m_host=server;
}
public void pop3accept(){
try {//该程序为接收邮件
Properties props=System.getProperties(); //获取系统变量
Authenticator auth = new MailRz();
props.put("mail.smtp.host",m_host);
props.put("mail.smtp.auth","true");
System.out.println("执行到设置完server属性了;");
Session session = Session.getDefaultInstance(props,auth); //建立session
Store store = session.getStore("pop3");
System.out.println("得到pop的store对象;");
if (store.isConnected()){
store.close();
}else{
store.connect(m_host,m_port,m_user,m_pass);
}

System.out.println("得到pop的connect对象;");
//After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
Folder folder = store.getFolder("INBOX");//连接到Store后,取得一个文件夹,一般默认的是INDEX
folder.open(Folder.READ_WRITE);//READ_ONLY为打开方式
Message message[] = folder.getMessages();//从文件夹获取邮件信息

//可以用两种方式去获得邮件信息,getContent()用来获得邮件的主体信息。而WriteTo()可以用来获得邮件的全部信息,包括头部信息
// System.out.println(((MimeMessage)message).getContent());
for (int i=0,n=message.length;i<n;i++)
{

String out_from_person = ((InternetAddress)message[i].getFrom()[0]).getPersonal();
String out_from_address = ((InternetAddress)message[i].getFrom()[0]).getAddress();
System.out.println("From:"+out_from_person+"\t");
System.out.println("Address:"+out_from_address+"\t");

String out_subject = message[i].getSubject();
System.out.println("Subject:"+out_subject+"\t");

//以下代码用来获得邮件的正文信息
Part messagePart = message[i];
Object out_content = messagePart.getContent();
if (out_content instanceof Multipart)
{
messagePart = ((Multipart)out_content).getBodyPart(0);
System.out.println("[ Multipart Message ]");
}
String out_content_type = messagePart.getContentType();
System.out.println("CONTENT:"+out_content_type);

if (out_content_type.startsWith("text/plain") || out_content_type.startsWith("text/html"))
{
InputStream ipstm = messagePart.getInputStream();
BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
String thisLine = bufreader.readLine();
while (thisLine != null)
{
System.out.println("thisLine: "+thisLine);
thisLine = bufreader.readLine();
}
}
System.out.println("------------------------------------------------------------");
message[i].setFlag(Flags.Flag.DELETED,true);//最后删除服务器端的邮件
}
//DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
folder.close(true);//true的话,彻底删除已经标记为DELETE的邮件,如果为false的话,就不删除
store.close();//关闭
}
catch(Exception ej2)
{
System.out.println(ej2);
}
}
}
但是调用时就是出错啊,提示异常javax.mail.NoSuchProviderException: No provider for pop3
YbbIhAtj 2002-08-15
  • 打赏
  • 举报
回复
你用163的试试看,
woodpeng 2002-08-15
  • 打赏
  • 举报
回复
可能是你的pop3服务器指定的不对
wjmmml 2002-08-15
  • 打赏
  • 举报
回复
用的应用服务器是webshpere吧,他不支持pop3,只支持imap。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧