我正在尝试使用javamail和smtp发送邮件。当我从我的Gmail地址发送邮件时,它对我有用。我更改了相同的代码以从我的交换帐户发送,但它无法正常工作。我收到身份验证失败例外。
代码
public class GmailSender extends javax.mail.Authenticator {
private String mailhost = "smtp.company.com";
private String user;
private String password;
private Session session;
static {
Security.addProvider(new JSSEProvider());
}
public GmailSender(String user, String password) {
this.user = user;
this.password = password;
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", mailhost);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.socketFactory.class",
"com.example.javamailtestpreetha.AlwaysTrustSSLContextFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.quitwait", "false");
session = Session.getInstance(props, new GMailAuthenticator(user, password));
// session = Session.getDefaultInstance(props, this);
}
我尝试使用默认端口,即25,那时我收到错误指示错误的端口号。所以我假设端口号是正确的。我试过ping主机及其工作。我尝试过的用户名domain/username, username, username@company.com
。但总是得到同样的例外。请帮我解决这个问题。
提前致谢
我设置调试并得到以下日志。它告诉不正确的身份验证数据。我确定我的登录名和密码是正确的。谁能帮助我如何输入用户名?
是username
还是domain\username
或domain/username
还是username@mycompanyaddress.com
还是其他什么?我怀疑这可能是一个问题。
我尝试添加props.put("mail.imap.auth.plain.disable", "true");
但未能使用相同的错误
01-29 17:50:46.958:I / System.out(3898):220-mycompany.servername.com ESMTP Exim 4.80#2星期二,2013年1月29日16:50:51 +0300 01-29 17:50:46.958:I / System.out(3898):220 - 我们不授权使用 这个系统运输不请自来,01-29 17:50:46.958: I / System.out(3898):220和/或批量电子邮件。 01-29 17:50:46.962: I / System.out(3898):DEBUG SMTP:连接到主机 “smtp.mail.mycompany.com”,端口:465 01-29 17:50:46.962: I / System.out(3898):EHLO localhost 01-29 17:50:46.989: I / StatusBarPolicy(218):onSignalStrengthsChanged 01-29 17:50:47.220: I / System.out(3898):250-mycompany.servername.com Hello localhost [80.227.5.70] 01-29 17:50:47.220:I / System.out(3898):250-SIZE 52428800 01-29 17:50:47.220:I / System.out(3898):250-8BITMIME 01-29 17:50:47.220:I / System.out(3898):250-PIPELINING 01-29 17:50:47.220: I / System.out(3898):250-AUTH PLAIN LOGIN 01-29 17:50:47.220: I / System.out(3898):250 HELP 01-29 17:50:47.224:I / System.out(3898): DEBUG SMTP:找到扩展名“SIZE”,arg“52428800”01-29 17:50:47.224: I / System.out(3898):DEBUG SMTP:找到扩展名“8BITMIME”,arg“” 01-29 17:50:47.224:I / System.out(3898):DEBUG SMTP:找到扩展名 “PIPELINING”,arg“”01-29 17:50:47.228:I / System.out(3898):DEBUG SMTP:找到扩展名“AUTH”,arg“PLAIN LOGIN”01-29 17:50:47.228: I / System.out(3898):DEBUG SMTP:找到扩展名“HELP”,arg“”01-29 17:50:47.228:I / System.out(3898):DEBUG SMTP:尝试进行身份验证 01-29 17:50:47.228:I / System.out(3898):AUTH LOGIN 01-29 17:50:47.552: I / System.out(3898):334 VXNlcm5hbWU6 01-29 17:50:47.552: I / System.out(3898):ZmZoY1xwc3VyYWo = 01-29 17:50:48.404: I / StatusBarPolicy(218):onSignalStrengthsChanged 01-29 17:50:49.806: I / System.out(3898):535验证数据不正确**
答案 0 :(得分:0)
尝试启用session debugging。也许协议跟踪将提供更多线索。
如果您使用的是Exchange 2007,则可能会遇到JavaMail wiki中描述的AUTH = PLAIN错误。