迷恋上了邮件系统,故想着自己做个java版的邮件系统玩玩。本身smtp和pop协议都是很好理解的,本域的邮件发送问题也很快解决了,当到了测试发送外网邮件时就遇到麻烦了,只好先写个简单的来测试,但是错误信息始终是令人费解的。
发送代码:
public class javamail {
public static void main(String[] args) throws AddressException,
MessagingException {
Properties mailpro = new Properties();
mailpro.setProperty("mail.smtp.host", "smtp.163.com");
Session session = Session.getDefaultInstance(mailpro);
session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("fangrn@sina.com"));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress("fangrn1@126.com"));
msg.setSubject("测试免认证方式发送邮件!!!");
msg.setText("测试一下,邮件来自 Fangrn ");
Transport.send(msg);
}
}
发送的log:
DEBUG: setDebug: JavaMail version 1.3.1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "smtp.163.com", port 25
220 163.com Anti-spam GT for Coremail System (163com[20081010])
DEBUG SMTP: connected to host "smtp.163.com", port: 25
EHLO Fangrn
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1U702Iq1cx7no18twnFpTcGKas0Po18ZrZFpTcJGryayTZAdr43WS9vJo18ZrXCPTuFA-sKBj8Cz28x1UUUUU7Ic2I0Y2Ur0JcHcUCa0xDrUUUUj
250-STARTTLS
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "coremail", arg "1U702Iq1cx7no18twnFpTcGKas0Po18ZrZFpTcJGryayTZAdr43WS9vJo18ZrXCPTuFA-sKBj8Cz28x1UUUUU7Ic2I0Y2Ur0JcHcUCa0xDrUUUUj"
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: use8bit false
MAIL FROM:<fangrn@sina.com>
553 Requested action not taken: Local user only,smtp3,DdGowLAbSgQyCSBKnlSOBg--.58548S2 1243613491
QUIT
Exception in thread "main" javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.MessagingException: 553 Requested action not taken: Local user only,smtp3,DdGowLAbSgQyCSBKnlSOBg--.58548S2 1243613491
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.javamail.javamail163.main(javamail163.java:39)
从字面的意思来说好像是只能是本机的用户才能执行上述发送邮件的操作,也问了很多人,猜测应该是远程邮件服务器的反垃圾邮件设置所返回的错误信息。也极有可能是我机器的ip没有绑定邮件域名,邮件服务器的dns找不到对应的mx记录造成的。期待有遇到相关问题的朋友指点。
刚查看了一下163,126邮箱的错误信息说明,果然是我的猜测