一、实现方法
邮箱需要先开通 SMTP 服务,以163邮箱为例,如何开启服务可以百度对应的邮箱。开启服务后就可以进行收发邮件,需要的 jar 包百度自行下载。
二、具体实现
public class MailTool {
private String mailSendHost = "smtp.163.com";
private String fromMail = "xxx@163.com";
private String toMail = "xxx@qq.com"; //接收邮件的邮箱
private String ttitle="我是标题";
private String tcontent="我是内容";
public boolean sendMail(){
try{
Properties props = new Properties();
// 发信的主机
props.put("mail.smtp.host", mailSendHost);
props.put("mail.smtp.auth", "true");
Session s=Session.getInstance(props);
s.setDebug(true);
MimeMessage message=new MimeMessage(s);
//给消息对象设置发件人/收件人/主题/发信时间
InternetAddress from=new InternetAddress(fromMail); //这里的fromMail改为您发信的邮箱
message.setFrom(from);
InternetAddress to=new InternetAddress(toMail);
message.setRecipient(Message.RecipientType.TO,to);
message.setSubject(ttitle);
message.setSentDate(new Date());
//给消息对象设置内容
//新建一个存放信件内容的BodyPart对象
BodyPart mdp=new MimeBodyPart();
//给BodyPart对象设置内容和格式/编码方式
mdp.setContent(tcontent,"text/html;charset=gb2312");
//新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
Multipart mm=new MimeMultipart();
//将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
mm.addBodyPart(mdp);
//把mm作为消息对象的内容
message.setContent(mm);
message.saveChanges();
Transport transport=s.getTransport("smtp");
// 使用账号与授权码连接邮件服务器
transport.connect(mailSendHost, "xxx@163.com", "xxx");
transport.sendMessage(message,message.getAllRecipients());
transport.close();
return true;
} catch(Exception e){
e.printStackTrace();
return false;
}
}
}
三、调用
在需要的地方调用即可,QQ邮箱好像有某些限制,刚开通 SMTP 立刻测试不成功。
网友评论