最近做了自动发送邮件功能,带附件的:需要的jar包有

应该删除MyEclipse原有的mail   jar包;路径为:

打开javaee.jar,删除原有的mail文件夹,然后重启MyEclipse即可!

代码如下:

package com.noahwm.bigscreen.exportexcel;

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.File;
import java.io.FileInputStream;  
import java.io.IOException;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;
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 MailUtils {

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 MailUtils() {  
    }

/**
     * <br>
     * 方法说明:构造器,提供直接的参数传入 <br>
     * 输入参数: <br>
     * 返回类型:
     */  
    public MailUtils(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(),  
                    "gb2312"), "gb2312", "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("gb2312"), "ISO8859-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) {  
        MailUtils sendmail = new MailUtils();

//邮件服务器
        sendmail.setHost("xxxx.xx.com");  
        //用户名
        sendmail.setUserName("xxxx");
        //密码
        sendmail.setPassWord("xxxx");  
        //接收方
        sendmail.setTo(xxxx@163.com);
        //发送方
        sendmail.setFrom("xxxx@163.com");
        //标题
        sendmail.setSubject("邮件标题");  
        //邮件内容
        sendmail.setContent("Hi!man~~");
        String filePath ="D://XX.txt";
        //附件
        sendmail.attachfile(filePath);  
        if(sendmail.sendMail()){
            System.out.println("--------------自动邮件发送成功------------");
            //删除原文件
            boolean flag = deleteFile(filePath);
            if(flag){
                System.out.println("--------------原文件删除成功-------------");
            }else{
                System.out.println("--------------原文件删除失败-------------");
            }
        }else{
            System.out.println("--------------自动邮件发送失败-------------");
        }   
    }

public static boolean deleteFile(String sPath) {
        boolean flag = false;
        File file = new File(sPath);
        // 路径为文件且不为空则进行删除
        if (file.isFile() && file.exists()) {
            file.delete();
            flag = true;
        }
        return flag;
    }  
}

java mail发送邮件的更多相关文章

  1. Spring Boot 揭秘与实战(七) 实用技术篇 - Java Mail 发送邮件

    文章目录 1. Spring Boot 集成 Java Mail 2. 单元测试 3. 源代码 Spring 对 Java Mail 有很好的支持.因此,Spring Boot 也提供了自动配置的支持 ...

  2. java mail(发送邮件--163邮箱)

    package com.util.mail; /** * 发送邮件需要使用的基本信息 */ import java.util.Properties; public class MailSenderIn ...

  3. 使用Java Mail发送邮件

    本笔记参考自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17839983 JavaMail是SUN提供给开发人员在应用程序中实现 ...

  4. 简单的java mail发送邮件实例

    mail.jar ,commons-email-X.X.jar ,activation.jar ,log4j.jar  这四个jar,放进项目里 下载地址 http://www.oracle.com/ ...

  5. 利用java mail发送邮件(转)

    JavaMail是SUN提供给开发者在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持经常使用的邮件协议,如SMTP.POP3.IMAP.开发者使用JavaMail编写邮件程序时,无需考 ...

  6. Java Mail 发送邮件(SSL加密方式,TSL加密方式)

    一.一般配置 发送邮件需要用到  mail包 maven 依赖如下: <!-- https://mvnrepository.com/artifact/javax.mail/mail --> ...

  7. 使用java mail 发送邮件

    1.关联jar包:   activation.jar   mail.jar 2.调用 @Test public void test1() { List<String> imageUrlLi ...

  8. Java mail 发送邮件 主题(标题)乱码

    最近开发遇到Javamail  发送邮件标题乱码问题,腾讯.网易邮箱不会乱码,阿里邮箱  标题则会乱码.解决办法: String subject = MimeUtility.encodeWord(ma ...

  9. 利用java mail发送邮件

    import java.util.Date; import java.util.Properties; import javax.activation.DataHandler; import java ...

随机推荐

  1. 降维技术---PCA

    数据计算和结果展示一直是数据挖掘领域的难点,一般情况下,数据都拥有超过三维,维数越多,处理上就越吃力.所以,采用降维技术对数据进行简化一直是数据挖掘工作者感兴趣的方向. 对数据进行简化的好处:使得数据 ...

  2. 使用paramiko模块远程登录并上传或下载文件

    1.paramiko安装 1)安装PyCrypto2.6 for Python 2.7 64bit.地址:http://www.voidspace.org.uk/python/modules.shtm ...

  3. JS的基础知识

    前言:写前端代码时的各种取值纠结,让我决定我必须要好好学一下js............加油~ $("#tr"+id).remove() 删除某一行,而不用刷新页面 HightCh ...

  4. Linux系统下Redis安装(一)

    最近项目要使用Redis,特将这段时间将Redis的学习经验与大家分享,算是对这段时间学习成果的总结和技术提炼,不足之处还望大家批评指正. 项目背景: 有些很少改动的数据和经常使用的数据(例如系统中下 ...

  5. vmware centos下配置ip

    使用NAT模式 虚拟机网络连接使用NAT模式,物理机网络连接使用Vmnet8. 虚拟机设置里面--网络适配器,网络连接选择NAT模式. 虚拟机菜单栏-编辑-虚拟网络编辑器,选择Vmnet8 NAT模式 ...

  6. BI系统与KPI指标的整合分析

    今天我们要说的是信息化时代下关于企业运营的两个热词:BI系统和KPI指标.一直到现在,企业运营的方方面面都在被数据化,成为庞大信息流的一部分,这一庞大的信息流,正以我们自己都尚未完全意识到的速度和规模 ...

  7. 设计模式之 -- 状态模式(State)

     状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类.当控制一个对象的状态转换条件分支语句(if...else或switch...case)过于复杂时,可以此模式将状态的判断逻辑 ...

  8. c++获取系统时间(引用别人的博文)

    //方案— 优点:仅使用C标准库:缺点:只能精确到秒级#include <time.h> #include <stdio.h> int main( void ) {     t ...

  9. C# TreeView的CheckBox 父/子节点点击联动选择效果

    注: 点击时请正常速度点击,不然会出现“奇怪”现象!!! /// <summary> /// 节点点击 子级->同级->父级 /// </summary> /// ...

  10. jQuery对select操作小结

    //遍历option和添加.移除optionfunction changeShipMethod(shipping){ var len = $("select[@name=ISHIPTYPE] ...