JavaMail发送邮件

java实现发送邮件:

 
import java.util.Date;  
import java.util.Enumeration;  
import java.util.Properties;  
import java.util.Vector;  
  
import javax.activation.*;  
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;  
  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.text.ParseException;  
import java.util.ArrayList;  
import java.util.Date;  
import java.util.HashSet;  
import java.util.Iterator;  
import java.util.List;  
import java.util.Locale;  
import java.util.Set;  
import java.util.regex.Pattern;  
  
/** 
 * <p> 
 * Title: 使用javamail发送邮件 
 * </p> 
 */  
public class testSendMail {  
  
    String to = "";// 收件人  
    String from = "";// 发件人  
    String host = "";// smtp主机  
    String username = "";  
    String password = "";  
    String filename = "";// 附件文件名  
    String subject = "";// 邮件主题  
    String content = "";// 邮件正文  
    Vector file = new Vector();// 附件文件集合  
  
    /** 
     * <br> 
     * 方法说明:默认构造器 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public testSendMail() {  
    }  
  
    /** 
     * <br> 
     * 方法说明:构造器,提供直接的参数传入 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public testSendMail(String to, String from, String smtpServer,  
            String username, String password, String subject, String content) {  
        this.to = to;  
        this.from = from;  
        this.host = smtpServer;  
        this.username = username;  
        this.password = password;  
        this.subject = subject;  
        this.content = content;  
    }  
  
    /** 
     * <br> 
     * 方法说明:设置邮件服务器地址 <br> 
     * 输入参数:String host 邮件服务器地址名称 <br> 
     * 返回类型: 
     */  
    public void setHost(String host) {  
        this.host = host;  
    }  
  
    /** 
     * <br> 
     * 方法说明:设置登录服务器校验密码 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public void setPassWord(String pwd) {  
        this.password = pwd;  
    }  
  
    /** 
     * <br> 
     * 方法说明:设置登录服务器校验用户 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public void setUserName(String usn) {  
        this.username = usn;  
    }  
  
    /** 
     * <br> 
     * 方法说明:设置邮件发送目的邮箱 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public void setTo(String to) {  
        this.to = to;  
    }  
  
    /** 
     * <br> 
     * 方法说明:设置邮件发送源邮箱 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public void setFrom(String from) {  
        this.from = from;  
    }  
  
    /** 
     * <br> 
     * 方法说明:设置邮件主题 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public void setSubject(String subject) {  
        this.subject = subject;  
    }  
  
    /** 
     * <br> 
     * 方法说明:设置邮件内容 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public void setContent(String content) {  
        this.content = content;  
    }  
  
    /** 
     * <br> 
     * 方法说明:把主题转换为中文 <br> 
     * 输入参数:String strText <br> 
     * 返回类型: 
     */  
    public String transferChinese(String strText) {  
        try {  
            strText = MimeUtility.encodeText(new String(strText.getBytes(),  
                    "utf-8"), "utf-8", "B");  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return strText;  
    }  
  
    /** 
     * <br> 
     * 方法说明:往附件组合中添加附件 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public void attachfile(String fname) {  
        file.addElement(fname);  
    }  
  
    /** 
     * <br> 
     * 方法说明:发送邮件 <br> 
     * 输入参数: <br> 
     * 返回类型:boolean 成功为true,反之为false 
     */  
    public boolean sendMail() {  
  
        // 构造mail session  
        Properties props = new Properties() ;  
        props.put("mail.smtp.host", host);  
//        props.put("mail.smtp.auth", "true");  
//        Session session = Session.getDefaultInstance(props,  
//                new Authenticator() {  
//                    public PasswordAuthentication getPasswordAuthentication() {  
//                        return new PasswordAuthentication(username, password);  
//                    }  
//                });  
        //Session session = Session.getDefaultInstance(props);  
      Session session = Session.getDefaultInstance(props, null);  
  
        try {  
            // 构造MimeMessage 并设定基本的值  
            MimeMessage msg = new MimeMessage(session);  
            //MimeMessage msg = new MimeMessage();  
            msg.setFrom(new InternetAddress(from));  
           
              
            //msg.addRecipients(Message.RecipientType.TO, address); //这个只能是给一个人发送email  
            msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(to)) ;  
            subject = transferChinese(subject);  
            msg.setSubject(subject);  
  
            // 构造Multipart  
            Multipart mp = new MimeMultipart();  
  
            // 向Multipart添加正文  
            MimeBodyPart mbpContent = new MimeBodyPart();  
            mbpContent.setContent(content, "text/html;charset=gb2312");  
              
            // 向MimeMessage添加(Multipart代表正文)  
            mp.addBodyPart(mbpContent);  
  
            // 向Multipart添加附件  
            Enumeration efile = file.elements();  
            while (efile.hasMoreElements()) {  
  
                MimeBodyPart mbpFile = new MimeBodyPart();  
                filename = efile.nextElement().toString();  
                FileDataSource fds = new FileDataSource(filename);  
                mbpFile.setDataHandler(new DataHandler(fds));  
                
                String filename= new String(fds.getName().getBytes(),"ISO-8859-1");  
  
                mbpFile.setFileName(filename);  
                // 向MimeMessage添加(Multipart代表附件)  
                mp.addBodyPart(mbpFile);  
  
            }  
  
            file.removeAllElements();  
            // 向Multipart添加MimeMessage  
            msg.setContent(mp);  
            msg.setSentDate(new Date());  
            msg.saveChanges() ;  
            // 发送邮件  
              
            Transport transport = session.getTransport("smtp");  
            transport.connect(host, username, password);  
            transport.sendMessage(msg, msg.getAllRecipients());  
            transport.close();  
        } catch (Exception mex) {  
            mex.printStackTrace();  
//          Exception ex = null;  
//          if ((ex = mex.getNextException()) != null) {  
//              ex.printStackTrace();  
//          }  
            return false;  
        }  
        return true;  
    }  
  
  
      
    /** 
     * <br> 
     * 方法说明:主方法,用于测试 <br> 
     * 输入参数: <br> 
     * 返回类型: 
     */  
    public static void main(String[] args) {  
        testSendMail sendmail = new testSendMail();  
        System.out.println("开始设置");
        sendmail.setHost("");  
        sendmail.setUserName("");  
        sendmail.setPassWord("");  
        sendmail.setTo("");  
        sendmail.setFrom("");  
        sendmail.setSubject("你好,这是测试!");  
        sendmail.setContent("你好这是一个带多附件的测试!");  
       
        // Mail("dujiang@sricnet.com","du_jiang@sohu.com","smtp.sohu.com","du_jiang","31415926","你好","胃,你好吗?");  
        //sendmail.attachfile("d:\\news.rar");  
        //sendmail.attachfile("d:\\jhjl.rar");  
          
        System.out.println(sendmail.sendMail());  
  
    }  
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值