用james部署自己的邮件服务器,config.xml修改完毕,能发送邮件,但是收取邮件时就一直报验证错误,求大神支招

yjm853145204 发布于 2013/10/03 10:26
阅读 1K+
收藏 0
系统:win8
ide:Myeclipse blue
james:2.3.1

james启动无异常,附图


config.xml的配置参考的网上的,http://zhaipuhong.iteye.com/blog/213246

改动了下面几个地方
1:
Java code
?
1
2
3
4
5
<postmaster>Postmaster@yjm.com</postmaster>   
……   
<servernames autodetect="false" autodetectIP="false">   
    <servername>yjm.com</servername>   
</servernames>  

这里需不需要真正有一个yjm.com的域名啊?但是我就用的@localhost ,收邮件的时候还是验证失败
2:注释掉了下面一段
C# code
?
1
2
3
4
[code=java]<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">   
    <processor> relay-denied </processor>   
    <notice>550 - Requested action not taken: relaying denied</notice>   
</mailet>  
[/code]
3:去掉注释
Java code
?
1
<authRequired>true</authRequired>


下面的HelloMail,sendMail()方法实现发送,getMail()实现接收。
我已经注册了两个用户yjm,cj,密码都是root
代码也是博客上面复制下来的,感觉没什么错,大家看看
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package yjm.com;
 
import java.io.IOException;
import java.util.Properties;
 
import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
public class HelloMail
{
 
    // 发送邮件
    public static void sendMail()
    {
        // String host = "192.168.1.98"; // 指定的smtp服务器,本机的局域网IP
        String host = "localhost"; // 本机smtp服务器
        // String host = "smtp.163.com"; // 163的smtp服务器
        String from = "yjm@yjm.com"; // 邮件发送人的邮件地址
        String to = "cj@yjm.com"; // 邮件接收人的邮件地址
        final String username = "yjm"; // 发件人的邮件帐户
        final String password = "root"; // 发件人的邮件密码
 
        // 创建Properties 对象
        Properties props = System.getProperties();
 
        // 添加smtp服务器属性
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");
 
        // 创建邮件会话,验证类
        Session session = Session.getDefaultInstance(props, new Authenticator()
        {
            @Override
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(username, password);
            }
 
        });
 
        try
        {
            // 定义邮件信息
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(
                    to));
            // message.setSubject(transferChinese("我有自己的邮件服务器了"));
            message.setSubject("I hava my own mail server");
            message.setText("From now, you have your own mail server, congratulation!");
 
            // 发送消息
            session.getTransport("smtp").send(message);
            // Transport.send(message); //也可以这样创建Transport对象发送
            System.out.println("SendMail Process Over!");
 
        } catch (MessagingException e)
        {
            e.printStackTrace();
        }
    }
 
    // 接受邮件
    public static void getMail()
    {
        String host = "localhost";
        final String username = "cj";
        final String password = "root";
 
        // 创建Properties 对象
        Properties props = new Properties();
 
        // 创建邮件会话
        Session session = Session.getDefaultInstance(props, new Authenticator()
        {
            @Override
            public PasswordAuthentication getPasswordAuthentication()
            {
                return new PasswordAuthentication(username, password);
            }
 
        });
 
        try
        {
            // 获取邮箱的pop3存储
            Store store = session.getStore("pop3");
            store.connect(host,username,password);
 
            // 获取inbox文件
            Folder folder = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY); // 打开,打开后才能读取邮件信息
 
            // 获取邮件消息
            Message message[] = folder.getMessages();
 
            for (int i = 0, n = message.length; i < n; i++)
            {
                System.out.println(i + ": " + message[i].getFrom()[0] + "\t"
                        + message[i].getSubject());
                try
                {
                    message[i].writeTo(System.out);
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
 
            }
            // 关闭资源
            folder.close(false);
            store.close();
            System.out.println("GetMail Process Over!");
 
        } catch (MessagingException e)
        {
            e.printStackTrace();
        }
    }   
 
//    // 邮件主题中文字符转换
//    public static String transferChinese(String strText)
//    {
//        try
//        {
//            strText = MimeUtility.encodeText(new String(strText.getBytes(),
//                    "GB2312"), "GB2312", "B");
//        } catch (Exception ex)
//        {
//            ex.printStackTrace();
//        }
//        return strText;
//    }
 
    public static void main(String[] args)
    {
        //HelloMail.sendMail();
        HelloMail.getMail();
    }
 
}

在我机子上运行的结果


DEBUG 的内容如下,求回复啊!!!
DEBUG: JavaMail version 1.4.3
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]
DEBUG POP3: connecting to host "localhost", port 110, isSSL false
S: +OK yjm-pc POP3 server (JAMES POP3 Server 2.3.1) ready 
C: CAPA
S: -ERR
C: USER yjm
S: +OK
C: PASS root
S: -ERR Authentication failed.
C: QUIT
S: +OK Apache James POP3 Server signing off.
DEBUG POP3: connecting to host "localhost", port 110, isSSL false
S: +OK yjm-pc POP3 server (JAMES POP3 Server 2.3.1) ready 
C: CAPA
S: -ERR
C: USER yjm
S: +OK
C: PASS root
S: -ERR Authentication failed.
C: QUIT
S: +OK Apache James POP3 Server signing off.
Exception in thread "main" javax.mail.AuthenticationFailedException: Authentication failed.
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:174)
at javax.mail.Service.connect(Service.java:313)
at javax.mail.Service.connect(Service.java:172)
at yjm.com.HelloMail.getMail(HelloMail.java:124)
at yjm.com.HelloMail.main(HelloMail.java:170)

加载中
0
彭亚雄
彭亚雄

S: -ERR Authentication failed. 

pop3在验证登陆的时候出错了,检查看看用户名和密码

返回顶部
顶部