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