• Java-利用spring发送邮件


     最近项目中需要发送邮件的功能,于是百度一大把例子。但是有很多都是一样的,一点特点都没有。所以决定整理一番。

            在spring2.X以后的版本就提供了org.springframework.mail来解决javaMail的集成问题。org.springframework.mail.javamail.JavaMailSenderImpl就是基于JavaMail API提供的MailSender实现类。这个实现类提供的功能已经非常完善了。支持各种类型的邮件的发送。代码量也大大减少。下面就用一个例子来说明它的优越性吧。
            spring集成javaMail肯定是要配置一个bean的,当然也可以在代码里写死,但是不推荐。spring关键代码如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <!-- 配置MailSender -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <!-- 邮件服务器 -->
        <property name="host" value="smtp.163.com" />
        <!-- 端口 -->
        <property name="port" value="25" />
        <!-- 你的邮箱 -->
        <property name="username" value="" />
        <!-- 邮箱密码 -->
        <property name="password" value="" />
        <property name="javaMailProperties">
            <props>
                <!-- 是否进行身份认证 -->
                <prop key="mail.smtp.auth">true</prop>
                <!-- 是否采用SSL登录 -->
                <prop key="mail.smtp.starttls.enable">true</prop>
            </props>
        </property>
    </bean>
            最关键的一步做好了,现在写个方法测试一下。先写个比较简单的纯文本邮件发送方法吧。 关键代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public static void simpleMail() {
            try {
                // 使用Spring提供的MailSender
                ApplicationContext app = new ClassPathXmlApplicationContext(
                        "spring-mail.xml");
                JavaMailSender mailSender = (JavaMailSender) app
                        .getBean("mailSender");
                // 创建一个纯文本邮件
                SimpleMailMessage mail = new SimpleMailMessage();
                // 发送方
                mail.setFrom(YourMail);
                // 接收人
                mail.setTo(ToMail);
                // 邮件标题
                mail.setSubject("测试简单邮件发送");
                // 内容
                mail.setText("测试使用SpringMailSender发送邮件");
                // 发送
                mailSender.send(mail);
                System.out.println("邮件发送成功!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
            YourMail、ToMail自己设定哈,我的就不暴露出来了。跑一下看看的。控制台输出发送成功,去邮箱看看的。如图:
    mai1l
            刚一打开FoxMail就提示收到邮件了,还是比较顺利。如果要发送个附件,汇报一下工作呢。这个方法是不满足要求的,那就再写个方法吧。关键代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public static void attachedFileMail() {
            try {
                ApplicationContext app = new ClassPathXmlApplicationContext(
                        "spring-mail.xml");
                JavaMailSender mailSender = (JavaMailSender) app
                        .getBean("mailSender");
                MimeMessage mime = mailSender.createMimeMessage();
                // multipart模式 为true时发送附件 可以设置html格式
                MimeMessageHelper messageHelper = new MimeMessageHelper(mime, true,
                        "utf-8");
                // 发送方
                messageHelper.setFrom(YourMail);
                // 接收人
                messageHelper.setTo(ToMail);
                // 邮件标题
                messageHelper.setSubject("测试包含附件邮件发送");
                // true 表示启动HTML格式的邮件
                messageHelper
                        .setText(
                                "<html><head></head><body><h3>你好:附件中有惊喜,请查收!</h3></body></html>",
                                true);
                // 附件
                FileSystemResource file = new FileSystemResource(new File(
                        "D:\a.xls"));
                messageHelper.addAttachment("a.xls", file);
                // 发送
                mailSender.send(mime);
                System.out.println("邮件发送成功!");
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
            运行一下,又成功了。刷新邮箱看看的。
     mail21
     
            还是比较简单吧,相信这个代码已经表达的相当透彻了,如果还有不明白的,去我的网盘下载吧。地址:
    注意:下载的demo还不能运行,需要自己在xml已经以及java代码中设置邮箱和密码。
  • 相关阅读:
    [C++空间分配]new运算符、operator new、placement new的区别于联系
    [C++STL]stl源码剖析
    [C++基础]在构造函数内部调用构造函数
    Eclipse Memory Analyzer
    zookeeper 学习 zookeeper下载部署
    Doracle.jdbc.J2EE13Compliant=true
    zookeeper 学习 状态机复制的共识算法
    java -d
    轮盘选择法
    OPENJDK 源码编译
  • 原文地址:https://www.cnblogs.com/hongzai/p/3202039.html
Copyright © 2020-2023  润新知