ntlm-auth java_JAVAMAIL:AUTH NTLM失败

我尝试在本地网络的java发送邮件,使用Microsoft Exchange ServerJAVAMAIL:AUTH NTLM失败

有我的代码:

import java.io.UnsupportedEncodingException;

import java.util.Properties;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class Main {

public static void main(String[] args) {

final String username = "[email protected]";

final String password = "password";

Properties props = new Properties();

props.put("mail.smtp.auth", "true");

props.put("mail.debug", "true");

props.put("mail.smtp.host", "exchange_host.MyDomain.com");

props.put("mail.smtp.port", "25");

props.put("mail.smtp.auth.mechanisms","NTLM");

props.put("mail.smtp.auth.ntlm.domain","MyDomain");

Session session = Session.getInstance(props,new MyAuthenticator(username,password));

try {

Message message = new MimeMessage(session);

message.setFrom(new InternetAddress("[email protected]"));

message.setRecipients(Message.RecipientType.TO,

InternetAddress.parse("recipent_adresse"));

message.setSubject("Testing Subject");

message.setText("Dear Mail Crawler,"

+ "\n\n No spam to my email, please!");

Transport.send(message);

System.out.println("Done");

} catch (MessagingException e) {

throw new RuntimeException(e);

}

}

}

,这是我authentificator类:

import javax.mail.Authenticator;

import javax.mail.PasswordAuthentication;

public class MyAuthenticator extends Authenticator {

String user;

String pw;

public MyAuthenticator (String username, String password)

{

super();

this.user = username;

this.pw = password;

}

public PasswordAuthentication getPasswordAuthentication()

{

return new PasswordAuthentication(user, pw);

}

}

我使用NTLM机制,但我得到这个错误:

DEBUG: JavaMail version 1.4.7

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,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}

DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}

DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map

DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]

DEBUG SMTP: useEhlo true, useAuth true

DEBUG SMTP: useEhlo true, useAuth true

DEBUG SMTP: trying to connect to host "echange_server.MyDomain.com", port 25, isSSL false

220 echange_server.MyDomain.com Microsoft ESMTP MAIL Service ready at Mon, 30 Sep 2013 09:01:08 +0100

DEBUG SMTP: connected to host "echange_server.MyDomain.com", port: 25

EHLO host.MyDomain.com

250-echange_server.MyDomain.com Hello [xx.xx.xx.xx]

250-SIZE

250-PIPELINING

250-DSN

250-ENHANCEDSTATUSCODES

250-STARTTLS

250-X-ANONYMOUSTLS

250-AUTH NTLM

250-X-EXPS GSSAPI NTLM

250-8BITMIME

250-BINARYMIME

250-CHUNKING

250-XEXCH50

250-XRDST

250 XSHADOW

DEBUG SMTP: Found extension "SIZE", arg ""

DEBUG SMTP: Found extension "PIPELINING", arg ""

DEBUG SMTP: Found extension "DSN", arg ""

DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""

DEBUG SMTP: Found extension "STARTTLS", arg ""

DEBUG SMTP: Found extension "X-ANONYMOUSTLS", arg ""

DEBUG SMTP: Found extension "AUTH", arg "NTLM"

DEBUG SMTP: Found extension "X-EXPS", arg "GSSAPI NTLM"

DEBUG SMTP: Found extension "8BITMIME", arg ""

DEBUG SMTP: Found extension "BINARYMIME", arg ""

DEBUG SMTP: Found extension "CHUNKING", arg ""

DEBUG SMTP: Found extension "XEXCH50", arg ""

DEBUG SMTP: Found extension "XRDST", arg ""

DEBUG SMTP: Found extension "XSHADOW", arg ""

DEBUG SMTP: Attempt to authenticate using mechanisms: NTLM

DEBUG SMTP: AUTH NTLM failed

Exception in thread "main" java.lang.RuntimeException: javax.mail.AuthenticationFailedException: 250-exchange_host.MyDomain.com Hello [xx.xx.xx.xx]

at testPakcage.Main.main(Main.java:51)

Caused by: javax.mail.AuthenticationFailedException: 250-exchange_host.MyDomain.com Hello [xx.xx.xx.xx]

请帮我,我过去几天搜索解决方案,但我什么也没找到

+0

你检查了这个问题吗? http://stackoverflow.com/questions/4337812/javamail-ntlm-authentication-failure –

+0

@epoch:是的,我做了,它没有相同的东西,在这个例子中我使用smtp协议,在另一个他使用imap协议和LOGIN机制:“DEBUG SMTP:检查机制:LOGIN PLAIN DIGEST-MD5 NTLM AUTH LOGIN” –

+0

根据交换配置,可能需要在DOMAIN \ username表格中指定用户名 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值