邮件服务器&springboot---自动化的那些坑

来源:互联网 发布:linux 查看caffe版本 编辑:程序博客网 时间:2024/06/01 09:06
由于公司提供的自动化平台,能力太有限,在对目前已有的自动化做迁移。自己做了一套基于文件模板的接口自动化框架。核心就是直接从浏览器F12录制,或者postman的collection导入。直接获取请求跟回复。自动化只需要基于这些模板,修改其中的部分值,还有写一些自定义的断言就可以。背景先交到到这

开发过程还是很顺利的,吭哧吭哧就撸完了基本的代码,文件读写,http请求发送接收。这些都是之前写好了的手脚架。然后开始设计场景,写业务。这块也是驾轻就熟。写了无数遍了,这些还是很简单的。

第一个坑:邮件无法发送。。
这个邮件之前也是用的公司的质量技术组的邮箱做的。因为公司的网络控制的很严,邮件也是不能随便发送,那个exchange服务器用代码也是连接不上。所以只能用质量技术组的。但是最近一段时间,不知道是什么原因,抽风,一直发不出来邮件。找人支持,爱理不理。干脆,自己搭建一个得了。

百度了一番。还真是有。就是这个玩意:
http://james.apache.org/
老外的开源服务器。先从csdn下载了一个比较低的版本,结果发现各种配置无法读取,无法初始化。搞了半天,算了,直接拿最新的吧。毕竟java都到1.8了不是,咱也得与时俱进,直接拿最新的吧。

这里写图片描述

我以为是开箱即用的。很兴奋的就跑到bin目录直接run.bat搞起。
结果,发现各种端口不对啊,数据库有问题啊。。
算了,还是得回去啃文档。看了一圈老外的说明,大意就是要把这些xml的template去掉。程序就能读了。
smtp的服务端口,还有pop3的端口这些,自行配置一下,就可以用了。
这里写图片描述

服务器注册用户,就是用jame-cli.bat,进去里边添加一下邮箱的域名还有邮箱的用户就可以。

一切就绪,在springboot工程里边配置一下

#spring.mail.host=smtp.exmail.qq.comspring.mail.host=127.0.0.1spring.mail.port=2017spring.mail.username=test@wizard.comspring.mail.password=testspring.mail.properties.mail.smtp.auth=truespring.mail.properties.mail.smtp.starttls.enable=falsespring.mail.properties.mail.smtp.starttls.required=false
@Autowired    private JavaMailSender javaMailSender;    public void sendmail(String content,String subject) {        SimpleMailMessage mail = new SimpleMailMessage();        mail.setTo("test@wizard.com");// 收件人邮箱地址        mail.setFrom("test@wizard.com");// 收件人        mail.setSubject(content);// 主题        mail.setText(subject);// 正文        javaMailSender.send(mail);    }

百度一下,立马能发送邮件了。好不好用看疗效,runas走起:
这里写图片描述

有一步我跳过了没介绍。就是配置outlook邮箱这一步。我觉得这个没什么好讲的。
好了,在我的机器上,没人能阻止我发邮件了。

第二个坑:文件无法读取

这个坑就比较诡异了。我在本地的eclipse是可以直接读取的,代码如下:

ResourceUtils.getFile("classpath:json/xxx.json");

没毛病,都在本地运行了无数遍,绝对是好的无疑。
结果放到服务器上跑
classpath的路径是:D:\Users\xxxx.m2\repository\com\pingan\test\util\md5\1.0\json

问题在于,我的文件是已经都放到了src/resource/json下边的。为何它就是读不到呢?
第一步,看看是否已经打包到了jar里边,一看果然没有,立马加上打包的输出:

<build>        <resources>            <resource>            <!--之前就是少了这部分,所以resource没有打包进去jar,但是Eclipse环境下是ok的-->                <directory>src/main/resource</directory>            </resource>        </resources>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build>

好了,重新打包,这下总打包上了,但是仍然报找不到这些文件。真是头疼啊。。。
百度了很久,没有明确答案。然后想了一下。

先试试是不是classpath改变的原因,在启动命令加上目录指定:

cd D:\Users\xxx\.m2\repository\com\pingan\test\util\md5\1.0\

然并卵

再手动指定新增一下classpath?

D:\jdk1.8.0_60\bin\java  -classpath ".;D:\Users\xxxx\.m2\repository\com\pingan\test\util\md5\1.0\jar"

依然然并卵

是不是在jar包里边的,不能这么用呢?那个resourceutil是不是用来加载jar外部文件的。然后查了一番资料。果然

改一下代码:

InputStream stream = getClass().getClassLoader().getResourceAsStream(filePath);

然后转一下stream到string,完成文件读写的操作。
这下,总算可以了。

总的来说还是开发的经验太少了,很多坑没有踩过,解决问题走了许多弯路。

原创粉丝点击