使用Wiser测试邮件发送

最近在做一个小项目,里面有发送邮件这一功能,本文主要是讲如何通过Spring发送邮件,已经一个邮件测试框架 --- wiser的介绍。

如何使用Spring发送邮件

首先主要用到的一个类是JavaMailSenderImpl,它位于Spring的org.springframework.mail.javamail包中,主要是用来发送邮件的。为了发送邮件,需要提供给它一系列的参数。这些参数我都配置在了resources包下的一个xml文件中。

<bean id="javaMailSenderImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.gmail.com"/>
        <property name="port" value="587"/>
        <property name="username" value="twufeedmycat@gmail.com"/>
        <property name="password" value="@twu292012"/>

        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
            </props>
        </property>
    </bean>

host: 邮件发送服务器的地址

port: 与服务器通信的端口

username & password: 一个gmail账户即可

mail.smtp.auth: 提供给邮件服务器,校验发送方的授权,也许是为了组织没有授权的发送方肆意发送垃圾邮件

mail.smtp.starttls.enable: 将一般连接升级到加密连接,而无需另开一个端口进行加密传输。这里要设为true才能使用gmail的邮件服务器


上面的步骤只是建立了连接,下面聊聊发送的内容。

建立邮件内容,需要用到SimpleMailMessage这个类,它在org.springframework.mail这个包中。下面的代码展示了如何用它创建邮件内容:

SimpleMailMessage mailMessage = new SimpleMailMessage();

        mailMessage.setTo(emailAddress);
        mailMessage.setFrom(fromAddress);
        mailMessage.setSubject(subject);
        mailMessage.setText(content);

内容建立好后,就应该发送了,直接调用JavaMailSenderImpl的send方法就OK。

mailSender.send(mailMessage);

这样就完成了邮件的发送过程,下面来聊聊如何测试。我用到了Wiser框架,道理很简单。既然开始我是之间向google的邮件服务器通信,并让它发送邮件,那么现在测试我就应该发到Wiser上去。在测试用的resources文件夹下,我有一个与上面提到的同名的xml文件,但是配置的JavaMailSenderImpl中的配置肯定是不同的,这次是配置的Wiser,需要注意的是Wiser并不是一个邮件服务器,在我看来,它是一个监听一个端口的程序,每一条经过这个端口发送出的信息,都会被它捕获到,然后存在一个队列中,这样我们就能从这个队列中取出消息进行验证:

<bean id="javaMailSenderImple" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="localhost"/>
        <property name="port" value="25000"/>
        <property name="username" value="username"/>
        <property name="password" value="password"/>

        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
            </props>
        </property>
    </bean>

同时,下面的代码被我用于junit测试中:

private Wiser wiser;

    @Before
    public void setUp() {
        wiser = new Wiser();
        wiser.setPort(25000);
        wiser.start();
    }

    @After
    public void tearDown() {
        wiser.stop();
    }

setPort: 设置被监听的端口,与xml中给JavaMailSenderImpl配置的一样。

最后,启动单元测试,读取发送的邮件进行验证:

mailSender.sendEmailToCustomerAfterRegistration(customerNickname, customerEmail);

        WiserMessage wiserMessage = wiser.getMessages().get(0);
        String expectedReceiver = "adam@test.com";
        String expectedSender = "admin@thebank.com";
        String expectedSubject = "Welcome!";
        String expectedContent = "Dear adam, welcome to the bank";

        assertThat(wiserMessage.getEnvelopeReceiver(), is(expectedReceiver));
        assertThat(wiserMessage.getEnvelopeSender(), is(expectedSender));
        assertThat(wiserMessage.getMimeMessage().getContent().toString().trim(), is(expectedContent));
        assertThat(wiserMessage.getMimeMessage().getSubject().trim(), is(expectedSubject));

这就是我在项目中使用到的发送邮件和其测试的技术。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值