xref: /trunk/main/scripting/examples/java/Newsgroup/Sender.java (revision cd519653a6b6a9e2ff38774da567b1ae7cbeddbb)
1*cd519653SAndrew Rist /**************************************************************
2*cd519653SAndrew Rist  *
3*cd519653SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*cd519653SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*cd519653SAndrew Rist  * distributed with this work for additional information
6*cd519653SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*cd519653SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*cd519653SAndrew Rist  * "License"); you may not use this file except in compliance
9*cd519653SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*cd519653SAndrew Rist  *
11*cd519653SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*cd519653SAndrew Rist  *
13*cd519653SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*cd519653SAndrew Rist  * software distributed under the License is distributed on an
15*cd519653SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*cd519653SAndrew Rist  * KIND, either express or implied.  See the License for the
17*cd519653SAndrew Rist  * specific language governing permissions and limitations
18*cd519653SAndrew Rist  * under the License.
19*cd519653SAndrew Rist  *
20*cd519653SAndrew Rist  *************************************************************/
21*cd519653SAndrew Rist 
22cdf0e10cSrcweir import javax.mail.*;
23cdf0e10cSrcweir import javax.mail.internet.*;
24cdf0e10cSrcweir import com.msoft.mail.provider.nntp.NNTPTransport;
25cdf0e10cSrcweir import java.util.Properties;
26cdf0e10cSrcweir import java.io.*;
27cdf0e10cSrcweir import javax.activation.*;
28cdf0e10cSrcweir 
29cdf0e10cSrcweir 
30cdf0e10cSrcweir public class Sender
31cdf0e10cSrcweir {
32cdf0e10cSrcweir     // Constructor params:
33cdf0e10cSrcweir     private StatusWindow status = null;
34cdf0e10cSrcweir     private OfficeAttachment attachments = null;
35cdf0e10cSrcweir     private String replyto = "";
36cdf0e10cSrcweir         private String subject = "";
37cdf0e10cSrcweir         private String comment = "";
38cdf0e10cSrcweir         private String hostname = "";
39cdf0e10cSrcweir         private String newsgroup = "";
40cdf0e10cSrcweir     private String statusLine = "";
41cdf0e10cSrcweir 
42cdf0e10cSrcweir 
43cdf0e10cSrcweir 
44cdf0e10cSrcweir     public Sender( StatusWindow sw, OfficeAttachment attach, String reply,
45cdf0e10cSrcweir                String sub, String com, String host, String group )
46cdf0e10cSrcweir     {
47cdf0e10cSrcweir         status = sw;
48cdf0e10cSrcweir         attachments = attach;
49cdf0e10cSrcweir                 replyto = reply;
50cdf0e10cSrcweir                 subject = sub;
51cdf0e10cSrcweir                 comment = com;
52cdf0e10cSrcweir                 hostname = host;
53cdf0e10cSrcweir                 newsgroup = group;
54cdf0e10cSrcweir     }
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 
57cdf0e10cSrcweir 
58cdf0e10cSrcweir     public boolean sendMail()
59cdf0e10cSrcweir     {
60cdf0e10cSrcweir         int statusPos = 5;
61cdf0e10cSrcweir         try
62cdf0e10cSrcweir         {
63cdf0e10cSrcweir             attachments.createTempDocs();
64cdf0e10cSrcweir             // Property for any information
65cdf0e10cSrcweir             Properties props = new Properties();
66cdf0e10cSrcweir 
67cdf0e10cSrcweir             // Create unique session (null is unused authenticator info)
68cdf0e10cSrcweir             statusLine = "Creating unique session";
69cdf0e10cSrcweir             status.setStatus( statusPos, statusLine ); // 5
70cdf0e10cSrcweir             Session session = Session.getInstance( props, null );
71cdf0e10cSrcweir 
72cdf0e10cSrcweir             // Create message
73cdf0e10cSrcweir             statusPos++; // 6
74cdf0e10cSrcweir             statusLine = "Creating message";
75cdf0e10cSrcweir             status.setStatus( statusPos, statusLine );
76cdf0e10cSrcweir             MimeMessage message = new MimeMessage( session );
77cdf0e10cSrcweir             message.setFrom( new InternetAddress( replyto ) );
78cdf0e10cSrcweir             message.setSubject( subject );
79cdf0e10cSrcweir             message.setText( comment );
80cdf0e10cSrcweir             message.addHeader( "Newsgroups", newsgroup );
81cdf0e10cSrcweir 
82cdf0e10cSrcweir             // Buildup bodypart with text and attachments
83cdf0e10cSrcweir             Multipart multipart = new MimeMultipart();
84cdf0e10cSrcweir 
85cdf0e10cSrcweir             BodyPart messageBodyPart = new MimeBodyPart();
86cdf0e10cSrcweir             messageBodyPart.setText( comment );
87cdf0e10cSrcweir             multipart.addBodyPart( messageBodyPart );
88cdf0e10cSrcweir 
89cdf0e10cSrcweir             statusPos++; // 7
90cdf0e10cSrcweir             statusLine = "Adding attachment(s)";
91cdf0e10cSrcweir             status.setStatus( statusPos, statusLine );
92cdf0e10cSrcweir             File attachs[] = attachments.getAttachments();
93cdf0e10cSrcweir             for(int i=0; i < attachs.length; i++ )
94cdf0e10cSrcweir             {
95cdf0e10cSrcweir                 //System.out.println( "Adding file: " + attachs[i].getName() );
96cdf0e10cSrcweir                 messageBodyPart = new MimeBodyPart();
97cdf0e10cSrcweir                 DataSource filesource = new FileDataSource( attachs[i] );
98cdf0e10cSrcweir                 messageBodyPart.setDataHandler( new DataHandler( filesource ));
99cdf0e10cSrcweir                 messageBodyPart.setFileName( attachs[i].getName() );
100cdf0e10cSrcweir                 multipart.addBodyPart( messageBodyPart );
101cdf0e10cSrcweir             }
102cdf0e10cSrcweir 
103cdf0e10cSrcweir             // Add multipart to mail
104cdf0e10cSrcweir             message.setContent( multipart );
105cdf0e10cSrcweir 
106cdf0e10cSrcweir             // Create and send NNTP transport
107cdf0e10cSrcweir             statusPos += 2; // 9
108cdf0e10cSrcweir             statusLine = "Creating NNTP transport";
109cdf0e10cSrcweir             status.setStatus( statusPos, statusLine );
110cdf0e10cSrcweir             Transport transport = new NNTPTransport( session, new URLName( "news:" + newsgroup ));
111cdf0e10cSrcweir 
112cdf0e10cSrcweir             // Null parameters are for user name and password
113cdf0e10cSrcweir             statusPos++; // 10
114cdf0e10cSrcweir             statusLine = "Connecting to mail server";
115cdf0e10cSrcweir             status.setStatus( statusPos, statusLine );
116cdf0e10cSrcweir             transport.connect( hostname, null, null );
117cdf0e10cSrcweir 
118cdf0e10cSrcweir             statusPos++; // 11
119cdf0e10cSrcweir             statusLine = "Sending message";
120cdf0e10cSrcweir             status.setStatus( statusPos, statusLine );
121cdf0e10cSrcweir             transport.sendMessage( message, message.getAllRecipients() );
122cdf0e10cSrcweir 
123cdf0e10cSrcweir             statusPos++; // 12
124cdf0e10cSrcweir             statusLine = "Closing transport";
125cdf0e10cSrcweir             status.setStatus( statusPos, statusLine );
126cdf0e10cSrcweir             transport.close();
127cdf0e10cSrcweir 
128cdf0e10cSrcweir             // Clean up when finished
129cdf0e10cSrcweir             attachments.removeTempDocs();
130cdf0e10cSrcweir 
131cdf0e10cSrcweir             return true;
132cdf0e10cSrcweir         }
133cdf0e10cSrcweir         catch( MessagingException me )
134cdf0e10cSrcweir         {
135cdf0e10cSrcweir             if( statusPos == 10 )
136cdf0e10cSrcweir             {
137cdf0e10cSrcweir                 statusLine = "Error connecting (User authentication?)";
138cdf0e10cSrcweir             }
139cdf0e10cSrcweir             status.setStatus( statusPos, statusLine );
140cdf0e10cSrcweir             System.out.println( "Error sending message: ");
141cdf0e10cSrcweir             me.printStackTrace();
142cdf0e10cSrcweir             return false;
143cdf0e10cSrcweir         }
144cdf0e10cSrcweir 
145cdf0e10cSrcweir     }
146cdf0e10cSrcweir 
147cdf0e10cSrcweir }
148