147 lines
5.0 KiB
Java
147 lines
5.0 KiB
Java
/*
|
|
* 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++ )
|
|
{
|
|
//System.out.println( "Adding file: " + attachs[i].getName() );
|
|
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;
|
|
}
|
|
|
|
}
|
|
|
|
}
|