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