/* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ package org.libreoffice.example.java_scripts; import javax.mail.*; import javax.mail.internet.*; import com.msoft.mail.provider.nntp.NNTPTransport; import java.util.Properties; import java.io.*; import javax.activation.*; public class Sender { // Constructor params: private StatusWindow status = null; private OfficeAttachment attachments = null; private String replyto = ""; private String subject = ""; private String comment = ""; private String hostname = ""; private String newsgroup = ""; private String statusLine = ""; public Sender( StatusWindow sw, OfficeAttachment attach, String reply, String sub, String com, String host, String group ) { status = sw; attachments = attach; replyto = reply; subject = sub; comment = com; hostname = host; newsgroup = group; } public boolean sendMail() { int statusPos = 5; try { attachments.createTempDocs(); // Property for any information Properties props = new Properties(); // Create unique session (null is unused authenticator info) statusLine = "Creating unique session"; status.setStatus( statusPos, statusLine ); // 5 Session session = Session.getInstance( props, null ); // Create message statusPos++; // 6 statusLine = "Creating message"; status.setStatus( statusPos, statusLine ); MimeMessage message = new MimeMessage( session ); message.setFrom( new InternetAddress( replyto ) ); message.setSubject( subject ); message.setText( comment ); message.addHeader( "Newsgroups", newsgroup ); // Buildup bodypart with text and attachments Multipart multipart = new MimeMultipart(); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText( comment ); multipart.addBodyPart( messageBodyPart ); statusPos++; // 7 statusLine = "Adding attachment(s)"; status.setStatus( statusPos, statusLine ); File attachs[] = attachments.getAttachments(); for(int i=0; i < attachs.length; i++ ) { messageBodyPart = new MimeBodyPart(); DataSource filesource = new FileDataSource( attachs[i] ); messageBodyPart.setDataHandler( new DataHandler( filesource )); messageBodyPart.setFileName( attachs[i].getName() ); multipart.addBodyPart( messageBodyPart ); } // Add multipart to mail message.setContent( multipart ); // Create and send NNTP transport statusPos += 2; // 9 statusLine = "Creating NNTP transport"; status.setStatus( statusPos, statusLine ); Transport transport = new NNTPTransport( session, new URLName( "news:" + newsgroup )); // Null parameters are for user name and password statusPos++; // 10 statusLine = "Connecting to mail server"; status.setStatus( statusPos, statusLine ); transport.connect( hostname, null, null ); statusPos++; // 11 statusLine = "Sending message"; status.setStatus( statusPos, statusLine ); transport.sendMessage( message, message.getAllRecipients() ); statusPos++; // 12 statusLine = "Closing transport"; status.setStatus( statusPos, statusLine ); transport.close(); // Clean up when finished attachments.removeTempDocs(); return true; } catch( MessagingException me ) { if( statusPos == 10 ) { statusLine = "Error connecting (User authentication?)"; } status.setStatus( statusPos, statusLine ); System.out.println( "Error sending message: "); me.printStackTrace(); return false; } } }