package reedfan.mail; import java.util.Properties; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.Message.RecipientType; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.junit.Test; public class SendMailDemo { //发一封最简单的邮件 @Test public void sendMail() throws Exception{ //第一步:声明properties对象放信息 Properties prop = new Properties(); //设置连接哪一台服务器 prop.setProperty("mail.host","smtp.163.com"); //设置是否验证 prop.setProperty("mail.smtp.auth", "true"); //第二步:声明用户名和密码 Authenticator auth = new Authenticator() { //此访求返回用户和密码的对象 public PasswordAuthentication getPasswordAuthentication() { PasswordAuthentication pa = new PasswordAuthentication("m18915228146", "XXXX");//用户名和密码 return pa; } }; ////第二步:获取Session对象 Session session = Session.getDefaultInstance(prop,auth); //设置session的调试模式 session.setDebug(true); //第三步:声明信息 MimeMessage mm1 = new MimeMessage(session); //第四步:设置发件人email Address from = new InternetAddress("m18915228146@163.com"); mm1.setFrom(from); //第五步:设置收件人 mm1.setRecipient(RecipientType.TO, new InternetAddress("1617950759@qq.com")); //第六步:设置主题 mm1.setSubject("aaaaaa"); mm1.setContent("bbbbbb", "text/plain"); //第七步: Transport.send(mm1); } } 
需导入的jar包junit.jar    activation.jar   mail.jar

可能遇到的问题

当传入发送邮箱正确的用户名和密码时,总是收到到:550 User has no permission这样的错误,

其实我们用Java发送邮件时相当于自定义客户端根据用户名和密码进行登录,然后使用SMTP服务发送邮件。但新注册的163邮件默认是不开启客户端授权验证的(对自定的邮箱大师客户端默认开启),

因此登录总是会被拒绝,验证没有权限。解决办法是进入163邮箱,进入邮箱中心——客户端授权密码,选择开启即可,如下截图