Hi Thufir,

it is not clear (at least to me) what you would like to achieve ... :-)

According to Wikipedia

"NNTP - It resembled the Simple Mail Transfer Protocol (SMTP), but was tailored for exchanging newsgroup articles."

A simple road map which could help you

+) have a look http://commons.apache.org/email/userguide.html
+) have a look at the test code

at this point you should have a good idea what you can do with commons-email

Regarding headers - if you would like to add custom (aka non-SMTP) headers you should use the "X-headers" approach (see http://www.systemnetmail.com/faq/3.3.4.aspx), which are prefixed with a "X-" to keep SMTP server and clients happy.

Cheers,

Siegfried Goeschl



On 25.02.13 11:05, Thufir Hawat wrote:
On Sun, 24 Feb 2013 23:06:39 +0100, Thomas Neidhart wrote:


btw. there exists the commons-email component to send mime messages in a
more convenient way.

While it does help, it still seems to bring up the same type of
MessagingException and merely moves the problem around:

compile:
run:
200 Leafnode NNTP Daemon, version 1.11.8 running at localhost (my fqdn:
dur.bounceme.net)
GROUP comp.lang.java.help
211 47 3 49 comp.lang.java.help group selected
HEAD 3
221 3 <[email protected]> article
retrieved - head follows
BODY 3
222 3 <[email protected]> article
retrieved - body follows
Exception in thread "main" javax.mail.MessagingException:
comp.lang.java.help is not an InternetAddress
        at com.sun.mail.smtp.SMTPTransport.sendMessage
(SMTPTransport.java:1085)
        at net.bounceme.dur.nntp.ArticleReader.<init>
(ArticleReader.java:44)
        at net.bounceme.dur.nntp.Driver.<init>(Driver.java:13)
        at net.bounceme.dur.nntp.Driver.main(Driver.java:17)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)


The problem being that the String representation of headers returned by
String headers = read(client.retrieveArticleHeader(i));
seems fundamentally incompatible with any sort of javax.mail.Message, or
anything related.  there must be a way to turn that String of headers
into legitimate headers for a Message, but how?

I'm quite sure that it's possible to massage the message, if you'll
forgive me for abusing that quote, into a Message of one variety or
another.  The question is, how?  My ArticleReader.java to follow:

package net.bounceme.dur.nntp;

import java.io.BufferedReader;
import java.io.PrintWriter;
import java.util.Properties;
import java.util.logging.Logger;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import org.apache.commons.mail.util.MimeMessageUtils;
import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.nntp.NNTPClient;
import org.apache.commons.net.nntp.NewsgroupInfo;

public final class ArticleReader {

     private final static Logger LOG = Logger.getLogger
(ArticleReader.class.getName());

     public ArticleReader(Properties p) throws Exception {
         NNTPClient client = new NNTPClient();
         client.addProtocolCommandListener(new PrintCommandListener(new
PrintWriter(System.out), true));
         client.connect(p.getProperty("host"));
         NewsgroupInfo newsgroupInfo = new NewsgroupInfo();
         client.selectNewsgroup(p.getProperty("newsgroup"), newsgroupInfo);

         Session session = Session.getDefaultInstance(p);
         String protocol = p.getProperty("protocol");
         String host = p.getProperty("host");
         int port = Integer.valueOf(p.getProperty("port"));
         String username = p.getProperty("username");
         String password = p.getProperty("password");
         Transport transport = session.getTransport(protocol);
         transport.connect(host, port, username, password);

         for (long i = newsgroupInfo.getFirstArticleLong(); i <
newsgroupInfo.getLastArticleLong(); i++) {
             String headers = read(client.retrieveArticleHeader(i));
             String body = read(client.retrieveArticleBody(i));

             String sb = headers + body;
             MimeMessage message = MimeMessageUtils.createMimeMessage
(session, sb);
             message.setRecipients(RecipientType.TO, p.getProperty
("recipient"));

             transport.sendMessage(message, message.getAllRecipients());
         }
     }

     public String read(BufferedReader br) throws Exception {
         StringBuilder lines = new StringBuilder();
         String line;
         while ((line = br.readLine()) != null) {
             lines.append(line).append("\n");
         }
         br.close();
         return new String(lines);
     }
}



Any and all suggestions appreciated.


thanks,

Thufir


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to