首先导入mail.jar包并buildpath。
这个包主要用到的是 javax.mail.internet.*和 javax.mail.*的内容。
写一个连接qq的服务器(SMTP方式)的发邮件程序:
写一个静态方法sendEmail(){};
第一步:写一个properties并设置各项值等下要用:
Properties props = System.getProperties();
// 创建信件服务器
props.put("mail.smtp.host", "smtp.qq.com");//主机host,跟邮件发送者必须一致
props.put("mail.smtp.auth", "true"); // 通过验证
props.put("mail.smtp.port", "465");//加密服务端口465
props.put("mail.transport.protocol", "smtp");//方式为smtp
props.put("mail.smtp.ssl.enable", "true");//加密
//props.put("mail.debug", "true");//没什么用
创建一个会话把属性properties放进去:
Session session = Session.getDefaultInstance(props, null);
创建一个消息把会话放进去:
MimeMessage msg = new MimeMessage(session);
然后把昵称转编码加上发送邮箱,设置from:
msg.setFrom(new InternetAddress(MimeUtility.encodeText("发送人:") + "<266****[email protected]>"));
新建接受方的地址to:
InternetAddress[] address = new InternetAddress[]{"944*9@qq.com","689*8@qq.com}
将地址添加到指定的接受类型:
msg.addRecipients(Message.RecipientType.TO, address);
设置邮件主题subject:
msg.setSubject(subject);
然后设置mime类型的Multipart部分,也就是正文:
先新建:
Multipart mp = new MimeMultipart();
然后添加附件,多个附件重复多次:
MimeBodyPart mbp = new MimeBodyPart();
// 得到数据源
FileDataSource fds = new FileDataSource(filename);
// 得到附件本身并至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
// 得到文件名同样至入BodyPart
mbp.setFileName(fds.getName());
// 把这个mbp附件add进去
mp.addBodyPart(mbp);
同理,添加文本:
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(body);
mp.addBodyPart(mbp);
然后设置mp为消息正文:
msg.setContent(mp);
如果没有附件直接设置消息正文即可:
msg.setText("正文");
设置消息头的日期,更新所有并保存:
msg.setSentDate(new Date());
msg.saveChanges();
最后,连接并发送,关闭连接:
Transport transport = session.getTransport("smtp");
transport.connect(username, password);
ransport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));
transport.close();
完毕!