smtp 发邮件

package com.wonibo.projectx.web.util;

import java.util.ArrayList;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;
import javax.mail.internet.MimeUtility;

public class SendMailUtil{
    
    private String sendAddress;  
    private String receiveAddress;  
      
    private String SMTPServer;  
    private String username;  
    private String password;  
    private String subject;  
    private String content;  
    private ArrayList<String> file = new ArrayList<String>();//用于保存发送附件的文件名的集合   
      
      
    public SendMailUtil(String SMTPServer,String sendAddress,String receiveAddress,String username,  
            String password,String subject,String content){  
        this.sendAddress = sendAddress;  
        this.SMTPServer = SMTPServer;  
        this.subject = subject;  
        this.content = content;  
        this.receiveAddress = receiveAddress;  
        this.username = username;  
        this.password = password;  
    }  
      
    private static class Email_Autherticatorbean extends Authenticator {  
 
        private String m_username = null;  
 
        private String m_userpass = null;  
 
        public Email_Autherticatorbean(String username, String userpass) {  
            super();  
            setUsername(username);  
            setUserpass(userpass);  
        }  
 
        public PasswordAuthentication getPasswordAuthentication() {  
            return new PasswordAuthentication(m_username, m_userpass);  
        }  
 
        public void setUsername(String username) {  
            m_username = username;  
        }  
 
        public void setUserpass(String userpass) {  
            m_userpass = userpass;  
        }  
    }  
      
    public void sendMail(){  
        Properties props = new Properties();  
        props.put("mail.smtp.host", this.SMTPServer);  
        props.put("mail.smtp.auth", "true");  
          
        Session session = null;  
        Email_Autherticatorbean SMTPAuth = new Email_Autherticatorbean(username,password);  
        session = Session.getDefaultInstance(props,SMTPAuth);  
        session.setDebug(true);  
          
        Transport trans = null;  
        try{  
            MimeMessage msg = new MimeMessage(session);  
            msg.setFrom(new InternetAddress(this.sendAddress));  
            if (this.receiveAddress.indexOf(",") > 0)  
                this.receiveAddress = this.receiveAddress.replaceAll(",", ",");  
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(this.receiveAddress));  
            msg.setSubject(subject);  
              
            Multipart mp = new MimeMultipart();    
            MimeBodyPart mbp = new MimeBodyPart();    
            mbp.setContent("<meta http-equiv=Content-Type content=text/html; charset=GBK>"+  
                                this.content, "text/html;charset=gb2312");    
            mp.addBodyPart(mbp);      
            if(!file.isEmpty()){//有附件    
                String filename = "";  
                for(int i = 0 ; i < file.size() ; i ++){  
                     mbp=new MimeBodyPart();  
                     filename = file.get(i);  
                     FileDataSource fds=new FileDataSource(filename); //得到数据源    
                     mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart    
                    // sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();  
                   //  mbp.setFileName("=?GBK?B?"+enc.encode(filename.getBytes())+"?=");  
                     mbp.setFileName(MimeUtility.encodeText(filename));  //得到文件名同样至入BodyPart   
                     mp.addBodyPart(mbp);   
                }  
                file.clear();       
            }     
            msg.setContent(mp); //Multipart加入到信件    
            msg.setSentDate(new Date());     //设置信件头的发送日期    
            //发送信件    
            msg.saveChanges();     
            trans = session.getTransport("smtp");    
            trans.connect(SMTPServer, username, password);    
            trans.sendMessage(msg, msg.getAllRecipients());    
            trans.close();    
        }catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
      
    public void setSMTPServer(String SMTPServer){  
        this.SMTPServer = SMTPServer;  
    }  
      
    /**设置发件人地址*/  
    public void setSendAddress(String sendAddress){  
        this.sendAddress = sendAddress;  
    }  
      
    public void setUsername(String username){  
        this.username = username;  
    }  
      
    public void setPassword(String password){  
        this.password = password;  
    }  
      
    /**设置收件人地址*/  
    public void setReceiveAddress(String receiveAddress){  
        this.receiveAddress = receiveAddress;  
    }  
      
    public void setSubject(String subject){  
        this.subject = subject;  
    }  
      
    public void setContent(String content){  
        this.content = content;  
    }  
      
    public void addAttachFile(String filename){  
        this.file.add(filename);  
    }  
     
    public static void main(String[] args) {
        String from = "123321@163.com";  
        String username = "312123@163.com";  
        String host = "smtp.163.com";  
        String password = "123321123";  
        String to = "321123321@qq.com";//给多个邮箱同时发送  
        String subject = "Java 发送的第一个邮件";  
        String content = "Java Mail 已经发送邮件";  
        SendMailUtil mail = new SendMailUtil(host,from,to,username,password,subject,content);  
        mail.addAttachFile("G:\\test.txt");  
        mail.sendMail();  
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值