はしくれSEめも

SEに必要情報をめも程度に残していこうと思っています。

【Java】メール接続~受信までのやり方 サンプルコードあり

メールとの連携は業務システムの開発において必要不可欠なものとなっています。
最近はSlackやLINEなどのコミュニケーションツールとの連携も多いですが、
日本の会社ではメールが根強くなってしまっています。
なので、日本においてはメールの需要はまだまだ続きそうです。

改めてJavaでのメール接続~受信までをめもしておきます。 POP3でのやり方になります。 コピペレベルでできると思いますので、以下をご活用ください。

※今回は、簡単な説明で納めておくため、テキストメール(添付なし)を例にさせていただきます。 HTMLメールは今後記載させていただきます。

/ 接続~受信BOXのOPENまで
Properties prop = new Properties();

// POP3サーバー(受信サーバー)の【IPアドレス】と【ポート】を設定
prop.setProperty("mail.pop3.host", 【IPアドレス】);
prop.setProperty("mail.pop3.port", 【ポート】);

// メールアカウントの【ユーザID】と【パスワード】を設定
Authenticator authenticator = new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(【ユーザID】, 【パスワード】);
    }
};

Session session = Session.getInstance(prop, authenticator);
Store store = session.getStore("pop3");
store.connect();

// 受信ボックスの設定。【INBOX】固定
Folder inbox = store.getDefaultFolder().getFolder("INBOX");

// 読み込みだけの時はFolder.READ_ONLYでOK
// inbox.open(Folder.READ_ONLY);
// メールサーバーから削除する場合は、Folder.READ_WRITEにする必要があります
inbox.open(Folder.READ_WRITE);

Message[] messages = inbox.getMessages();
// 受信メールの件数分ループ
for (Message message : messages) {

    // 件名
    String subject = MimeUtility.decodeText(message.getSubject());
    
    System.out.println("subject: " + subject);
    
    // 差出人
    Address[] from = message.getFrom();
    String mailAddress = getAddress(MimeUtility.decodeText(from[0].toString()));

    System.out.println("mail_address: " + mailAddress);

    // 受信日時
    Date receivedDate = message.getSentDate();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    String dateTimeText = sdf.format(receivedDate);

    System.out.println("receivedDate: " + dateTimeText);

    Part part = message;
    String msgText = "";
    
    // メール本文を【part.getContent().toString()】で取得
    if (part.isMimeType("text/plain")) {
        // テキストメール
        msgText = part.getContent().toString();
    }else if (part.isMimeType("multipart/*")) {
        // HTMLメール
        // ToDo
    }
    System.out.println("----------\n" + msgText + "----------\n");
}

inbox.close(true); // 読み込みだけの時はfalaeでOK
store.close();

【Java】split 「.」ドットが上手くできない

ファイル名を拡張子で分けようと思って、「.」ドットでsplit (分割)しようと思い、 以下のように書いた。


String str = "sample.txt"
String[] array  =  str.split(".");


結果:配列の中身をみたら空っぽだった。。。









原因

どうやら正規表現」が原因だった。。。。







修正後

なので、エスケープします。 前方に「\」を付与してあげる。

String str = "sample.txt"
String[] array  =  str.split("\\.");

※エディタ上で「\」は実際「半角¥」なので気を付けてね。

【LINEMO】PayPay ソフトバンクまとめて支払い

SEめもとは関係ありませんが、PayPayとLINEMOユーザにとってうれしい報告です。

LINEMOでは「ソフトバンクまとめて支払い」が利用できるようになりました~~~。 パチ!パチ!パチ!パチ!

これでLINEMOのキャリアは、「PayPay」へチャージが簡単にできるようになりました。

他の「PayPay」へチャージする方法は以下があります。

ATMチャージ

セブン銀行ローソン銀行のATMからチャージすることができる。
 →デメリット:いちいちセブンイレブンまたはローソンへ行く必要がある。

PayPay銀行

PayPayが運用している、ネット銀行の預金からチャージができる。
 →デメリット:PayPay銀行の口座を作る必要があるため、面倒。

ヤフーカード

ヤフーカードを登録し、チャージができる。
 →デメリット:ヤフーカードを作る必要があり、面倒。

ギフトカード

友達などからPayPayギフトカードをもらい、チャージできる。
 →デメリット:都合の良いときにギフトカードなんて持ってない。

ヤフオク

売上金からチャージができる。
 →デメリット:そもそもヤフオク!をやっていないので、売上金がない。

友だちから残高を送ってもらう

友達などが保有しているPayPayの残高からチャージができる。
 →デメリット:いちいち友達へ請求する必要があるため、急用の場合に困る。

ソフトバンクまとめて支払いとは?

スマートフォンなどで購入したデジタルコンテンツやショッピングなどの代金、アプリなどの購入分を、月々のスマートフォンの利用料金とまとめてお支払いできる決済サービスです。

【コマンドプロンプト】ファイル削除(del)



コマンドプロンプトからファイル削除のやり方について記載します。

@echo off

set CUR_PATH=C:\hoge\

IF NOT EXIST "%CUR_PATH%AAA.txt" goto :END

del /Q %CUR_PATH%AAA.txt

:END

オプション

オプション 説明
/P ファイルの削除前に確認メッセージを表示します。
/F 読み取り専用ファイルを削除します。
/S 指定したファイルを全てのサブディレクトリから削除し、削除したファイル名を表示します。
/Q 削除前に確認メッセージを表示しません。

【Node.js】LESSをCCSに変換

f:id:coogi-se:20210805000805j:plain

lessだと一度less.jsで変換する必要がある。 軽量なlessであれば問題ないが、大きいlessだとパフォーマンスに響く。 そこで、前もってlessをccsへ変換するやり方をメモしておきます。

