diff options
Diffstat (limited to 'scripting/examples/java/Newsgroup/Sender.java')
-rw-r--r-- | scripting/examples/java/Newsgroup/Sender.java | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/scripting/examples/java/Newsgroup/Sender.java b/scripting/examples/java/Newsgroup/Sender.java new file mode 100644 index 000000000..00b3db87b --- /dev/null +++ b/scripting/examples/java/Newsgroup/Sender.java @@ -0,0 +1,141 @@ +/* + * 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; + } + + } + +} |