JavaMail是java提供的一组API,用来发送和接收邮件。
相关协议:
smtp(简单的邮件传输协议),服务器端口为25,用于发送邮件
pop3(邮局协议第3版),服务器端口为110,用于接收邮件
进行发邮件之前,首先需要导包:mail.jar和 activation.jar
使用JavaMail进行发送邮件,共分为三步:
1.获取Session
获取Session对象后,意味着你与服务器已经建立了连接。
/** * 1.得到session */ Properties props = new Properties(); props.setProperty("mail.host", "smtp.163.com"); //设置服务器 props.setProperty("mail.smtp.auth", "true"); //设置需要验证 Authenticator auth = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("用户名", "密码"); //设置用户名和密码 } }; Session session = Session.getInstance(props, auth);
2. 创建MimeMessage对象
它表示一个邮件对象,你可以调用它的各种方法来设置发件人、设置收件人、设置主题以及正文。
/** * 2.创建MimeMessage对象 */ MimeMessage mig = new MimeMessage(session); mig.setFrom(new InternetAddress("username@163.com")); //设置发信人 mig.addRecipients(RecipientType.TO, "receive@163.com");//设置个收信人 mig.setSubject("主题"); //设置主题 mig.setContent("正文内容", "text/html;charset=utf-8");
3.发送邮件
TransPort, 它只有一个功能,发邮件。
/** * 3.发送邮件 */ Transport.send(mig);
上述三步可以发送普通邮件,对于带附件的邮件它就无能为力了。如果想发送带附件的邮件,需要引入MimeMultipart和MimeBodyPart。
MimeMultipart是一个集合,用来装载多个主体部件。MimeBodyPart是主体部件,我们需要创建两个主体部件,一个是文本内容的,另一个是附件的。
第一步和第三步不需要修改,仅需要修改第二步。
//创建MimeMessage对象 MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress("username@163.com")); //设置发件人 msg.addRecipients(RecipientType.TO, "receive@163.com"); //设置收件人 msg.setSubject("主题"); // 设置附件 MimeMultipart list = new MimeMultipart(); //创建多部件 /** * 设置正文 */ MimeBodyPart part1 = new MimeBodyPart(); part1.setContent("正文", "text/html;charset=utf-8"); list.addBodyPart(part1); /** * 设置附件 */ MimeBodyPart part2 = new MimeBodyPart(); part2.attachFile(new File("文件路径")); //添加附件 part2.setFileName(MimeUtility.encodeText("附件名称") ); //设置附件名称 list.addBodyPart(part2); //添加到邮件中 msg.setContent(list);