1
0
Fork 0
libreoffice/scripting/examples/java/Newsgroup/Sender.java
Daniel Baumann 8e63e14cf6
Adding upstream version 4:25.2.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 16:20:04 +02:00

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