Build
#
javac Bulkmail.java
Run
#
# get help
#
java Bulkmail -h
#
# test the program
#
java Bulkmail -D -s "subject" -i in.txt -l list.txt -c abs@well.com -f abs@well.com
in.txt
Hi, this a test message that should
be in the body of the email.
list.txt
tom@marslink.com
dick@marslink.com
harry@marslink.com
debi@dallas.tx.gov
Bulkmail.java
import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.event.*;
import javax.mail.internet.*;
// Bulkmail.java
//
// ABS 02003-02-22 copied from Detab.java
// ABS 02003-02-23 hacked, copied in code from MailClient.java
//
public class Bulkmail {
static String mailHost;
static String sourceEmail;
static String destinationEmail;
static String subjectString;
static String ccString;
static String bodyString;
static boolean debugFlag;
public static void main(String[] args) {
String tempArg;
String inputFileName = "input.txt";
String listFileName = "list.txt";
String thisLine;
int i, j;
// init defaults
mailHost = "smtp.west.cox.net";
sourceEmail = "abs@well.com";
destinationEmail = "abs@well.com";
ccString = "abs@well.com";
subjectString = "test";
debugFlag = false;
bodyString = "\n";
// parse args
for (i = 0; i < args.length; i++) {
tempArg = args[i];
int size = tempArg.length();
if ((tempArg.charAt(0) == '-') && (size > 1)) {
for (j = 1; j < size; j++) {
if (tempArg.charAt(j) == 'D') {
debugFlag = true;
} else if (tempArg.charAt(j) == 'h') {
help();
return;
} else if (tempArg.charAt(j) == 'c') {
tempArg = args[++i];
ccString = tempArg;
} else if (tempArg.charAt(j) == 'f') {
tempArg = args[++i];
sourceEmail = tempArg;
} else if (tempArg.charAt(j) == 'i') {
tempArg = args[++i];
inputFileName = tempArg;
} else if (tempArg.charAt(j) == 'l') {
tempArg = args[++i];
listFileName = tempArg;
} else if (tempArg.charAt(j) == 's') {
tempArg = args[++i];
subjectString = tempArg;
} else {
System.err.println(
"ERROR: Illegal flag: -"
+ tempArg.charAt(j));
usage();
return;
}
} // end for(j)
} else {
System.err.println(
"ERROR: Illegal argument: "
+ tempArg);
usage();
return;
}
} // end for(i)
// grab body
// *************************************************************
if (debugFlag) System.err.println(
"DEBUG: about to process input file: " + inputFileName);
// *************************************************************
// process list
// try/catch block
try {
BufferedReader bf = new BufferedReader(new FileReader(inputFileName));
while ((thisLine = bf.readLine()) != null) { // while loop begins here
bodyString = bodyString + thisLine + "\n";
} // end while
} // end try
catch (IOException e) {
System.err.println("Error: " + e);
}
// *******************************************************************
if (debugFlag) System.err.println(
"DEBUG: bodyString: " + bodyString);
// *******************************************************************
// *******************************************************************
if (debugFlag) System.err.println(
"DEBUG: about to process list file: " + listFileName);
// *******************************************************************
// try/catch block
try {
BufferedReader br = new BufferedReader(new FileReader(listFileName));
while ((thisLine = br.readLine()) != null) { // while loop begins here
destinationEmail = thisLine;
// *************************************************************
if (debugFlag) System.err.println(
"DEBUG: got line: " + thisLine);
if (debugFlag) System.err.println(
"DEBUG: destinationEmail: " + destinationEmail);
// *************************************************************
sendMessage(debugFlag);
} // end while
} // end try
catch (IOException e) {
System.err.println("Error: " + e);
}
}
private static void help() {
System.err.println(" ");
System.err.println("Bulkmail -- send an email to a bunch of addresses");
System.err.println(" ");
usage();
System.err.println(" ");
System.err.println("flag meaning default");
System.err.println("----------- --------------------------- ------------");
System.err.println("-D Debug mode false");
System.err.println("-h give help then exit false");
System.err.println("-c cc address abs@well.com");
System.err.println("-f from address abs@well.com");
System.err.println("-i input filename input.txt");
System.err.println("-l list filename list.txt");
System.err.println("-s subject string test");
System.err.println(" ");
}
private static void usage() {
System.err.println(
"USAGE: Bulkmail [flags]");
}
static void sendMessage(boolean debugFlag) {
Properties properties = new Properties();
properties.put("mail.smtp.host",mailHost);
properties.put("mail.from",sourceEmail);
Session session = Session.getInstance(properties, null);
try {
Message message = new MimeMessage(session);
InternetAddress[] address =
{new InternetAddress(destinationEmail)};
InternetAddress[] ccAddress =
{new InternetAddress(ccString)};
message.setRecipients(Message.RecipientType.TO, address);
message.setRecipients(Message.RecipientType.CC, ccAddress);
message.setFrom(new InternetAddress(sourceEmail));
message.setSubject(subjectString);
message.setContent(bodyString,"text/plain");
// advice from a Java board
Address[] addrs = message.getAllRecipients();
Transport transport = session.getTransport(address[0]);
transport.addConnectionListener(new ConnectionHandler());
transport.addTransportListener(new TransportHandler());
transport.connect();
// advice from a Java board
transport.sendMessage(message,addrs); // instead of address
}catch(Exception e){
// ************************************************************************
if (debugFlag)
System.err.println("ERROR: "
+ e.toString());
// ************************************************************************
}
}
}
class ConnectionHandler extends ConnectionAdapter {
public void opened(ConnectionEvent e) {
}
public void disconnected(ConnectionEvent e) {
}
public void closed(ConnectionEvent e) {
}
}
class TransportHandler extends TransportAdapter {
public void messageDelivered(TransportEvent e) {
}
public void messageNotDelivered(TransportEvent e) {
}
public void messagePartiallyDelivered(TransportEvent e) {
}
}
mail.java
void sendMessage() {
Properties properties = new Properties();
properties.put("mail.smtp.host",mailHost);
properties.put("mail.from",source.getText());
Session session = Session.getInstance(properties, null);
try {
Message message = new MimeMessage(session);
InternetAddress[] address =
{new InternetAddress(destination.getText())};
message.setRecipients(Message.RecipientType.TO, address);
message.setFrom(new InternetAddress(source.getText()));
message.setSubject(subject.getText());
message.setContent(content.getText(),"text/plain");
Transport transport = session.getTransport(address[0]);
transport.addConnectionListener(new ConnectionHandler());
transport.addTransportListener(new TransportHandler());
transport.connect();
transport.sendMessage(message,address);
}catch(Exception e){
status.setText(e.toString());
}
}
class ConnectionHandler extends ConnectionAdapter {
public void opened(ConnectionEvent e) {
status.setText("Connection opened.");
}
public void disconnected(ConnectionEvent e) {
status.setText("Connection disconnected.");
}
public void closed(ConnectionEvent e) {
status.setText("Connection closed.");
}
}
class TransportHandler extends TransportAdapter {
public void messageDelivered(TransportEvent e) {
status.setText("Message delivered.");
}
public void messageNotDelivered(TransportEvent e) {
status.setText("Message NOT delivered.");
}
public void messagePartiallyDelivered(TransportEvent e) {
status.setText("Message partially delivered.");
}
}