If I try to implement RDF using existed DB >>
<< Run commands using CreateProcess in NT Services
Sending email using Java Mail

Author Zhou Renjian Create@ 2004-11-14 13:39
whizz Note icon
 /*
 *Source File Name:   SMTPClient.java
 *@author : takecare@etang.com
 */
//the content is too large, the following is part one:

import java.io.File;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.SendFailedException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.event.ConnectionEvent;
import javax.mail.event.ConnectionListener;
import javax.mail.event.TransportEvent;
import javax.mail.event.TransportListener;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;


public class SMTPClient implements ConnectionListener, TransportListener {
    private InternetAddress hostname;
    private String host;
    private String from;
    private InternetAddress fromAddress;
    private InternetAddress receiveAddress[];
    private InternetAddress replyTos[];
    private String receive[];
    private String auth;
    private String ehlo;
    private String username;
    private String password;
    private String subject;
    private String content;
    private String contentType;
    private String charset;
    private MimeBodyPart mimeParts[];
    private String attachmentFiles[];
    private String reply[];
    private Date sendDate;
    private boolean debugFlag;

    public SMTPClient() {
        from = "";
        receive = new String[0];
        host = "localhost";
        subject = "kingtone";
        content = "";
        contentType = "text/plain";
        charset = "gb2312";
        mimeParts = new MimeBodyPart[0];
        attachmentFiles = new String[0];
        reply = new String[0];
        sendDate = new Date();
        debugFlag = false;
        auth = "false";
        ehlo = "false";
    }

    public void setFromAddress(String fromAddr) {
        from = fromAddr;
    }
    

    public void setFromAddress(InternetAddress fromAddr) {
        fromAddress = fromAddr;
        from = null;
    }

    public String getFromAddress() {
        return from;
    }
    
    public void setToAddresses(String toAddress[]) {
        receive = toAddress;
    }

    public void setToAddress(String toAddress) {
        receive = (new String[] {toAddress} );
    }

    public void setToAddresses(InternetAddress to[]) {
        receiveAddress = to;
        receive = null;
    }

    public String[] getToAddresses() {
        return receive;
    }
    
    public void setHost(String h) {
        host = h;
    }

    public void setHost(InternetAddress h) {
        hostname = h;
    }
    
    public String getHost() {
        return host;
    }
    
    public void setSubject(String subj) {
        subject = subj;
    }

    public String getSubject() {
        return subject;
    }

    public void setReplyToAddresses(String replyTo[]) {
        reply = replyTo;
    }

    public void setReplyToAddresses(InternetAddress replyTo[]) {
        replyTos = replyTo;
        reply = null;
    }

    public void setReplyToAddress(String replyTo) {
        reply = (new String[] {replyTo});
    }

    public String[] getReplyToAddresses() {
        return reply;
    }
    
    public void setTextContent(String cont) {
        content = cont;
    }

    public String getTextContent() {
        return content;
    }

    public void setContentType(String contType) {
        contentType = contType;
    }

    public String getContentType() {
        return contentType;
    }

    public void setCharset(String encoding) {
        charset = encoding;
    }

    public String getCharset() {
        return charset;
    }

    public void enableAUTH() {
        auth = "true";
        ehlo = "true";
    }
    
    public void disableAUTH() {
        auth = "false";
        ehlo = "false";
    }
    
    public void setMimeParts(MimeBodyPart mimeParts[]) {
        this.mimeParts = mimeParts;
        attachmentFiles = null;
    }

    public MimeBodyPart[] getMimeParts() {
        return mimeParts;
    }

    public void setFileAttachments(String files[]) {
        attachmentFiles = files;
    }

    public void setFileAttachment(String filename) {
        attachmentFiles = (new String[] {
            filename
        });
        mimeParts = null;
    }

    public String[] getFileAttachments() {
        return attachmentFiles;
    }

    public void setDebug(boolean debug) {
        debugFlag = debug;
    }

    public boolean getDebug() {
        return debugFlag;
    }

    public void setSentDate(Date sentDate) {
        sendDate = sentDate;
    }

    public Date getSentDate() {
        return sendDate;
    }

    public void setUserName(String name) {
        username = name;
    }

    public String getUserName() {
        return username;
    }

    public void setPassword(String passwd) {
        password = passwd;
    }

    public String getPassword() {
        return password;
    }

//part two as follows:

    public boolean isOK() {
        return host != null && receiveAddress != null && fromAddress != null;
    }