Node.jsインストール

lessの公式ドキュメントを参照すると、以下が必要。

$ npm install -g less

Node.jsがない方は、以下からダウンロード。

nodejs.org

インストールはそのまま次へ、次へで問題なし。 インストール完了後、dosで以下のコマンドを実施。

$ npm install -g less

ccsへ変換

Lessコンパイラ(lessc)を用いて、Less ファイルをコンパイルします。 下記の例では、style.lessファイルをstyle.cssファイルにコンパイル(変換)しています。

$ lessc style.less style.css

また、minifiedされたCSSファイルを作成することができます。 プラグインが必要なため、以下のコマンドからless-plugin-clean-cssプラグインをインストール。

$ npm install -g less-plugin-clean-css

インストール完了後、以下のコマンドを実施すると、 minifiedされたCSSファイルを作成することができます。

$ lessc --clean-css styles.less styles.min.css

【Linux】Linuxディストリビューションとは

f:id:coogi-se:20210805001038j:plain

今回は様々な「Linuxディストリビューション」についてメモを残します。

ディストリビューションとは?

そもそもディストリビューションとは・・・

「流通」
「配布」

という意味で、 Linuxの配布形態のことです。

本来、Linuxという言葉はLinuxカーネルのことを意味していますが、 カーネルだけではOSとして手軽に使うことはできません。

そこで、Linuxを利用しやすいようにアプリケーションなどをパッケージにして すぐに使える状態にしたものを

ディストリビューション」と呼びます。

Linuxにはいろいろな ディストリビューションがあるのです。

代表的なLinuxディストリビューション 代表的なディストリビューションを いくつかご紹介しましょう。

Red Hat Enterprise Linux (RHEL)

アメリカのRedHat社が開発した 商用向けのLinuxディストリビューションです。

クライアントPC用途ではなく 大規模システムのサーバーに利用されています。

Fedora

FedoraRedHat社が 支援しているディストリビューションです。

RHELは商用向けで有料なのに対し Fedoraは無料で使うことができます。

Fedoraは次世代のRHEL向けの 検証用ディストリビューションとしての役割があり、

実際にFedoraで検証された 多くの新しい技術がRHELに採用されています。

Debian

Debianは 世界中の有志が集結して作り上げた、

100%フリーで使うことができる Linuxディストリビューションです。

さまざまなCPU上での動作サポートと 数万にもおよぶ膨大なアプリケーション数が特徴で、 多くの企業のシステムに採用されています。

CentOS

CentOSRHELのクローン(複製)OSで RHELの商用部分を取り除いたディストリビューションです。

Fedoraのように RHELの実験的要素を含んだOSとは異なり、

安定性も比較的高く、 商用でも使われる機会も増えています。

Ubuntu

Debianをベースに作られた 世界的な人気を持つディストリビューションです。

使いやすいデスクトップで 初心者にも抵抗なく使えるのが特徴ですが、

Debianと同じく 多くの企業のシステムにも使われています。

【ssh】公開鍵認証 設定~接続まで

f:id:coogi-se:20210804234910p:plain

環境

今回は以下の環境でのメモ。


◆サーバー CentOS Linux release 7.4.1708
 ⇒既にインストール済みの「OpenSSH」で設定。


◆クライアント Windows 7 Professional
 ⇒「RLogin」を使用して接続。


鍵の作成

ssh-keygenの実行

サーバー側で以下のコマンドを実行し、鍵を作成。
※ログイン者は、sshで接続する際のユーザとする。(今回は、「hoge」とする)


$ ssh-keygen -t rsa -b 4096


-t:鍵の種類を指定します。 rsa を指定すると、SSHプロトコルバージョン2のRSA鍵が作成されます。公開鍵暗号方式は主にRSAが使用されています。


-b:鍵のsize(bit)を指定します。2048bit以上なら問題ない強度ですが、より強固にする為に今回は、4096bitを指定します。


パスフレーズの設定

秘密鍵に設定するパスフレーズの入力を求められるので、2回入力します。
このパスフレーズ秘密鍵の使用時(SSHログイン時)に必要であり、接続先の端末には送信されません。


Enter passphrase (empty for no passphrase):
Enter same passphrase again:

authorized_keysを作成

上記までを実行すると、秘密鍵と公開鍵が作成される。

  1. ~/.ssh/id_rsa秘密鍵
  2. ~/.ssh/id_rsa.pub:公開鍵


# id_rsa.pub`を`authorized_keys` にリネーム。
$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

# 所有者以外のアクセスを許可しないよう設定。
$ chmod 600 ~/.ssh/authorized_keys

接続

~/.ssh/id_rsaをどうにかしてクライアントへ転送します。

※私は「RLogin」で、事前にパスワード認証で接続させ、SFTPでファイル転送しました。こうすれば、パスワード認証を禁止にした際の確認用にもなる。

RLoginの設定

「RLogin」を起動し、以下の設定後に接続。

※「RLogin」を持っていない人は、以下からダウンロード。 http://nanno.dip.jp/softlib/program/rlogin_x64.zip

  1. プロトコルssh
  2. ホスト名:サーバーのIPアドレス
  3. TCPポート:ssh(22)
  4. ログインユーザ名:hoge
  5. パスフレーズ:②で入力したもの
  6. SSH認証鍵:ファイルパスをid_rsaに設定
  7. デフォルト文字セット:UTF-8

コマンドが打てる状態になれば、接続成功です。

注意

今回は「ファイアーウォール」の設定を省きましたが、

ポート:22のデフォルトは、許可になっていると思います。

接続がうまくいかない場合は、「ファイアーウォール」を疑ってください。