1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
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++ )
{
//System.out.println( "Adding file: " + attachs[i].getName() );
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;
}
}
}
|