如何解决无法使用javamail和zimbra服务器发送电子邮件
我尝试使用javamail向Zimbra服务器发送电子邮件,但始终收到错误客户端主机被拒绝:访问被拒绝
这是我的Java代码:
public class TestMail {
public static void main(String[] args) throws MessagingException {
// provide recipient's email ID
String to = "other_email@domain.com";
// provide sender's email ID
String from = "admin@domain.com";
// provide username
final String username = "admin@domain.com";
// provide password
final String password = "password-here";
// provide host address
String host = "mail.domain.com";
// configure SMTP server details
Properties props = new Properties();
props.put("mail.smtp.auth","true");
// setting starttls
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host",host);
props.put("mail.smtp.port","587");
// create the Session object
Session session = Session.getInstance(props,new javax.mail.Authenticator() {
protected PasswordAuthentication getpasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
try {
// create a MimeMessage object
Message message = new MimeMessage(session);
// set From email field
message.setFrom(new InternetAddress(from));
// set To email field
message.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
// set email subject field
message.setSubject("Here comes Jakarta Mail!");
// set the content of the email message
message.setText("Just discovered that Jakarta Mail is fun and easy to use");
// send the email message
// Transport.send(message);
Transport tr = session.getTransport("smtp");
tr.connect(host,username,password);
message.saveChanges();
tr.sendMessage(message,message.getAllRecipients());
tr.close();
System.out.println("Email Message Sent Successfully");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
我认为这是错误的,因为似乎Java代码没有发送 AUTH PLAIN ,但是我不知道为什么,也许我忘记了配置属性?
但是使用nodejs代码,然后电子邮件成功发送 AUTH PLAIN
调试日志:
DEBUG: Jakarta Mail version 1.6.5
DEBUG: successfully loaded resource: /meta-inf/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {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,com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle]}
DEBUG: Providers Listed By Protocol: {imap=javax.mail.Provider[STORE,smtp=javax.mail.Provider[TRANSPORT,pop3=javax.mail.Provider[STORE,imaps=javax.mail.Provider[STORE,smtps=javax.mail.Provider[TRANSPORT,pop3s=javax.mail.Provider[STORE,Oracle]}
DEBUG: successfully loaded resource: /meta-inf/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,Oracle]
DEBUG SMTP: useEhlo true,useAuth true
DEBUG SMTP: trying to connect to host "mail.domain.com",port 587,isSSL false
220 mail.domain.com ESMTP Postfix
DEBUG SMTP: connected to host "mail.domain.com",port: 587
EHLO Admin
502 5.5.2 Error: command not recognized
HELO Admin
250-mail.domain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
DEBUG SMTP: use8bit false
MAIL FROM:<admin@mitc.vn>
250 mail.domain.com
RCPT TO:<other_email@domain.com>
250 2.1.0 Ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP: other_email@domain.com
DATA
554 5.7.1 <unkNown[xxx.xxx.xx.xx]>: Client host rejected: Access denied
DEBUG SMTP: got response code 554,with response: 554 5.7.1 <unkNown[xxx.xxx.xx.xx]>: Client host rejected: Access denied
RSET
554 5.5.1 Error: no valid recipients
DEBUG SMTP: MessagingException while sending,THROW:
com.sun.mail.smtp.SMTPSendFailedException: 554 5.7.1 <unkNown[xxx.xxx.xx.xx]>: Client host rejected: Access denied
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2374)
at com.sun.mail.smtp.SMTPTransport.data(SMTPTransport.java:2080)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1300)
at test2.TestMail.main(TestMail.java:74)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。