/*
* 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;
}
}
}