Java使用带附件的邮件代替下载
出于对服务器性能和对用户下载速度的考虑,在个人的最基础的服务器上向用户提供下载资源功能是不现实的。
但是我有确实有向他人提供和发送代码资源的需求。
虽然这个问题可以通过一些借助第三方的方式来解决,但是这样也有着一些不好的地方。
而使用带附件的邮件向他人提供资源就成了一个可行的办法,spring有着对邮件发送相关api的封装的类,使用这些类就可以在自己的网站中实现让用户自己选择资源、填写自己的邮箱,然后自动向用户的邮箱发送携带用户选择的资源的附件的邮件的功能了。
另外,发送邮件和直接下载相比还有着一些其他的功能,比如可以发送邮件验证、方便携带文字信息等。
相关功能我已经添加到了我的个人网站之中,可以通过访问【http://150.158.165.239/#/resource】来查看我这个功能的运行效果。
实现邮件发送功能我使用的是spring的JavaMailSender相关功能实现的。
具体的步骤可以通过搜索引擎搜索相关内容来查看。
实现发送功能的代码已经被spring封装地十分简单,以下是发送邮件部分的相关代码示例,其中Resource类是我自己定义的一个实体类:
@Autowired
private ResourceService service;
@Autowired
JavaMailSender javaMailSender;
@PostMapping ("/get")
public void sendEmail(@RequestParam String email,@RequestParam int resourceId) throws Exception {
MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper mineHelper = new MimeMessageHelper(message, true);
mineHelper.setFrom(ConstantTool.MY_EMAIL);
mineHelper.setTo(email);
Resource resource = service.selectById(resourceId);
mineHelper.setSubject(resource.getName());
mineHelper.setText(resource.getName(), false);
mineHelper.addAttachment(resource.getName(), new File(resource.getPath()));
javaMailSender.send(message);
}
另外在我的生产环境下,由于某些原因,application配置文件中需要添加如下这一条配置,否则邮件相关功能会出现错误。
spring.mail.properties.mail.smtp.ssl.enable=true