Spring Email发送(一)

本文介绍Spring+Java Mail发送邮件。

本文章默认已搭建好Spring框架,故只介绍Spring Email模块。

<!-- 引入java mail包 -->
<dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.6.0</version>
</dependency>
简要介绍
1.MailSender:Spring Email使用MailSender连接Email服务器实现邮件发送
2.**发件人必须和连接Email服务器账号一致**

配置MailSender为Spring bean:

@Configuration
@ComponentScan
@PropertySource("classpath:config.properties")
public class PiperBeanFactory {
    @Value("${mail.smtp.host}")
    private String smtpHost;
    @Value("${mail.smtp.port}")
    private int smtpPort;
    @Value("${mail.username}")
    private String mailUserName;
    @Value("${mail.password}")
    private String mailPass;
    @Value("${mail.security}")
    private boolean security;
    @Bean
    public JavaMailSender getJavaMailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); //MailSender实现类
        mailSender.setHost(smtpHost); //主机
        mailSender.setPort(smtpPort); //端口
        mailSender.setUsername(mailUserName); //账号
        mailSender.setPassword(mailPass); //密码
        if (security) {
            Properties props = new Properties(); 
            props.put("mail.smtps.auth", "true"); //是否需要身份认证
            props.put("mail.smtp.ssl.enable", "true"); //采用ssl加密
            props.put("mail.transport.protocol", "smtps"); //协议
            mailSender.setJavaMailProperties(props);
        }
        return mailSender;
    }
}

config.properties:

mail.username=58257045@qq.com
mail.password=egupdmxgztilbfah
mail.smtp.host=smtp.qq.com
mail.smtp.port=465
mail.security=true

创建简单文本Email(SimpleMailMessage):

 public static SimpleMailMessage createSimpleMessage(){
        // 建立邮件消息
        SimpleMailMessage mailMessage = new SimpleMailMessage();
        // 设置收件人,寄件人 用数组发送多个邮件
        // String[] array = new String[] {"sun111@163.com","sun222@sohu.com"};
        // mailMessage.setTo(array);
        mailMessage.setTo("xxx@qq.com");
        mailMessage.setFrom("xxx@qq.com");
        mailMessage.setSubject(" 测试简单文本邮件发送! ");
        mailMessage.setText(" 测试我的简单邮件发送机制!! ");
        return mailMessage;
    }

创建带复杂Email(MimeMessage):
由于javax.mail.internet.MimeMessage的API过于笨重,Spring提供MimeMessageHelper组装Email消息

 public MimeMessage createMixedMessage(JavaMailSender javaMailSender) throws MessagingException {
        // 建立邮件消息,发送简单邮件和html邮件的区别
        MimeMessage mailMessage = javaMailSender.createMimeMessage();
        // true代表采用multipart模式
        MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,
                true);
        // 设置收件人,寄件人
        messageHelper.setTo("582547045@qq.com");
        messageHelper.setFrom("582547045@qq.com");
        messageHelper.setSubject("复杂邮件,带嵌套图片和附件");
        // true 表示启动HTML格式的邮件
        messageHelper.setText(
                "<html><head></head><body><h1>hello!</h1>"
                        + "<img src=\"cid:a\"/></body></html>", true);
        FileSystemResource img = new FileSystemResource(new File("xxx"));
        messageHelper.addInline("a", img);//使用addInline添加嵌套图片(第一个参数需要和cid指定的名称一致)
        messageHelper.addAttachment("xxx.jpg", img);//添加附件
        return mailMessage;
    }

测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = PiperBeanFactory.class)
public class MailTest {
    @Autowired
    private JavaMailSender javaMailSender;
    @Test
    public void sendHtmlMail() throws MessagingException {
        SimpleMailMessage simpleMailMessage = createSimpleMessage();
        MimeMessage mimeMessage =  createMixedMessage(javaMailSender);
        javaMailSender.send(simpleMailMessage);
        javaMailSender.send(mimeMessage);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Framework中提供了一个邮件发送的API:JavaMailSender。使用该API可以方便地发送邮件。 首先,需要在Spring配置文件中配置JavaMailSender: ``` <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="your.smtp.server.host" /> <property name="port" value="your.smtp.server.port" /> <property name="username" value="your.username" /> <property name="password" value="your.password" /> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">true</prop> <prop key="mail.smtp.ssl.trust">your.smtp.server.host</prop> </props> </property> </bean> ``` 接下来,可以使用JavaMailSender发送邮件: ``` @Autowired private JavaMailSender mailSender; public void sendEmail() { SimpleMailMessage message = new SimpleMailMessage(); message.setTo("recipient@example.com"); message.setSubject("Test Email"); message.setText("This is a test email"); mailSender.send(message); } ``` 可以使用MimeMessage替代SimpleMailMessage来发送包含附件和HTML内容的邮件: ``` @Autowired private JavaMailSender mailSender; public void sendEmailWithAttachment() throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo("recipient@example.com"); helper.setSubject("Test Email With Attachment"); helper.setText("<html><body><h1>This is a test email with attachment</h1></body></html>", true); helper.addAttachment("attachment.txt", new ClassPathResource("attachment.txt")); mailSender.send(message); } ``` 以上代码示例中,需要将“your.smtp.server.host”、“your.smtp.server.port”、“your.username”和“your.password”替换为实际的SMTP服务器信息和件人的用户名和密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值