最近做了自动发送邮件功能,带附件的:需要的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. k8s入门系列之介绍篇

    •Kubernetes介绍1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境2.什么是ku ...

  2. ArrayBlockingQueue,BlockingQueue分析

    BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会 ...

  3. erlang note

    没有关于erlang interface ,继续寻找吧... --------------------------------------------------------------- erl - ...

  4. c# 相对路径的一些资料

    1.获取和设置当前目录的完全限定路径. string str = System.Environment.CurrentDirectory; Result: C:\xxx\xxx 2.获取启动了应用程序 ...

  5. 简要介绍Apache、php、mysql安装和工具介绍

    1 安装Apache 网站:www.Apache.org下载相应的Apache,目前下载了近期的:httpd-2.2.15-win32-x86-openssl-0.9.8msi 安装简要步骤如下图: ...

  6. bzoj2424 [HAOI2010]订货

    模拟一下仓库里面存储物品的价格情况即可,如果当前物品大于仓库里面物品那么就替换一下仓库里的物品,然后订货直接从仓库里先取,仓库里不够则直接购买,每次做完后记得买当前物品填补一下仓库直至仓库填满,当然这 ...

  7. 在RedHat/CentOS下安装Docker(不升级内核)

    由于内核版本问题,最初仅Ubuntu可以较好的支持Docker.不过,由于RedHat系列OS(REHL.CentOS)是目前主流的Linux服务器操作系统,所以令RedHat系列OS支持Docker ...

  8. axure rp pro 7.0(页面原型工具)

    axure rp pro 7.0 下载连接:地址

  9. phpcms V9 首页模板文件解析

    在了解了<phpcms V9 URL访问解析>之后,我们已经知道首页最终执行的是content模块下index控制器的init方法. 下面, 我们逐步分析过程如下: 第一.首页默认执行的是 ...

  10. Egret官方案例学习笔记

    1.资源记载方式 (1)Egret引擎是2.0.5. (2)resource/resource.json文件是: { "resources": [ { "name&quo ...