    public void sendMessage() {
        Transport trans = null;
        try {
            if(receiveAddress == null) {
                int toCount = receive.length;
                receiveAddress = new InternetAddress[toCount];
                for(int i = 0; i < toCount; i++) {
                    receiveAddress[i] = new InternetAddress(receive[i]);
                }
            }
            if(fromAddress == null)
                fromAddress = new InternetAddress(from);

            Properties props = new Properties();
            props.put("mail.smtp.host", host);
            props.put("mail.smtp.ehlo", ehlo);
            props.put("mail.smtp.auth", auth);
//            System.out.println("in try");

            Session session = Session.getDefaultInstance(props, null);

            session.setDebug(debugFlag);
    
            MimeMessage msg = new MimeMessage(session);

            msg.setFrom(fromAddress);
            msg.setRecipients(javax.mail.Message.RecipientType.TO, receiveAddress);

            if(subject != null && !subject.equals(""))
                msg.setSubject(subject, charset);

            if(replyTos != null || reply != null) {
                if(reply != null) {
                    replyTos = new InternetAddress[reply.length];
                    for(int i = 0; i < reply.length; i++) {
                        replyTos[i] = new InternetAddress(reply[i]);
                    }
                }
                msg.setReplyTo(replyTos);
            }

            msg.setSentDate(sendDate);
            if(mimeParts != null && mimeParts.length != 0) {
                Multipart mpart = new MimeMultipart();
                if(content != null && !content.equals("")) {
                    MimeBodyPart mbp = new MimeBodyPart();
                    mbp.setContent(content, contentType);
                    mpart.addBodyPart(mbp);
                }
                for(int i = 0; i < mimeParts.length; i++)
                    mpart.addBodyPart(mimeParts[i]);
    
                msg.setContent(mpart);
            } else if(attachmentFiles != null && attachmentFiles.length != 0) {
                Multipart mpart = new MimeMultipart();
                if(content != null && !content.equals("")) {
                    MimeBodyPart mb = new MimeBodyPart();
                    ////mb.setContent(content, contentType);
                    mb.setText(content, charset);
                    mpart.addBodyPart(mb);
                }
                for(int i = 0; i < attachmentFiles.length; i++) {
                    MimeBodyPart mb = new MimeBodyPart();
                    FileDataSource fds = new FileDataSource(attachmentFiles[i]);
                    mb.setDataHandler(new DataHandler(fds));
                    mb.setFileName((new File(attachmentFiles[i])).getName());
                    mpart.addBodyPart(mb);
                }
    
                msg.setContent(mpart);
            } else if(content != null && !content.equals(""))
                msg.setContent(content, contentType);
                
            
            msg.saveChanges();
            trans = session.getTransport(receiveAddress[0]);
            // register ourselves as listener for ConnectionEvents
            // and TransportEvents
            trans.addConnectionListener(this);
            trans.addTransportListener(this);
            
            if(username != null && password != null) {
                trans.connect(host, username, password);
                msg.saveChanges();
            } else {
                trans.connect();
            }
            //msg.saveChanges();
            trans.sendMessage(msg, receiveAddress);
            // give the EventQueue enough time to fire its events
            try {Thread.sleep(5);}catch(InterruptedException e) {}
        } catch (MessagingException mex) {
            // give the EventQueue enough time to fire its events
            try {Thread.sleep(5);}catch(InterruptedException e) {}
    
            mex.printStackTrace();
            System.out.println();
            Exception ex = mex;
            do {
                if (ex instanceof SendFailedException) {
                    SendFailedException sfex = (SendFailedException)ex;
                    Address[] invalid = sfex.getInvalidAddresses();
                    if (invalid != null) {
                        System.out.println("    ** Invalid Addresses");
                        if (invalid != null) {
                            for (int i = 0; i < invalid.length; i++)
                            System.out.println("         " + invalid[i]);
                        }
                    }
                    Address[] validUnsent = sfex.getValidUnsentAddresses();
                    if (validUnsent != null) {
                        System.out.println("    ** ValidUnsent Addresses");
                        if (validUnsent != null) {
                            for (int i = 0; i < validUnsent.length; i++)
                            System.out.println("         "+validUnsent[i]);
                        }
                    }
                    Address[] validSent = sfex.getValidSentAddresses();
                    if (validSent != null) {
                        System.out.println("    ** ValidSent Addresses");
                        if (validSent != null) {
                            for (int i = 0; i < validSent.length; i++)
                            System.out.println("         "+validSent[i]);
                        }
                    }
                }
                System.out.println();
                if (ex instanceof MessagingException)
                    ex = ((MessagingException)ex).getNextException();
                else
                    ex = null;
            } while (ex != null);
        } finally {
            try {
            // close the transport
            trans.close();
            } catch (MessagingException mex) { /* ignore */ }
        }
    }

    // implement ConnectionListener interface
    public void opened(ConnectionEvent e) {
        System.out.println(">>> ConnectionListener.opened()");
    }
    public void disconnected(ConnectionEvent e) {}
    public void closed(ConnectionEvent e) {
        System.out.println(">>> ConnectionListener.closed()");
    }

    // implement TransportListener interface
    public void messageDelivered(TransportEvent e) {
        System.out.print(">>> TransportListener.messageDelivered().");
        System.out.println(" Valid Addresses:");
        Address[] valid = e.getValidSentAddresses();
        if (valid != null) {
            for (int i = 0; i < valid.length; i++)
                System.out.println("    " + valid[i]);
        }
    }
    
    public void messageNotDelivered(TransportEvent e) {
        System.out.print(">>> TransportListener.messageNotDelivered().");
        System.out.println(" Invalid Addresses:");
        Address[] invalid = e.getInvalidAddresses();
        if (invalid != null) {
            for (int i = 0; i < invalid.length; i++)
            System.out.println("    " + invalid[i]);
        }
    }
    public void messagePartiallyDelivered(TransportEvent e) {
        // SMTPTransport doesn't partially deliver msgs
    }


    public static void main(String[] args) {
        SMTPClient cl=new SMTPClient();
        cl.setHost("localhost");

        cl.setFromAddress("jozz@whizzideas.com");

        cl.setToAddresses(new String[]{"jozz@whizzideas.com", "joo@sjtu.edu.cn"});

        cl.setReplyToAddresses( new String[]{"jozz@whizzideas.com"} );
        cl.enableAUTH();
        cl.setUserName("jozz");
        cl.setPassword("");
        cl.setCharset("gb2312");

        cl.setSubject("DNS offline!");
        //cl.setFileAttachments(new String[]{"attachment1.txt", "k.jqs"});
        cl.setTextContent("The current IP is : 222.64.160.10");
        //cl.setContentType("text/html"); //for HTML messaging

        cl.sendMessage();
    }
}

本记录所在类别:
本记录相关记录: