java通过javamail进行邮件发送(带文件附件) |
您所在的位置:网站首页 › 如何将word通过邮箱发送到邮箱中心 › java通过javamail进行邮件发送(带文件附件) |
spring mvc版本
jar包
通过maven引入jar包 1.5.0-b01 javax.mail mail ${javax.mail.version}引入成功后,就可以在代码里面引入 java代码 import lombok.Getter; import lombok.Setter; import lombok.ToString; import java.util.List; /** * @Project xiangweihui * @PackageName com.xiangweihui.core.bean * @ClassName SendEmailMessageBean * @Author jiahong.xing * @Date 2019/7/19 11:44 * @Description 发送邮件对象 */ @ToString @Getter @Setter public class SendEmailMessageBean { //发送地址 private String toMail; //标题 private String title; //发送内容 private String cont; //文件对象 private List fileList; //发送备注/作用 private String info; public SendEmailMessageBean() { } public SendEmailMessageBean(String toMail, String title, String cont, String info) { this.toMail = toMail; this.title = title; this.cont = cont; this.info = info; } }文件对象 import lombok.Getter; import lombok.Setter; import java.io.File; /** * @Project suishoukai-invoice * @PackageName com.suishoukai.invoice.core.bean * @ClassName EmailFileBean * @Author jiahong.xing * @Date 2019/5/6 17:57 * @Description 邮件文件对象 */ @Getter @Setter public class EmailFileBean { //名称 private String name; //文件 private File file; }发送邮件核心代码 /** * 根据所有信息发送邮件,支持代理,直接发送,不异步 * * @return */ public static void sendEmail(SendEmailMessageBean sendEmailMessageBean) { //发送地址 String toMail = sendEmailMessageBean.getToMail(); //标题 String title = sendEmailMessageBean.getTitle(); //发送内容 String cont = sendEmailMessageBean.getCont(); // 2017.5.24因为不支持代理改变写法 if (!RegularUtil.testByRegular(toMail, RegularUtil.email_verify)) { throw new Exceptions("邮件地址格式错误:" + toMail); } EmailSetting emailSetting = SettingUtil.getEmailSetting(); //SMTP服务器地址 String smtpHost = emailSetting.getSmtpHost(); //SMTP服务器地址(端口) String smtpPort = emailSetting.getSmtpPort(); //发件人 String smtpFromMail = emailSetting.getSmtpFromMail(); //SMTP用户名 String smtpUsername = emailSetting.getSmtpUsername(); //SMTP密码 String smtpPassword = emailSetting.getSmtpPassword(); MimeMessage mimeMessage = javaMailSender.createMimeMessage(); try { javaMailSender.setHost(smtpHost); javaMailSender.setPort(Integer.parseInt(smtpPort)); javaMailSender.setUsername(smtpUsername); javaMailSender.setPassword(smtpPassword); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8"); mimeMessageHelper.setFrom(MimeUtility.encodeWord(emailSetting.getEmail_name()) + " "); mimeMessageHelper.setSubject(title); mimeMessageHelper.setTo(toMail); //处理文件 if (CollectionUtils.isNotEmptyCollection(sendEmailMessageBean.getFileList())) { for (EmailFileBean emailFileBean : sendEmailMessageBean.getFileList()) { mimeMessageHelper.addAttachment(emailFileBean.getName(), emailFileBean.getFile()); } } mimeMessageHelper.setText(cont, true); log.info("向" + toMail + "发送了一封邮件,标题为:" + title + ",内容为:" + cont); javaMailSender.send(mimeMessage); } catch (Exception e) { e.printStackTrace(); } }这里可以用异步线程或者mq消息异步发送 效果 已完成了邮件发送 springboot版本 需要在Configuration里进行spring注入即可注入同时加入了静态引用 @Bean public JavaMailSender javaMailSender() { JavaMailSender javaMailSender = new JavaMailSenderImpl(); Properties javaMailProperties = new Properties(); javaMailProperties.setProperty("mail.smtp.auth", "true"); javaMailProperties.setProperty("mail.smtp.timeout", "5000"); javaMailProperties.setProperty("mail.smtp.starttls.enable", "false"); javaMailProperties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); ((JavaMailSenderImpl) javaMailSender).setJavaMailProperties(javaMailProperties); return javaMailSender; } @PostConstruct public void init() { //邮件 JavaMailSenderImpl javaMailSender = (JavaMailSenderImpl) javaMailSender(); EmailUtil.javaMailSender = javaMailSender; }调用java代码和上面保持一致的 可以进行线程异步发送和mq消息发送,这两个的使用见以后的文章 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |