Java实战之邮件发送器(4)——完成邮件信息的保存设置

本节概要:完成properties配置

本节即完成对发件人、密码及服务器的配置,然后将其保存到properties文件中。

因此首先在properties创建一个名为data的properties文件

properties文件的保存数据是通过键值对的方式。

如下:即key=value的方式,“#”是注释

在SendAccountOptionFrameController类中的do_saveButton_event()方法添加如下代码:

     @FXML
    void do_saveButton_event(ActionEvent event) {
        // 获取发件人邮箱
        String addresser = addresserTextField.getText();
        // 发件人登录密码
        String password = passwordField.getText();
        // 服务器,这里使用的是smtp.163.com,是网易邮箱的第三方服务器
        String server = serverTextField.getText();
        // 实例化一个Map
        Map dataMap = new HashMap();
        // 将键值保存在Map中
        dataMap.put("addresser", addresser);
        dataMap.put("password", password);
        dataMap.put("server", server);
        // 调用SimpleTools的dataWriteProperties()方法将输入写入properties文件中
        new SimpleTools().dataWriteProperties("src/main/resources/properties/data.properties",dataMap);
    }

代码解释:

  • 首先从设置界面的输入框中获取用户填入的数据。

  • 然后实例化一个Map用来保存从界面传来的数据。

  • 最后调用SimpleTools类中的工具方法dataWriteProperties(String fileName,Map<String,String> map);里面有两个参数,第一个参数是保存数据的properties文件的路径;第二个参数保存了键值对数据的map集合。

  • 而dataWriteProperties(String fileName,Map<String,String> map);是在SimpleTools类自定义的,主要是properties.setProperty(String key,String value)方法向properties文件中写入键值对的。

dataWriteProperties()方法的代码如下:

 /**
     * 操作结果:生成属性文件
     *
     * @param fileName 文件路径
     * @param maps     数据集合
     */
    public void dataWriteProperties(String fileName, Map<String, String> maps) {
        Properties properties = new Properties();
        try {
            File file = new File(fileName);
            if (!file.exists()) {
                file.createNewFile();
            }
            // 写入文件
            for (String key : maps.keySet()) {
                properties.setProperty(key, String.valueOf(maps.get(key)));
            }
            FileOutputStream fos = new FileOutputStream(file);
            properties.store(fos, null);//store(...)指定的流仍保持打开状态
            fos.flush();
            fos.close();// 关闭流
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

效果如下:

打开data.properties文件内容如下:

将这些配置保存在properties文件中后,当你再次点击设置按钮打开后,发现界面如下:

发现界面中的输入框是空的,这对用户体验并不好,因为他们并不知道他们的配置去哪里了,也不可能每次去打开data.properties文件查看,也或者如果再次点击保存按钮就使设置成了空。

因此在SendAccountOptionFrameController.java中的initialize()方法添加如下代码(将下面的代码直接替换initialize()方法即可):


    public void initialize() {
        // 初始化图标设置
        new SimpleTools().setLabeledImage(
                new Labeled[]{saveButton, cancelButton},
                new String[]{"src/main/resources/images/save.png",
                        "src/main/resources/images/cancel.png"});
        // 从data.properties文件中读取配置
        Map dataMap = new SimpleTools().readReturnMap("src/main/resources/properties/data.properties");
        String addresser = (String) dataMap.get("addresser");
        String password = (String) dataMap.get("password");
        String server = (String) dataMap.get("server");
        addresserTextField.setText(addresser);
        passwordField.setText(password);
        serverTextField.setText(server);
    }

再次运行即可看到界面的输入框有内容了。

 

 

可搜索微信公众号【Java实例程序】或者扫描下方二维码关注公众号获取更多。

注意:在公众号后台回复【20191029】可获取本节源码。

 

 

“追踪我的电脑(GetMyComputer)”程序由三峡大学水利与环境学院 肖泽云 设计、编写。本软件仅供个人学习、研究或者欣赏之用,不得用作其他任何用途,本程序为免费共享程序,作者本人不承担任何由于用户使用不当而造成的损失。 本程序是一款基于.Net平台开发的小程序,在运行程序时请保证电脑已安装.Net Framework 2.0或更高版本。该程序主要实现自动监控指定窗体(包括QQ、Word、浏览、暴风应用、迅雷等软件),并自动将监控结果发送至指定的邮箱中。若您的电脑不幸丢失,安装配置好本程序后,当他人开启您的电脑并连接网络后,若他登入了QQ,程序将自动将他QQ界面通过Email发送至指定的邮箱中。 运行程序后,按下快捷键Ctrl+Shift+Alt+M将显示系统主界面!在程序界面上设置用于发送邮件的邮箱名称(建议使用163邮箱)、邮箱密码、SMTP主机、收件人邮箱,监控图片数目是指共监控多少张图片后即发送邮件,建议该值不宜取太大,否则等待邮件发送的时间将延长,而且附件文件将较大,设置好参数后点击按钮“设置保存参数”即可。勾选“开机自动启动”后,每次电脑开机该程序将自动启动,即自动监控,所以一旦开启电脑并联网后,获取到了指定监控窗体(如QQ)图片,程序会自动发送邮件邮件发送成功后自动退出,否则将不断的发送直到成功为止。查看该程序是否运行,建议打开任务管理,本程序名称为GetMyComputer.exe。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值