1. 程式人生 > 其它 >用java 傳送郵件 版本2(根據配置檔案 選擇傳送情話或者勵志文)

用java 傳送郵件 版本2(根據配置檔案 選擇傳送情話或者勵志文)

技術標籤:java

版本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