最近做了自动发送邮件功能,带附件的:需要的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. ASP.NET MVC 5 中 使用富文本编辑器 Ueditor

    一.Ueditor插件下载自:http://ueditor.baidu.com/website/ 二.将解压文件目录ueditor复制到项目根目录后, 修改以下几个文件配置: 1.访问路径配置:ued ...

  2. C# jquery webservices 跨域调用的问题解决方案

    前台代码: <script src="js/jquery-1.9.1.min.js" type="text/javascript"></scr ...

  3. ubifs物理存储

    Ubifs通过ubi管理MTD设备,ubi的LEB随机映射PEB,其本身占用一部分PEB,具体文件存储情况分析如下. 1. Ubi中不管是是逻辑块号还是物理块号都是从0开始的.一般情况下,Nandfl ...

  4. mac 启动 docker daemon

    我是用virtualbox安装的. 有一个小问题就是启动docker服务时会检查boot2docker是不是最新的. 由于github被封了,所以只能手动下 https://github.com/bo ...

  5. mvc ajax dropdownlist onchang事件响应

    <script type="text/javascript"> $("#Cycle").on("change", functio ...

  6. 微信sdk分享,苹果手机分享到qq好友和qq空间没有反应

    最近线上程序苹果手机进行微信分享时,分享到qq好友和qq空间,无法调用分享程序,从微信跳转到qq后就没有反应了,但是安卓手机分享就没事? 解决:调用微信sdk分享时,分享的url(link)的参数不能 ...

  7. 用Unity开发HTC VIVE——手柄控制篇

    写这篇文章的原因主要是因为现在虚拟现实非常的火爆但目前主流的虚拟现实设备(HTC VIVE)的教程却少的可怜,这个我深有体会.所以,我想将我平时开发中遇到的问题以及解决方法记录下来,分享给大家,若其中 ...

  8. How to use PEM of PPAS

    -bash-4.1$ pwd/opt/PostgresPlus/9.3AS/client-v4/scripts -bash-4.1$ lsclient launchPEMClient.sh -bash ...

  9. java读取记事本文件的部分数据添加到mysql

    package com.tideway.readtxt; import java.io.BufferedReader; import java.io.FileInputStream; import j ...

  10. AppleWatch___学习笔记(一)开发思路和框架

    一.开发须知 如果你没有开发过 iphone,直接来做watch,我建议你不要这么做,不是不可以,而是目前所有的第三方应用都必须基于iphone的扩展,原生的watch应用,苹果目前还没有开放给开发者 ...