001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package examples;
019
020import java.io.BufferedReader;
021import java.io.FileNotFoundException;
022import java.io.FileReader;
023import java.io.IOException;
024import java.io.InputStreamReader;
025import java.io.PrintWriter;
026import java.io.Writer;
027import java.util.Enumeration;
028import java.util.Vector;
029
030import org.apache.commons.net.PrintCommandListener;
031import org.apache.commons.net.io.Util;
032import org.apache.commons.net.smtp.SMTPClient;
033import org.apache.commons.net.smtp.SMTPReply;
034import org.apache.commons.net.smtp.SimpleSMTPHeader;
035
036/***
037 * This is an example program using the SMTP package to send a message
038 * to the specified recipients.  It prompts you for header information and
039 * a filename containing the message.
040 * <p>
041 ***/
042
043public final class mail
044{
045
046    public final static void main(String[] args)
047    {
048        String sender, recipient, subject, filename, server, cc;
049        Vector ccList = new Vector();
050        BufferedReader stdin;
051        FileReader fileReader = null;
052        Writer writer;
053        SimpleSMTPHeader header;
054        SMTPClient client;
055        Enumeration en;
056
057        if (args.length < 1)
058        {
059            System.err.println("Usage: mail smtpserver");
060            System.exit(1);
061        }
062
063        server = args[0];
064
065        stdin = new BufferedReader(new InputStreamReader(System.in));
066
067        try
068        {
069            System.out.print("From: ");
070            System.out.flush();
071
072            sender = stdin.readLine();
073
074            System.out.print("To: ");
075            System.out.flush();
076
077            recipient = stdin.readLine();
078
079            System.out.print("Subject: ");
080            System.out.flush();
081
082            subject = stdin.readLine();
083
084            header = new SimpleSMTPHeader(sender, recipient, subject);
085
086
087            while (true)
088            {
089                System.out.print("CC <enter one address per line, hit enter to end>: ");
090                System.out.flush();
091
092                // Of course you don't want to do this because readLine() may be null
093                cc = stdin.readLine().trim();
094
095                if (cc.length() == 0)
096                    break;
097
098                header.addCC(cc);
099                ccList.addElement(cc);
100            }
101
102            System.out.print("Filename: ");
103            System.out.flush();
104
105            filename = stdin.readLine();
106
107            try
108            {
109                fileReader = new FileReader(filename);
110            }
111            catch (FileNotFoundException e)
112            {
113                System.err.println("File not found. " + e.getMessage());
114            }
115
116            client = new SMTPClient();
117            client.addProtocolCommandListener(new PrintCommandListener(
118                                                  new PrintWriter(System.out)));
119
120            client.connect(server);
121
122            if (!SMTPReply.isPositiveCompletion(client.getReplyCode()))
123            {
124                client.disconnect();
125                System.err.println("SMTP server refused connection.");
126                System.exit(1);
127            }
128
129            client.login();
130
131            client.setSender(sender);
132            client.addRecipient(recipient);
133
134            en = ccList.elements();
135
136            while (en.hasMoreElements())
137                client.addRecipient((String)en.nextElement());
138
139            writer = client.sendMessageData();
140
141            if (writer != null)
142            {
143                writer.write(header.toString());
144                Util.copyReader(fileReader, writer);
145                writer.close();
146                client.completePendingCommand();
147            }
148
149            fileReader.close();
150
151            client.logout();
152
153            client.disconnect();
154        }
155        catch (IOException e)
156        {
157            e.printStackTrace();
158            System.exit(1);
159        }
160    }
161}
162
163