0

我正在尝试使用 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。但总是得到同样的例外。请帮我解决这个问题。

提前致谢

我设置调试并得到以下日志。它告诉不正确的身份验证数据。我确定我的登录名和密码是正确的。谁能帮我输入用户名?

usernamedomain\username还是domain/usernameusername@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):调试 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 你好本地主机 [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-流水线 01-29 17:50:47.220:I/System。

4

1 回答 1

0

尝试打开会话调试。也许协议跟踪会提供更多线索。

如果您使用的是 Exchange 2007,您可能会遇到JavaMail wiki上描述的 AUTH=PLAIN 错误。

于 2013-01-29T18:30:03.067 回答