关于java mail 邮件发送的使用,在此记录。
1、java mail中邮件发送需要使用两个包 : javax.mail包 和javax.activation包
在maven中只需要添加
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency>
2、案例使用的是qq邮箱:
第一步。填写properties参数
Properties properties = new Properties(); properties.setProperty("mail.host", "smtp.qq.com"); properties.setProperty("mail.transport.protocol", "smtp"); properties.setProperty("mail.smtp.auth", "true"); properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); properties.setProperty("mail.smtp.port", "465"); properties.setProperty("mail.smtp.socketFactory.port", "465");
第二步。创建一个连接邮件服务器的session
在qq邮箱中需要打开smtp服务,点击生成授权码,拿到授权码后,作为下面的密码,连接邮件服务器
Session session = Session.getInstance(properties,new Authenticator() { /** * @see javax.mail.Authenticator#getPasswordAuthentication() * @return */ @Override protected PasswordAuthentication getPasswordAuthentication() { //第一个参数代表邮箱的用户名,如果是163邮箱,则是******@163.com //第二个参数代表密码。在qq邮箱中,需要填写的是一个授权码 return new PasswordAuthentication("********@qq.com", "********"); } });
第三步。创建邮件 ,具体操作在后面
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 //使用邮箱的用户名和密码连接上stmp邮件服务器 //xcubkzuvdmtabeag MimeMessage message = createImageMail(session); 第四步,发送邮件 Transport.send(message);
创建邮件
/** * @param session * 创建一个简单的邮件 */ private static MimeMessage createSimpleMail(Session session) { //创建邮件对象 MimeMessage message = new MimeMessage(session); //指明发件人 try { message.setFrom(new InternetAddress("648424415@qq.com")); //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发 message.setRecipient(Message.RecipientType.TO, new InternetAddress("648424415@qq.com")); //设置主题 message.setSubject("我是一个简单的标题"); //设置内容 message.setContent("你好呀,我是一个正儿八经的邮件内容","text/html;charset=UTF-8"); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } return message; } /** * 创建一封包含图片的邮件 * @param session * @return * @throws Exception */ public static MimeMessage createImageMail(Session session) throws Exception { MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("********@qq.com")); message.setRecipient(RecipientType.TO,new InternetAddress("********@qq.com")); //标题 message.setSubject("我是一个封图片的邮件"); //准备邮件数据 multipart代表了邮件的所有数据 //后面的文本,附件都是添加到multipart中,再一起添加到message中 Multipart multipart = new MimeMultipart(); //multipart中的一个文本part MimeBodyPart text = new MimeBodyPart(); //关于cid //图片在邮件中其实是作为一个附件发送,cid就是附件的一个标识。 //这里指明cid:xt.jpg 对应后面是指定的contentID text.setContent("这是一封邮件正文带图片<img src=cid:xt.jpg", "text/html;charset=UTF-8"); //multipart中的一个图片part MimeBodyPart image = new MimeBodyPart(); image.setDataHandler(new DataHandler(new FileDataSource("src//xt.jpg"))); image.setContentID("xt.jpg"); multipart.addBodyPart(text); multipart.addBodyPart(image); message.setContent(multipart); return message; }