Spring的javaMail邮件发送(带附件)

时间:2022-09-24 09:17:03

项目中经常用到邮件功能,在这里简单的做一下笔记,方便日后温习。

首先需要在配置文件jdbc.properties添加:

#------------ Mail ------------
mail.smtp.auth=true
mail.smtp.timeout=25000
mail.smtp.starttls.enable=false

二、配置applicationContext.xml文件

<!-- 邮件发送 -->
    <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="javaMailProperties">
            <props>
                <!-- SMTP服务器是否需要用户认证,默认为false -->
                <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
                <!-- I/O连接超时时间,单位为毫秒,默认为永不超时 -->
                <prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
                <!-- starttls验证 -->
                <prop key="mail.smtp.starttls.enable">${mail.smtp.starttls.enable}</prop>
            </props>
        </property>
    </bean>

三、在ServiceImpl声明注入

    @Resource(name = "javaMailSender")     private JavaMailSenderImpl javaMailSender;

四、方法的调用

try {
            javaMailSender.setHost("smtp.163.com");
            javaMailSender.setPort(25);
            javaMailSender.setUsername("test_mail@163.com");// 邮箱账号
            javaMailSender.setPassword("123456");// 密码
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, false, "utf-8");
            mimeMessageHelper.setFrom(MimeUtility.encodeWord("test_mail@163.com"));// 发送人
            mimeMessageHelper.setSubject("邮件标题");// 邮件标题
            mimeMessageHelper.setTo("12345678@qq.com");// 收件人
            //mimeMessageHelper.setText("邮件内容", false);// 邮件内容,第二个参数表示是否发送的是HTML格式,true表示是,false表示否
            // 添加邮件正文
            MimeMultipart multipart = new MimeMultipart();
            BodyPart contentPart = new MimeBodyPart();
            contentPart.setContent("这里是邮件内容,测试邮件内容。", "text/html;charset=UTF-8");
            multipart.addBodyPart(contentPart);
            // 添加附件
            String[] paths = { "D:\\1024.png", "D:\\text.txt" };
            for (String filePath : paths) {
                MimeBodyPart part = new MimeBodyPart();
                FileDataSource fds = new FileDataSource(filePath);
                part.setFileName(MimeUtility.encodeWord(fds.getName()));// MimeUtility.encodeWord文件名解决中文乱码
                part.setDataHandler(new DataHandler(fds));
                multipart.addBodyPart(part);
            }
            mimeMessage.setContent(multipart);

            javaMailSender.send(mimeMessage);//发送

        } catch (MessagingException e) {
            e.printStackTrace();
        }

 注:所需包 activation.jar、mail-1.4.4.jar、spring.jar