141 lines
4.8 KiB
Java
141 lines
4.8 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++) {
|
|
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;
|
|
}
|
|
|
|
}
|
|
|
|
}
|