用java 发送邮件 版本2(根据配置文件 选择发送情话或者励志文)

版本1:
版本1的Url
就是发完给女朋友,突然想给自己也发一下,然后自己给自己发土味情话不是腻得慌??
所以只能给自己发励志短文了

结构如下:
在这里插入图片描述
改动的地方:
WordConstant:
老规矩,语录自己写。。

package util;

import org.junit.jupiter.api.Test;

/**
 * @author chy
 * @create 2020-12-15-11:51
 */
public class WordConstant {
    String[] loveWords = {
            "有趣的地方都想去​|比如你的世界",
            "我想在你那里买一块地|买什么地?|买你的死心塌地",
            "你知道你和星星有什么区别吗?|星星在天上|而你在我心里",
            "我十拿九稳|就只差你一吻了",
            "可爱不是长久之计|可爱你是"
    };
    String[] fighterWords = {
            "生命太短暂|不要去做根本没人想要的东西",
            "如果你没有把握做到|最好就不要承诺|你什么也不承诺|至少别人不会看不起你",
            "程序员可以让步|却不可以退缩|可以羞涩|却不可以软弱|总之|程序员必须是勇敢的",
            "一本好书|就像高级武功秘籍一样|哪怕只是从里面领悟到一招半式|功力提升起来都是惊人的"
    };
    public String getWords(int id){
        String[] words = id ==1 ? loveWords : id ==2 ?fighterWords : new String[]{"请选择正确的语录"};
        int ran = (int) (Math.random()*(words.length));
        return words[ran].replace("|","\n");
    }

    @Test
    public void test(){
        WordConstant word = new WordConstant();
        System.err.println(word.getWords( 2));
        System.err.println(word.fighterWords.length);
    }
}

SendEmail:
初始化的时候根据参数选择不同的配置文件

/** 设置发件人*/
    private  String from;

    /**设置收件人*/
    private  String to ;

    /**设置邮件发送的服务器,这里为QQ邮件服务器*/
    private  String host;

    /** 授权给第三方登陆的密码*/
    private  String password;

    public SendEmail(int id){
        if(id ==1){
            PropertiesUtil.loadFile("love.properties");
        }else {
            PropertiesUtil.loadFile("strive.properties");
        }
        from = PropertiesUtil.getPropertyValue("email.form");
        to = PropertiesUtil.getPropertyValue("email.to");
        host = PropertiesUtil.getPropertyValue("email.host");
        password = PropertiesUtil.getPropertyValue("email.password");
    }
    public void doSend(String text, long days){
        try {
            //获取系统属性
            Properties properties = System.getProperties();

            //SSL加密
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);

            //设置系统属性
            properties.setProperty("mail.smtp.host", host);
            properties.put("mail.smtp.auth", "true");

            //获取发送邮件会话、获取第三方登录授权码
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                @Override
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(from, password);
                }
            });

            Message message = new MimeMessage(session);

            //防止邮件被当然垃圾邮件处理,披上Outlook的马甲
            message.addHeader("X-Mailer","Microsoft Outlook Express 6.00.2900.2869");

            message.setFrom(new InternetAddress(from));

            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

            //邮件标题
            message.setSubject("在一起的第"+days+"天");

            BodyPart bodyPart = new MimeBodyPart();

            bodyPart.setText(text);

            Multipart multipart = new MimeMultipart();

            multipart.addBodyPart(bodyPart);

            //附件
            bodyPart = new MimeBodyPart();
//            String fileName = "文件路径";
//            DataSource dataSource = new FileDataSource(fileName);
//            bodyPart.setDataHandler(new DataHandler(dataSource));
//            bodyPart.setFileName("文件显示的名称");
//            multipart.addBodyPart(bodyPart);

            message.setContent(multipart);

            Transport.send(message);
            System.out.println("=============="+ new Date(System.currentTimeMillis())+"=======================");
            System.out.println(String.format("%d\n发送成功,内容:\n%s",days,text));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}

doMain:

import util.MyDateUtil;
import util.SendEmail;
import util.WordConstant;

import java.util.Calendar;
import java.util.Date;

/**
 * @author chy
 * @create 2020-12-15-11:04
 */
public class doMain {
    static long getDate(){
        // 日期字符串
        String dateStr1 = "2019-08-01 00:00:00";
        Date date2 = new Date(System.currentTimeMillis());

        // 获取日期
        Date date1 = MyDateUtil.parseDate(dateStr1, "yyyy-MM-dd HH:mm:ss");

        // 获取相差的天数
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date1);
        long timeInMillis1 = calendar.getTimeInMillis();
        calendar.setTime(date2);
        long timeInMillis2 = calendar.getTimeInMillis();

        return  (timeInMillis2 - timeInMillis1) / (1000L * 60L * 60L * 24L);
    }

    public static void main(String[] args) {
        int id = Integer.parseInt(args[0]);
        SendEmail sendEmail = new SendEmail(id);
        long days = getDate();
        String text = new WordConstant().getWords(id) + "\n";
        if (id == 1){
            text += "                                             --XXX";
            if (days%100 ==0){
                text = "今天是我们的第 "+ days + "天啦\n" +
                        "接下来也要一起好好努力哟!!";
            }else if ( days % 365 == 0){
                text = "今天是我们的第 "+ days / 365 + "周年啦\n" +
                        "时间真的过得很快呢哎哟喂!!\n" +
                        "我们长长久久又进了一步啦";
            }
        }else if(id == 2){
            text += "                                              --致自己";
        }
        
        sendEmail.doSend(text, days);
    }
}

看到这一句,基本大家都知道什么意思了吧,所以我上面都是废话,大家直接看着一句就行了

int id = Integer.parseInt(args[0]);

提供个思路,欢迎大家探讨

linux 使用方式:
在这里插入图片描述
在这里插入图片描述

20 5 * * *  /usr/local/jdk1.8/bin/java -jar /opt/email_timing/script-1.0-SNAPSHOT.jar  1 >> /opt/email_timing/log.txt 2>&1
20 5 * * *  /usr/local/jdk1.8/bin/java -jar /opt/email_timing/script-1.0-SNAPSHOT.jar  2 >> /opt/email_timing/log.txt 2>&1

2020/12/18

又更新了一个版本
步骤都差不多
这次增加了每日英语和天气预报,英语是爬下来的,天气预报是通过免费的接口拿的,没什么作用,就图个好玩
原理大家都懂就不赘述了,在这里放张图就好了

收到的邮件内容就是这样子:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值