使用Java发送邮件(javax.mail)

 使用Java发送邮件(javax.mail)
package test;
import java.io.File;
import java.util.Vector;
import java.util.Properties;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.BodyPart;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
import javax.activation.DataSource;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeBodyPart;
import javax.activation.FileDataSource;
import javax.activation.DataHandler;
public class SendEMail
{
    /**
     * @param host邮件服务器的地址
     * @param userName 用户名(匿名允许 可以为空)
     * @param password 用户口令(匿名允许 可以为空)
     * @param addressee 收信人
     * @param addresser 发信人
     * @param subject 邮件标题
     * @param contentText 邮件内容
     * files 附件(路径)
     */

    public static void sendEMail(String host,String userName,String password,String addressee,String addresser,String subject,String contentText,Vector files)
    {
        try{
            //创建 properties(里面包含了发送邮件服务器的地址)
            Properties mailProps = new Properties();
            mailProps.setProperty("mail.smtp.host", host);
            //创建Session
            Session mailSession = null;
            if( userName != null && userName.trim().length() > 0 ){
                mailProps.put("mail.smtp.auth","true");
                if(password==null) password=""; //
                mailSession = Session.getInstance(mailProps,new MyAuth(userName,password));
           }else{
               //mailSession = Session.getInstance(mailProps,null);
               mailSession = Session.getDefaultInstance(mailProps);
           }
            //创建message(包含了邮件众多有的部件的对象)
            MimeMessage message = new MimeMessage(mailSession);
            //设置发信人
            message.setFrom(new InternetAddress(addresser));
            //设置收信人( 参数 BCC(blind carbon copy) CC(carbon copy) TO(primary))
            message.setRecipient(Message.RecipientType.TO,new InternetAddress(addressee));
            //设置邮件标题
            message.setSubject(subject);
            //邮件内容(不含有附件)
            if(files == null){
                message.setText(contentText);
            }else{
                //创建 Mimemultipart添加内容(可包含多个附件)
                MimeMultipart multi = new MimeMultipart();
                //MimeBodyPart(用于信件内容/附件)
                BodyPart textBodyPart = new MimeBodyPart();
                textBodyPart.setText(contentText);
                //添加到MimeMultipart对象中
                multi.addBodyPart(textBodyPart);
                //创建FileDAtaSource(用于添加附件)
                for(int j=0; j                {
                    try{
                        File file = (File)files.elementAt(j);
                        String fname = file.getName();
                        FileDataSource fds = new FileDataSource(file);
                        BodyPart fileBodyPart = new MimeBodyPart();
                        //字符流形式装入文件
                        fileBodyPart.setDataHandler(new DataHandler(fds));
                        fileBodyPart.setFileName("fname");//设置附件文件名
                        multi.addBodyPart(fileBodyPart);
                        message.setContent(multi);
                    }catch(Exception er){
                        er.printStackTrace();
                    }
                }
            }
            //保存改变
            message.saveChanges();
            //发送邮件(Transport类是SMTP的邮件发送协议)
            Transport.send(message);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }

    //测试/*
    public static void main(String[] args)
    {
        Vector files = new Vector();
        files.addElement(new File("D://Relucent.txt"));
        SendEMail.sendEMail("127.0.0.1",
                        null,
                        null,
                        "[email protected]",
                        "[email protected]",
                        "测试邮件发送",
                        "收到了没有?看看附件",
                        files);
    }//*/
}

你可能感兴趣的:(使用Java发送邮件(javax.mail))