小编Ste*_*rry的帖子

当地址正常时,使用javax.mail获取无效地址

我正在使用javax.mail系统,并遇到"无效地址"异常的问题.以下是代码的基础知识:

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

    // Setup mail server
    props.put("mail.smtp.host", m_sending_host);

    // Get session
    Session session = Session.getDefaultInstance(props, new Authenticator(){
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(m_sending_user, m_sending_pass);
        }
    });


    // Define message
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(m_sending_from));
    message.addRecipient(Message.RecipientType.TO, 
        new InternetAddress(vcea.get(i).emailaddr));
    message.setSubject( replaceEnvVars(subject) );
    message.setText(replaceEnvVars(body));

    // Send message
    try {
        Transport.send(message);
    } catch (Exception e){
        Log.Error("Error sending e-mail to addr (%s): %s",
                vcea.get(i).emailaddr, e.getLocalizedMessage() );

    }
Run Code Online (Sandbox Code Playgroud)

问题是上面的代码确实有效.但是对于我知道有效的某些电子邮件地址(因为我可以通过标准电子邮件客户端发送给他们),上述代码在尝试发送时会抛出"无效地址"异常.

任何线索或提示将不胜感激.

- 更新:身份验证问题.

好的,这是我发现的事情.接收电子邮件时,上面的代码正确设置了身份验证,并且实际调用了Authenticator.getPasswordAuthentication()回调.

发送电子邮件时不是这样.你必须做更多.添加这个:

    // …
Run Code Online (Sandbox Code Playgroud)

java email

5
推荐指数
1
解决办法
3万
查看次数

标签 统计

email ×1

java ×1