Javaプログラミング/Javaプログラミング関連情報

メール送信プログラムを作る(3ページ目)

自作のプログラムに、シンプルなメール送信機能つけてみたい、という人。このクラスを利用してみましょう。

執筆者:掌田 津耶乃

プログラムのダウンロード


ダウンロード開始



ソースコード


●FreeSendMailer(FreeSendMailer.java)
package jp.tuyano;

import java.awt.*;
import java.awt.event.*;
import java.io.PrintStream;
import javax.swing.*;
import sun.net.smtp.SmtpClient;

public class FreeSendMailer extends JFrame
    implements ActionListener {

  private static final long serialVersionUID = 1L;
  private JTextArea message;
  private JTextField server;
  private JTextField to;
  private JTextField from;
  private JTextField title;
  private JButton btn;
  
  private String servername = "localhost"; // サーバ指定
  private String fromname = "tuyano@mac.com"; // 送信元指定
  private String toname = "tuyano@mac.com"; // 送信先指定

  public FreeSendMailer() {
    this.setSize(300, 400);
    this.setResizable(false);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JPanel p = new JPanel();
    p.setLayout(new GridLayout(4, 1));
    server = new JTextField(servername);
    from = new JTextField(fromname);
    to = new JTextField(toname);
    title = new JTextField("メールタイトル");
    
    JPanel p1 = new JPanel();
    JLabel l1 = new JLabel("SERVER:");
    l1.setPreferredSize(new Dimension(80,20));
    p1.add(l1);
    p1.add(server);
    
    JPanel p2 = new JPanel();
    JLabel l2 = new JLabel("FROM:");
    l2.setPreferredSize(new Dimension(80,20));
    p2.add(l2);
    p2.add(from);
    
    JPanel p3 = new JPanel();
    JLabel l3 = new JLabel("TO:");
    l3.setPreferredSize(new Dimension(80,20));
    p3.add(l3);
    p3.add(to);

    JPanel p4 = new JPanel();
    JLabel l4 = new JLabel("TITLE:");
    l4.setPreferredSize(new Dimension(80,20));
    p4.add(l4);
    p4.add(title);

    server.setPreferredSize(new Dimension(200,20));
    from.setPreferredSize(new Dimension(200,20));
    to.setPreferredSize(new Dimension(200,20));
    title.setPreferredSize(new Dimension(200,20));

    p.add(p1);
    p.add(p2);
    p.add(p3);
    p.add(p4);

    this.getContentPane().setLayout(new BorderLayout());
    this.getContentPane().add(p, BorderLayout.NORTH);
    message = new JTextArea();
    message.setLineWrap(true);
    JScrollPane scroll = new JScrollPane();
    scroll.setVerticalScrollBarPolicy
        (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    scroll.getViewport().add(message);
    getContentPane().add(scroll, BorderLayout.CENTER);
    btn = new JButton("送信");
    btn.addActionListener(this);
    getContentPane().add(btn, BorderLayout.SOUTH);
  }
  
  public static void main(String[] args) {
    new FreeSendMailer().setVisible(true);

  }
  
  public void actionPerformed(ActionEvent ev) {
    String to1 = to.getText();
    String from1 = from.getText();
    String server1 = server.getText();
    String title1 = title.getText();
    String msg = message.getText();
    try {
      title1 = new String(title1.getBytes("ISO2022JP"));
      msg = new String(msg.getBytes("ISO2022JP"));

      SmtpClient client = new SmtpClient(server1);
      client.from(from1);
      client.to(to1);
      PrintStream stream = client.startMessage();
      stream.println("To:" + to1);
      stream.println("Subject:" + title1);
      stream.println("Content-Type: text/plain; charset=iso-2022jp");
      stream.println(msg);
      stream.flush();
      stream.close();
      JOptionPane.showMessageDialog(this, "送信しました。");
    } catch(Exception ex) {
      ex.printStackTrace();
      JOptionPane.showMessageDialog(this, "問題が発生しました。\n"
          + ex.toString());
    }
  }

}


バックナンバー


第1回「画面キャプチャーを作ろう」
第2回「画面キャプチャーを作ろう(2)」
第3回「Lifeゲームって、知っていますか?」
第4回「ディスアセンブラを作る」
第5回「画面キャプチャーを作ろう(3)」
第6回「画面キャプチャーを作ろう(4)」
第7回「標準出力コンポーネント作ろう」
第8回「2次元ゲーム盤を使ったパズルゲーム」
【編集部おすすめの購入サイト】
Amazonで Java 関連の書籍をチェック!楽天市場で Java 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます