javaMail邮件发送功能主要用于发送邮件给用户,起到提醒或者邮件验证功能,本javaMail发送邮件demo可以发送html,附件等,发送方为126邮件服务器,你也可以使用163,qq邮件服务器。
1:新建一个java项目,在lib中加入mail.jar这个jar包,如果你是maven项目,可以在pom.xml中加入javaMail maven依赖。
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4</version> </dependency>
2.新建一个类,本人将javamail写在了main函数里,用于简单的演示,整个代码如下,很简单。
//演示javamail发带有附件的邮件 public class Demo3 { public static void main(String[] args) throws Exception { //1.Session类: 用于建立程序和服务器的连接 /** * 参数一:配置信息 如:连接的服务器 验证方式 * */ Properties prop = new Properties(); //发送邮件的服务器的地址 prop.setProperty("mail.host", "smtp.126.com"); //是否需要验证登录 prop.setProperty("mail.smtp.auth", "true"); //Authenticator:用于对用户名和密码进行加密 Session session = Session.getDefaultInstance(prop,new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("ericxu_12345@126.com","ericxxx"); } }); //开启debug功能:为了查看整个邮件发送的过程 session.setDebug(true); //2.MimeMessage类: 封装一封邮件内容 MimeMessage mail = new MimeMessage(session); //2.1 发件人 mail.setFrom(new InternetAddress("ericxu_12345@126.com")); // 和登录的用户名保持一致 //2.2 收件人 /** * 参数一:收件类型 * TO : 发送 * CC: 抄送 * BCC: 密送 * A -> B(TO) -> C(CC) -> D(BCC) * 1)BCD都能收到邮件 * 2)B和C互相能看到对方收到邮件,但是B和C看不到D收到邮件 */ mail.setRecipient(RecipientType.TO, new InternetAddress("ericxu_12345@163.com")); //2.3 主题 mail.setSubject("这是javamail的带附件的邮件2"); //创建一个附件: MimeBodyPart对象 MimeBodyPart bodyPart1 = new MimeBodyPart(); //添加一个文件 bodyPart1.attachFile(new File("c:/mm.jpg")); MimeBodyPart bodyPart2 = new MimeBodyPart(); //添加一个文件 bodyPart2.attachFile(new File("c:/employee.xml")); //有了附件之后,正文也是一个MimeBodyPart MimeBodyPart bodyPart3 = new MimeBodyPart(); //添加html正文 bodyPart3.setContent("<font color='red'>这是正文</font>", "text/html;charset=utf-8"); //纯文本正文 //bodyPart3.setContent("这是邮件的正文内容", "text/plain;charset=utf-8"); //创建一个MimeMultipart对象,用于封装多个附件对象 MimeMultipart multipart = new MimeMultipart(); //注意:正文一定是方法第一个!!!!(0代表第一个) multipart.addBodyPart(bodyPart3,0); multipart.addBodyPart(bodyPart1,1); multipart.addBodyPart(bodyPart2,2); //把MimeMultipart放入MimeMessage mail.setContent(multipart); //3.Transport类:发送一封邮件 Transport.send(mail); } }
如果你的javaMail邮件发送方为qq或者163,只需要将上面的邮件服务器地址改一下,例如使用qq邮件服务器,就将上面代码中prop.setProperty("mail.host", "smtp.126.com")方法中的"smtp.126.com"改成"smtp.qq.com"就ok了。