0

JavaMail を使用せずに、Gmail のサーバーを使用して添付ファイル付きの電子メールを送信するにはどうすればよいですか?

私はこのコードに出くわしました。

このコードを使用する際の認証方法 (Gmail アカウントを送信者として使用)? 件名を指定できるようにこのコードを編集できますか? file.txt が添付ファイルとして機能すると思いますか?

編集: これはリンクからのコードで、私のニーズに合わせて調整されています (多かれ少なかれ)。唯一の違いは、ファイルの場所、smtp サーバー、および "from" と "to" の文字列です。

public static void blabla() throws IOException, UnknownHostException {
        String msgFile = "C:\\file.txt";
        String from = "myemailaccount@gmail.com";
        String to = "otheremailaccount@gmail.com";
        String mailHost = "smtp.gmail.com";
        SMTP mail = new SMTP(mailHost);
        if (mail != null) {
            if (mail.send(new FileReader(msgFile), from, to)) {
                System.out.println("Mail sent.");
            } else {
                System.out.println("Connect to SMTP server failed!");
            }
        }
        System.out.println("Done.");
    }



    static class SMTP {
        private final static int SMTP_PORT = 25;

        InetAddress mailHost;

        InetAddress localhost;

        BufferedReader in;

        PrintWriter out;

        public SMTP(String host) throws UnknownHostException {
            mailHost = InetAddress.getByName(host);
            localhost = InetAddress.getLocalHost();
            System.out.println("mailhost = " + mailHost);
            System.out.println("localhost= " + localhost);
            System.out.println("SMTP constructor done\n");
        }

        @SuppressWarnings({"resource", "unused"})
        public boolean send(FileReader msgFileReader, String from, String to)
                throws IOException {
            Socket smtpPipe;
            InputStream inn;
            OutputStream outt;
            BufferedReader msg;
            msg = new BufferedReader(msgFileReader);
            smtpPipe = new Socket(mailHost, SMTP_PORT);
            if (smtpPipe == null) {
                return false;
            }
            inn = smtpPipe.getInputStream();
            outt = smtpPipe.getOutputStream();
            in = new BufferedReader(new InputStreamReader(inn));
            out = new PrintWriter(new OutputStreamWriter(outt), true);
            if (inn == null || outt == null) {
                System.out.println("Failed to open streams to socket.");
                return false;
            }

            String initialID = in.readLine();

            System.out.println(initialID);
            System.out.println("HELO " + localhost.getHostName());
            out.println("HELO " + localhost.getHostName());

            String welcome = in.readLine();

            System.out.println(welcome);
            System.out.println("MAIL From:<" + from + ">");
            out.println("MAIL From:<" + from + ">");

            String senderOK = in.readLine();

            System.out.println(senderOK);
            System.out.println("RCPT TO:<" + to + ">");
            out.println("RCPT TO:<" + to + ">");

            String recipientOK = in.readLine();

            System.out.println(recipientOK);
            System.out.println("DATA");
            out.println("DATA");

            String line;
            while ((line = msg.readLine()) != null) {
                out.println(line);
            }

            System.out.println(".");
            out.println(".");

            String acceptedOK = in.readLine();

            System.out.println(acceptedOK);
            System.out.println("QUIT");
            out.println("QUIT");

            return true;
        }
4

1 に答える 1

0

GMails SMTP サービス経由で電子メールを送信するには、いくつかのトリックがあります。

読み飛ばしてみる

于 2012-09-22T23:00:09.340 に答える