www.pudn.com > JMail4Email.rar > QuickMailAttach.java


// QuickMailAttach.java 
 
import javax.mail.*; 
import javax.mail.internet.*; 
 
import javax.activation.DataHandler; 
import javax.activation.FileDataSource; 
 
/** 
 *  Utility class for sending e-mail message with attachment using the JavaMail API. 
 * 
 *  @author Chad (shod) Darby, darby@j-nine.com 
 */ 
public class QuickMailAttach { 
 
	/** 
	 *  Sends a e-mail message with an attachment 
	 * 
	 *  @param smtpHost name of the SMTP mail server 
	 *  @param from e-mail address of the sender 
	 *  @param to e-mail address of the recipient 
	 *  @param subject subject of the e-mail message 
	 *  @param messageText the text of the message 
	 *  @param fileName the name of the file to attach 
	 * 
	 *  @throws javax.mail.MessagingFormatException problems sending message 
	 */ 
	public static void sendMessage(String smtpHost, 
								   								 String from, String to, 
								   								 String subject, String messageText, 
								   								 String fileName) 
	  throws MessagingException { 
 
		// Step 1:  Configure the mail session 
		System.out.println("Configuring mail session for: " + smtpHost); 
		java.util.Properties props = new java.util.Properties(); 
		props.put("mail.smtp.host", smtpHost); 
		Session mailSession = Session.getDefaultInstance(props); 
 
		// Step 2:  Construct the message 
		System.out.println("Constructing message -  from=" + from + "  to=" + to); 
		InternetAddress fromAddress = new InternetAddress(from); 
		InternetAddress toAddress = new InternetAddress(to); 
 
		MimeMessage testMessage = new MimeMessage(mailSession); 
		testMessage.setFrom(fromAddress); 
		testMessage.addRecipient(javax.mail.Message.RecipientType.TO, toAddress); 
	    testMessage.setSentDate(new java.util.Date()); 
		testMessage.setSubject(subject); 
 
	    //  Step 3:  Create a body part to hold the "text" portion of the message 
	    System.out.println("Constructing 'text' body part"); 
	    MimeBodyPart textBodyPart = new MimeBodyPart(); 
	    textBodyPart.setText(messageText); 
 
	    //  Step 4:  Create a body part to hold the "file" portion of the message 
	    System.out.println("Attaching 'file' body part: " + fileName); 
	    MimeBodyPart fileBodyPart = new MimeBodyPart(); 
   	    FileDataSource fds = new FileDataSource(fileName); 
	    fileBodyPart.setDataHandler(new DataHandler(fds)); 
	    fileBodyPart.setFileName(fds.getName()); 
		System.out.println("Finished attaching file"); 
 
	    // Step 5:  Create a Multipart/container and add the parts 
	    Multipart container = new MimeMultipart(); 
	    container.addBodyPart(textBodyPart); 
	    container.addBodyPart(fileBodyPart); 
 
	    // Step 6:  Add the Multipart to the actual message 
	    testMessage.setContent(container); 
		System.out.println("Message constructed"); 
 
		// Step 7:  Now send the message 
		Transport.send(testMessage); 
		System.out.println("Message sent!"); 
	} 
 
	public static void main(String[] args) { 
		if (args.length != 4) { 
			System.out.println("Usage:  java QuickMailAttach    "); 
			System.exit(1); 
		} 
 
		String smtpHost = args[0]; 
		String from = args[1]; 
		String to = args[2]; 
		String fileName = args[3]; 
		String subject = "Test Message - quickmail_attach"; 
 
		StringBuffer theMessage = new StringBuffer(); 
		theMessage.append("Hello,\n\n"); 
		theMessage.append("Hope all is well.\n"); 
		theMessage.append("Cheers!"); 
 
		try { 
			QuickMailAttach.sendMessage(smtpHost, from, to, subject, theMessage.toString(), fileName); 
		} 
		catch (javax.mail.MessagingException exc) { 
			exc.printStackTrace(); 
		} 
	} 
}