`
chenzhuo1016
  • 浏览: 25757 次
  • 来自: ...
社区版块
存档分类
最新评论

Java Mail的使用

    博客分类:
  • java
阅读更多
Java Mail的使用
一.用于进行用户认证的类(PopupAuthenticator):
import javax.mail.*;
public class PopupAuthenticator extends Authenticator{
    String username=null;
    String password=null;
    public PopupAuthenticator(String user, String pass) {
        username = user;
        password = pass;
    }
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(username, password);
    }
}
二.用于封装发送邮件的用户信息的类(MailuserInfo):
public class MailuserInfo {  
    private int id;
    //邮件服务器地址
    private String host;
    //一定要是有效的Email地址(否则无法通过认证)
    private String from;
    //邮件服务器用户认证
    private String user;
    private String password;
    public String getFrom() {
        return from;
    }
    public void setFrom(String from) {
        this.from = from;
    }
    public String getHost() {
        return host;
    }
    public void setHost(String host) {
        this.host = host;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
}
三.用于封装具体邮件信息的类(MailEntry):
public class MailEntry {
    //抄送的地址
    private String cc;
    //发送的地址
    private String to;
    //邮件主题
    private String title;
    //邮件附件
    private String file;
    //邮件正文
    private String content;
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getTo() {
        return to;
    }
    public void setTo(String to) {
        this.to = to;
    }
    public String getFile() {
        return file;
    }
    public void setFile(String file) {
        this.file = file;
    }
    public String getCc() {
        return cc;
    }
    public void setCc(String cc) {
        this.cc = cc;
    }
}
四.用于实现发送邮件功能的类(MailUtil):
import java.io.File;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class MailUtil {
    public static void send(MailuserInfo info,MailEntry entry)
    {
        try {
            Properties properties = System.getProperties();
            //邮件服务器
            properties.put("mail.smtp.host", info.getHost());
            //设置邮件发送协议
            properties.put("mail.transport.protocol", "smtp");
            //进行用户认证
            properties.put("mail.smtp.auth","true");
            //邮件服务器用户认证
            PopupAuthenticator popAuthenticator = new PopupAuthenticator(info.getUser(),info.getPassword());
                   
            Session session = Session.getDefaultInstance(properties, popAuthenticator);
            session.setDebug(false);
            Message msg = new MimeMessage(session);
            msg.setFrom(new InternetAddress(info.getFrom()));
            InternetAddress[] addresses = null;//{ new InternetAddress(entry.getTo()) };
            String[] toArrays = entry.getTo().split(",");
            addresses = new InternetAddress[toArrays.length];
           
            for (int i = 0; i < toArrays.length; i++) {
                addresses[i] = new InternetAddress(toArrays[i]);
                System.out.println("发送的地址为:" + toArrays[i]);
            }
           
            if(entry.getCc() != null && (!"".equals(entry.getCc())))
            {
                String[] ccArrays = entry.getCc().split(",");
                InternetAddress[] addresscc = new InternetAddress[ccArrays.length];
               
                for (int i = 0; i < ccArrays.length; i++) {
                    addresscc[i] = new InternetAddress(ccArrays[i]);
                    System.out.println("抄送的地址为:" + ccArrays[i]);
                }
                msg.setRecipients(Message.RecipientType.CC, addresscc);
            }
            //设置邮件接收方的地址
            msg.setRecipients(Message.RecipientType.TO, addresses);
            //设置邮件主题
            msg.setSubject(entry.getTitle());
            //设置邮件发送日期
            msg.setSentDate(new Date());
            //邮件内容,附件等内容均添加到其中后再生成MimeMessage对象
            Multipart multipart = new MimeMultipart();
            //设置邮件正文
            if(entry.getContent() != null)
            {               
                System.out.println("设置邮件正文:" + entry.getContent());
                BodyPart body = new MimeBodyPart();
                body.setText(entry.getContent());               
                multipart.addBodyPart(body);               
            }               
           
            if(entry.getFile() != null && !entry.getFile().equals(""))
            {
                BodyPart bodyPart = new MimeBodyPart();
                bodyPart.setText("文件");
               
                //Multipart multipart = new MimeMultipart();
               
                //此处设置邮件的附件
                DataSource source = new FileDataSource(entry.getFile());
                bodyPart.setDataHandler(new DataHandler(source));
                File file = new File(entry.getFile());
                bodyPart.setFileName(file.getName());
                multipart.addBodyPart(bodyPart);               
                System.out.println("发送附件..");
            }
           
            msg.setContent(multipart);
           
            Transport transport = session.getTransport("smtp");
            System.out.println("连接邮件服务器!");
            transport.connect((String)properties.get("mail.smtp.host"),info.getUser(),info.getPassword());
            System.out.println("发送邮件....");
            transport.send(msg,msg.getRecipients(Message.RecipientType.TO));
            System.out.println("发送成功!");
            transport.close();
            //Transport.send(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
注:在使用时需要导入的包:activation.jar,mail.jar.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics