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