一.导入jar包:
将mail.jar和activation.jar导入到项目中(eclipse中:点击项目名,鼠标右键-->Build Path-->Configure Build Path-->Libraries-->Add External JARs)
注:以上是针对JavaSE的环境,如果是JavaEE环境则不需要,j2ee.jar中包含了上述两个依赖包,可以直接使用。
二.邮件发送关键代码
(1)新建Properties属性对象:
Properties properties = new Properties(); properties.put("mail.smtp.host", smtpServer); properties.put("mail.smtp.auth", "true");
(2)获取Session会话:
Session session = Session.getInstance(properties); //session.setDebug(true);
(3)创建Message消息对象以及相关配置:
MimeMessage message = new MimeMessage(session); try { //发件人 Address address = new InternetAddress(from); message.setFrom(address); //收件人 for(String toAd : to){ Address toAddress = new InternetAddress(toAd); message.setRecipient(MimeMessage.RecipientType.TO, toAddress); //设置收件人,并设置其接收类型为TO /** * TO:代表有健的主要接收者。 * CC:代表有健的抄送接收者。 * BCC:代表邮件的暗送接收者。 * */ } //主题 message.setSubject(changeEncode(subject)); //时间 message.setSentDate(new Date()); Multipart multipart = new MimeMultipart(); //添加文本 BodyPart text = new MimeBodyPart(); text.setText(content); multipart.addBodyPart(text); //添加附件 for(String fileName : attachmentNames){ BodyPart adjunct = new MimeBodyPart(); FileDataSource fileDataSource = new FileDataSource(fileName); adjunct.setDataHandler(new DataHandler(fileDataSource)); adjunct.setFileName(changeEncode(fileDataSource.getName())); multipart.addBodyPart(adjunct); } //清空收件人集合,附件集合 to.clear(); attachmentNames.clear(); message.setContent(multipart); message.saveChanges(); } catch (Exception e) { e.printStackTrace(); return false; }
注:1.这里的收件人to是一个String集合,以实现群发目的
2.里面有返回值是因为我把发送邮件的代码放在了public boolean sendMail(){}中,通过返回值判断是否已发送成功。下面我会把完整代码放在附件中供大家参考
(4)用Session会话得到Transport对象以及发送邮件
try { Transport transport = session.getTransport("smtp"); //用SMTP服务器地址以及用户名和密码连接SMTP服务器 transport.connect(smtpServer,username,password); //发送邮件 transport.sendMessage(message, message.getAllRecipients()); transport.close(); } catch (Exception e) { e.printStackTrace(); return false; }
三.测试代码
public static void main(String[] args) { SendMail sendMail = new SendMail(); sendMail.setSmtpServer("smtp.qq.com"); sendMail.setUsername("[email protected]"); sendMail.setPassword("youpassword"); sendMail.setFrom("[email protected]"); sendMail.addTo("[email protected]"); // sendMail.addTo("[email protected]"); sendMail.setSubject("邮件标题测试"); sendMail.setContent("Hi,JavaMail.\n你好"); // sendMail.addAttachmentNames("C:\\Users\\Administrator\\Desktop\\JavaMail 使用参考.txt"); sendMail.addAttachmentNames("C:/Users/Administrator/Desktop/测试.txt"); // sendMail.addAttachmentNames("C:/Users/Administrator/Desktop/加密与解 密.pdf"); if(sendMail.sendMail()){ System.out.println("邮件发送成功"); } }
附:
1. JavaMail 1.4.7 jar包官方下载地址是:http://www.oracle.com/technetwork/java/index-138643.html
2. JAF 1.1.1 jar包官方下载地址是:http://www.oracle.com/technetwork/java/javase/downloads/index-135046.html
3. 我已经下载好的上面的两个jar包以及我练习javamail所写的源代码放在了附件中,需要的可以参考下