2

我一直在寻找一个更新到最新版本 JavaMail 的站点,但是每当我尝试时,我都会收到这个烦人的错误(启用调试)
帮助?

DEBUG: setDebug: JavaMail version 1.4.5
DEBUG: getProvider() returning javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]
DEBUG POP3: mail.pop3.rsetbeforequit: false
DEBUG POP3: mail.pop3.disabletop: false
DEBUG POP3: mail.pop3.forgettopheaders: false
DEBUG POP3: mail.pop3.cachewriteto: false
DEBUG POP3: mail.pop3.filecache.enable: false
DEBUG POP3: mail.pop3.keepmessagecontent: false
DEBUG POP3: mail.pop3.starttls.enable: false
DEBUG POP3: mail.pop3.starttls.required: false
DEBUG POP3: mail.pop3.apop.enable: false
DEBUG POP3: mail.pop3.disablecapa: false
DEBUG POP3: connecting to host "pop.mail.yahoo.com", port 110, isSSL false
S: +OK hello from popgate-0.8.0.357900 pop001.mail.ir2.yahoo.com 
C: CAPA
S: +OK CAPA list follows
IMPLEMENTATION popgate-0.8.0.357900
XOIP
EXPIRE-NEVER
PIPELINING
RESP-CODES
TOP
UIDL
USER
SASL LOGIN PLAIN
STLS
.
DEBUG POP3: PIPELINING enabled
DEBUG POP3: authentication command trace suppressed
DEBUG POP3: authentication command failed
C: QUIT
S: +OK
javax.mail.AuthenticationFailedException: [AUTH] Access to this service is not permitted.
    at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:208)
    at javax.mail.Service.connect(Service.java:295)
    at javax.mail.Service.connect(Service.java:176)
    at dong.pong.ping.Client.main(Client.java:42)

代码:

String smtpHost = "smtp.mail.yahoo.com";
        String popHost = "pop.mail.yahoo.com";
        String from = "classified@yahoo.com";
        String to = "classified@yahoo.com";
        String username = "classified";
        String password = "secret";

        // Get system properties
        Properties props = System.getProperties();

        // Setup mail server
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.port", 587);

        // Get session
        Session session = Session.getDefaultInstance(props, null);
        session.setDebug(true);

        Store store = session.getStore("pop3");
        store.connect(popHost, username, password);

        // Define message
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, 
          new InternetAddress(to));
        message.setSubject("Hello JavaMail");
        message.setText("Welcome to Yahoo's JavaMail");

        // Send message
        Transport.send(message);

如果你们中的任何人有一个工作代码,你能发布它吗?谢谢

4

4 回答 4

2

你有高级帐户吗?

还是雅虎的问题?

移至适当的论坛,但某些版本的 yahoo(特别是 yahoo.com)不支持 POP3 访问邮件,除非您已注册高级帐户或拥有合作伙伴服务(如 AT&T/Yahoo)。当它说“不允许访问”时,这可能就是它的意思——你没有高级帐户。

[AUTH] 不允许访问此服务

编辑:另请参阅Java Mail: Unable to send email via Yahoo作为工作示例。

于 2012-10-20T16:22:44.087 回答
0

根据我看到的各种网站,雅虎的 SMTP 端口是 465


实际上,现在我查看堆栈跟踪,看起来问题是在您尝试连接到 POP3 存储时发生的。如果您只是想发送电子邮件,我完全不知道您为什么需要连接到 POP3。

于 2012-10-20T16:10:30.513 回答
0

我检查了这个页面,看来您的用户名必须是完整地址,所以您必须更改:

String username = "classified";

到:

String username = "classified@yahoo.com";

雅虎的 SMTP 是 465,使用 TLS/SSL。

 props.put("mail.smtp.port", 465);
于 2012-10-20T16:11:22.243 回答
0

使用 Spring Framework Mail 服务试试这个。这个对我有用:

Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");

        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.mail.yahoo.com");
        mailSender.setPort(587);
        mailSender.setUsername("username1");
        mailSender.setPassword("password");
        mailSender.setJavaMailProperties(props);

        SimpleMailMessage message = new SimpleMailMessage();

        message.setFrom(email);
        message.setTo(email);
        message.setSubject(subject);
        message.setText(text);
        mailSender.send(message);
于 2014-12-25T15:55:39.197 回答