java发送邮件(谷歌,QQ)
导入依赖
com.sun.mail javax.mail 1.6.2
QQ和谷歌都要生成专用的密码
QQ:
开启服务

生成授权码

谷歌:
启用IMAP

开启两步验证

进入两步验证,找到应用专业密码

生成应用专业密码

业务实现(包括富文本和多个附件)
//采用QQ邮箱测试public Object send(EmailBean emailBean, HttpServletRequest request) {emailBean.setUsername("176*********@qq.com"); //发件人邮箱emailBean.setPassword("************"); //发件人授权码// 创建Properties对象,设置邮件服务器相关属性Properties props = new Properties();emailBean.setHost("smtp.qq.com"); //qq : smtp.qq.com, gmail : smtp.gmail.comemailBean.setPort("465");props.put("mail.smtp.host", emailBean.getHost());props.put("mail.smtp.port", emailBean.getPort());props.put("mail.smtp.socketFactory.port", "465");props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");props.put("mail.smtp.auth", "true");props.put("mail.smtp.ssl.enable", "true");EmailBean finalEmailBean = emailBean;Session session = Session.getInstance(props, new javax.mail.Authenticator() {protected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(finalEmailBean.getUsername(), finalEmailBean.getPassword());}});//发送给订阅者try {Message message = new MimeMessage(session);message.setFrom(new InternetAddress(emailBean.getUsername()));message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("*****@qq.com")); //收件人邮箱,其他类型的邮箱都可以发送message.setSubject(emailBean.getTitle()); //邮件主题//正文部分MimeBodyPart textPart = new MimeBodyPart();textPart.setContent(emailBean.getContent(), "text/html;charset=utf-8"); //这里设置类型为富文本//正文+附件MimeMultipart mimeMultipart = new MimeMultipart();mimeMultipart.addBodyPart(textPart);//附件部分,考虑多个附件if (CollectionUtils.isNotEmpty(files)) {for (MultipartFile file : files) {String fileName = file.getOriginalFilename();// 将文件保存到临时目录File tempFile = File.createTempFile("temp", fileName);file.transferTo(tempFile);MimeBodyPart filePart = new MimeBodyPart();// 将文件附加到邮件中filePart.attachFile(tempFile);// 设置附件的文件名filePart.setFileName(fileName);mimeMultipart.addBodyPart(filePart);}}message.setContent(mimeMultipart);Transport.send(message);} catch (MessagingException e) {e.printStackTrace();return ResponseBean.serverError("发送邮件失败");} catch (IOException e) {throw new RuntimeException(e);}return ResponseBean.success("发送成功!");}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
