问题描述:
我想用java代码来访问我自己的163.com邮箱.可是报错了代码如下:
public boolean GetMessage(){
boolean b = false;
Properties prop = System.getProperties();
prop.put("mail.pop3.host","220.181.31.8");//指定邮件服务器名 220.181.31.8是163.com的host
prop.put("mail.pop3.port","25");//指定发送端口
prop.put("mail.transport.protocol", "pop3");//指定发送的协议
//邮件会话对象
Session session =Session.getInstance(prop);
try {
//邮箱对象
Store store= session.getStore("pop3");
//连接
store.connect("tytyler","inrcel");
//文件夹对象
Folder folder = store.getFolder("INBOX");
//邮件
Message[] message = folder.getMessages();
//打印结果
System.out.print(message.length);
b = true;
} catch (Exception e) {
// TODO: handle exception
b = false;
e.printStackTrace();
}
return b;
}错误信息:
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:160)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:192)
at com.eatsun.eamildemo.SendEmail.SendMessage(SendEmail.java:39)
at com.eatsun.eamildemo.SendEmail.main(SendEmail.java:84)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:267)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.pop3.Protocol.<init>(Protocol.java:91)
at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:213)
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:156)
... 5 more
我想用java代码来访问我自己的163.com邮箱.可是报错了代码如下:
public boolean GetMessage(){
boolean b = false;
Properties prop = System.getProperties();
prop.put("mail.pop3.host","220.181.31.8");//指定邮件服务器名 220.181.31.8是163.com的host
prop.put("mail.pop3.port","25");//指定发送端口
prop.put("mail.transport.protocol", "pop3");//指定发送的协议
//邮件会话对象
Session session =Session.getInstance(prop);
try {
//邮箱对象
Store store= session.getStore("pop3");
//连接
store.connect("tytyler","inrcel");
//文件夹对象
Folder folder = store.getFolder("INBOX");
//邮件
Message[] message = folder.getMessages();
//打印结果
System.out.print(message.length);
b = true;
} catch (Exception e) {
// TODO: handle exception
b = false;
e.printStackTrace();
}
return b;
}错误信息:
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:160)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:192)
at com.eatsun.eamildemo.SendEmail.SendMessage(SendEmail.java:39)
at com.eatsun.eamildemo.SendEmail.main(SendEmail.java:84)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:267)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.pop3.Protocol.<init>(Protocol.java:91)
at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:213)
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:156)
... 5 more
163的我也联不上
我只连上新浪的
关注
import javax.mail.*;
import javax.mail.internet.*;public class Sender {
//邮件服务器的ip、发件人、收件人、邮件标题、内容
public void sendMail(String host, String from, String to, String subject, String content) throws AddressException, MessagingException{
//创建session
Properties pro = new Properties();
pro.put("mail.smtp.host", host);//指定邮件服务器的ip地址
//下面这个第二个参数必须用字符串来设置为true,否则会报错
pro.put("mail.smtp.auth", "true");//验证发件人是否合法用户
//第二个参数的作用是:当邮件服务器需要认证的时候,会自动调用Authenticator里的getPasswordAuthentication()方法来取得用户名、密码信息
Session se = Session.getDefaultInstance(pro, new auth());
//创建邮件消息
MimeMessage msg = new MimeMessage(se);
//发件人
msg.setFrom(new InternetAddress(from));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
msg.setText(content);
//连接到邮件服务器,并发送邮件
Transport tran = se.getTransport("smtp");
tran.connect();//连接
tran.sendMessage(msg, msg.getAllRecipients());
tran.close();//关闭连接
}
//邮箱服务器需要认证的时候,需要写个类继承Authenticator这个抽象类
public class auth extends Authenticator{
//Authenticator中的唯一一个方法,作用是返回用来认证的用户名和密码
public PasswordAuthentication getPasswordAuthentication() {
//此处的username,password对应你163邮箱的账号名称和密码
return new PasswordAuthentication("username", "password");
}
}
}
String host = "smtp.163.com";
String from = "[email protected]";
String to = "[email protected]";//收件人必须是服务器里存在的帐户
String subject = "测试~2";
String content = "测试一下~";
Sender sender = new Sender();
try {
sender.sendMail(host, from, to, subject, content);
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
at javax.mail.Service.connect(Service.java:322)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at com.eatsun.eamildemo.Sender.sendMail(Sender.java:25)
at com.eatsun.eamildemo.TestSender.main(TestSender.java:18)
String from = "[email protected]";
String to = "[email protected]";//收件人必须是服务器里存在的帐户
String subject = "测试~2";
String content = "测试一下~";
Sender sender = new Sender();
try {
sender.sendMail(host, from, to, subject, content);
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
<%@ page language="java" import="javax.mail.*" pageEncoding="gb2312"%><table border="1" align="center">
<tr colspan="5">
<th>以下是邮箱中的内容</th>
</tr>
<tr>
<td>序号</td>
<td>标题</td>
<td>发送地址</td>
<td>邮件大小</td>
<td>发送时间</td>
</tr>
<%
Session mailsession=Session.getDefaultInstance(System.getProperties(),null);//创建一个session对象
mailsession.setDebug(false);
Store store=mailsession.getStore("pop3");
store.connect("pop3.163.com","用户名","密码");
Folder folder=store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[]=folder.getMessages();
out.println("您收件箱中共有"+message.length+"封邮件:<br>");
for(int i=0;i<message.length;i++)
{
out.print("<tr><td>"+(i+1)+"</td>");
out.print("<td><a href='#'>"+message[i].getSubject()+"</td>");
out.print("<td>"+message[i].getFrom()[0].toString()+"</td>");
out.print("<td>"+message[i].getSize()+"</td>");
out.print("<td>"+message[i].getSentDate()+"</td>");
}
folder.close(true);
store.close();
%>
</table>
LZ参考一下!!
错误信息
javax.mail.AuthenticationFailedException: failed to connect
at javax.mail.Service.connect(Service.java:322)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at com.eatsun.eamildemo.Sender.sendMail(Sender.java:25)
at com.eatsun.eamildemo.TestSender.main(TestSender.java:18)
调用了你的发送方法 s.sendMail("smtp.163.com", "[email protected]", "[email protected]", "Hello", "HelloWord"); foxkissme:
要不你写个webservice 我直接调用你的服务接口.看下行不行