package com.haohui.mail;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Demo1 {
public static void main(String[] args)throws Exception{
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol","smtp" );
Session session = Session.getInstance(props);
session.setDebug(true);
Message msg = new MimeMessage(session);
msg.setText("Hello World!!");
msg.setFrom(new InternetAddress("inhv_test@163.com"));
Transport transport = session.getTransport();
transport.connect("smtp.163.com", 25,"inhv@163.com" ,"xxx" );
transport.sendMessage(msg,new Address[]{new InternetAddress("inhv@163.com")});
transport.close();
}
}
异常如下:
RSET
Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 553 You are not authorized to send mail, authentication is required
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1668)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1207)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:735)
at cn.itcast.javamail.Demo1.main(Demo1.java:27)
250 OK
com.sun.mail.smtp.SMTPSendFailedException: 553 You are not authorized to send mail, authentication is required
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1668)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1207)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:735)
at cn.itcast.javamail.Demo1.main(Demo1.java:27)
原因分析如下:
我真实的发邮件地址是: inhv@163.com , 而我在 msg.setFrom(new InternetAddress("inhv_test@163.com")); 却设置成了另一个
而163是拒绝这样做的
而搜狐和sina却可以这样做
而没有异常
解决办法如下:
将邮件发送人的地址改成 inhv@163.com 即可