使用Spring API 实现邮件发送、发送附件、发送邮件到QQ

一、使用Spring API 实现邮件发送

这里以qq邮箱为例。

1.1 环境准备

创建 Maven 项⽬,在 pom.xml ⽂件中添加依赖

	<!--引入spring坐标依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.4.RELEASE</version>
    </dependency>

    <!--spring 上下文环境 支持-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>5.2.4.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.4.RELEASE</version>
      <scope>test</scope>
    </dependency>

    <!-- Java Mail坐标依赖 -->
    <dependency>
      <groupId>com.sun.mail</groupId>
      <artifactId>javax.mail</artifactId>
      <version>1.6.2</version>
    </dependency>

1.2 配置邮件发送 bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 开启⾃动化扫描 -->
    <context:component-scan base-package="com.shsxt" />

    <!-- 邮件发送器(提供了邮件发送接口、透明创建Java Mail的MimeMessage、及邮件发送的配置) -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.qq.com"/>
        <property name="port" value="587"/>
        <property name="defaultEncoding" value="utf-8"></property>
        <property name="username" value="1429076385"></property>
        <property name="password" value="caylifmwexpdhaje"></property>
     </bean>
    <!-- 普通文本邮件对象 -->
    <bean id="templataMessage" class="org.springframework.mail.SimpleMailMessage">
        <property name="from" value="1429076385@qq.com"></property>
        <property name="subject" value="spring_mail"/>
    </bean>
</beans>

1.3 定义接口与实现类

/**
 * 定义接口
 */
public interface OrderManager {
    void placeOrder();
}

/*
定义实现类
*/
@Service
public class SimpleOrderManager implements OrderManager{
    @Resource
    private JavaMailSenderImpl mailSender;

    @Resource
    private SimpleMailMessage templateMessage;

    @Override
    public void placeOrder() {
        // 获取邮件对象
        SimpleMailMessage msg = new SimpleMailMessage(this.templateMessage);
        // 设置邮件收件人的邮箱地址
        msg.setTo("1429076385@qq.com");
        // 设置邮件内容
        msg.setText("Hello Spring Mail");

       try{
           //发送邮件
           this.mailSender.send(msg);
       }catch (MailException ex){
           System.err.println(ex.getMessage());
       }
    }
}

1.4 邮件发送测试

/**
 * 发送邮件
 */
public class Test01 {
    public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");

        SimpleOrderManager simpleOrderManager = (SimpleOrderManager) ac.getBean("simpleOrderManager");

        simpleOrderManager.placeOrder();
    }
}

1.5 发送附件

/**
 * 发送包含附件的邮件
 * @param args
 * @throws MessagingException
 */
public static void main(String[] args) throws MessagingException {
 	ApplicationContext ac = new ClassPathXmlApplicationContext("spring.xml");
 	JavaMailSender mailSender= (JavaMailSender) ac.getBean("mailSender");
 	MimeMessage message= mailSender.createMimeMessage();
 	message.setSubject("spring_mail"); // 邮件主题
 	// 创建带有附件的消息帮组类
	MimeMessageHelper helper = new MimeMessageHelper(message,true,"utf-8");
	helper.setTo(new InternetAddress("收件⼈的邮箱地址"));//设置接收⼈
 	helper.setText("Thank you for ordering!"); // 邮件内容
 	helper.setFrom("发件⼈的邮箱地址"); // 发件⼈
 	// 设置附件
 	File file = new File("C:\\work\\邮件附件.txt");
 	// 添加附件
 	helper.addAttachment(file.getName(), file);
 	// 发送邮件
 	mailSender.send(message);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值