package com.xiaozhi.email;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class SendEmail2 {
public static void main(String[] args) throws Exception, NoSuchProviderException {
Properties props = new Properties();
props.setProperty("mail.host", "smtp.sina.com");
props.setProperty("mail.transport.protocol", "smtp");
// props.setProperty("mail.auth", "true");
Session session = Session.getInstance(props);
session.setDebug(true);//发送过程打到控制台
//1、得到发送邮件的对象
Transport ts = session.getTransport();
//2、连接服务器
ts.connect("smtp.sina.com", "xxxx", "xxxx");//邮箱名,密码
//3、创建邮件
MimeMessage message = makeMessage(session);
//4、发送邮件
ts.sendMessage(message, message.getAllRecipients());
//5、关闭邮件发送对象
ts.close();
}
private static MimeMessage makeMessage(Session session) throws Exception{
MimeMessage message = new MimeMessage(session);//创建了一封邮件
message.setFrom(new InternetAddress("xxxx@sina.com"));//设置发件人
message.setRecipients(Message.RecipientType.TO,"xxxx@sina.com");//设置收件人的邮箱
message.setSubject("这是一封邮件");
//创建正文:文本
MimeBodyPart text = new MimeBodyPart();
text.setContent("你好中国", "text/html;charset=UTF-8");
//描述两者之间的关系
MimeMultipart mmp = new MimeMultipart();
mmp.addBodyPart(text);
message.setContent(mmp);//加到邮件对象中取
message.saveChanges();//邮件就创建出来了
return message;
}
}
------解决方案--------------------
最近,公司也有了这个这个需求,需要在页面上嵌入邮件发送的功能,我实现了下,基本上除了免费QQ邮箱不稳定外,其余的新浪等常用邮箱都测通了。
错误提示是需要验证,
首先需要 “// props.setProperty("mail.auth", "true");”这句话写上,不要注掉。
其次,将使用的发邮件的邮箱进行设置:登进你使用的发件邮箱,进入"更多设置"中的“账户”,在“POP3/SMTP服务”中选择“开启”,即授予该账户使用smtp协议。
这样应该就可以了,不行的话,就是代码的问题了