1. [代码]java邮件发送(含附件)
疯狂的IT人站长整理的:利用Java发送邮件(含附件)的例子:
1、邮件发送的配置propertity文件内容如下:(utils.properties文件放在src下面)
emailsmtp=smtp.qq.com
emailaddress=459104018@qq.com
emailpass=******
2、读取配置文件的类文件(ReadPropertity.java)
import java.io.IOException;
import java.util.Properties;
public class ReadPropertity {
        static Properties props = new Properties();
        static {
                try {
                        props.load(ReadPropertity.class.getClassLoader().getResourceAsStream(
                                        "utils.properties"));
                } catch (IOException e1) {
                        e1.printStackTrace();
                }
        }
        public static String getProperty(String key) {
                return props.getProperty(key);
        }
}
3、邮件处理类(EmailHandle.java)
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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;
/**
* 本程序用java来实现Email的发送, 所用到的协议为:smtp
* <p>Company:  疯狂的IT人</p>
* time:2013-04-05
* @author www.crazyiter.com
* @date 
* @version 1.0 
*/
public class EmailHandle {
    private MimeMessage mimeMsg; //邮件对象
    private Session session; //发送邮件的Session会话
    private Properties props;//邮件发送时的一些配置信息的一个属性对象
    private String sendUserName; //发件人的用户名
    private String sendUserPass; //发件人密码
    private Multipart mp;//附件添加的组件
        private List files = new LinkedList();//存放附件文件
    public EmailHandle(String smtp) {
            sendUserName = "";
            sendUserPass = "";
        setSmtpHost(smtp);// 设置邮件服务器
        createMimeMessage(); // 创建邮件
    }
    public void setSmtpHost(String hostName) {
        if (props == null)
            props = System.getProperties();
        props.put("mail.smtp.host", hostName);
    }
    public boolean createMimeMessage(){
        try {
            // 用props对象来创建并初始化session对象
            session = Session.getDefaultInstance(props, null);
        } catch (Exception e) {
            System.err.println("获取邮件会话对象时发生错误!" + e);
            return false;
        }
        try {
            mimeMsg = new MimeMessage(session);  // 用session对象来创建并初始化邮件对象
            mp = new MimeMultipart();// 生成附件组件的实例
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 设置SMTP的身份认证
         */
    public void setNeedAuth(boolean need) {
        if (props == null)
            props = System.getProperties();
        if (need)
            props.put("mail.smtp.auth", "true");
        else
            props.put("mail.smtp.auth", "false");
    }
    /**网站模板
         * 进行用户身份验证时,设置用户名和密码
         */http://www.huiyi8.com/moban/​
    public void setNamePass(String name, String pass) {
        sendUserName = name;
        sendUserPass = pass;
    }
    /**
         * 设置邮件主题
         * @param mailSubject
         * @return
         */
    public boolean setSubject(String mailSubject) {
        try {
            mimeMsg.setSubject(mailSubject);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
         * @param mailBody
         * @return
         */
    public boolean setBody(String mailBody) {
        try {
            BodyPart bp = new MimeBodyPart();
            bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+ mailBody, "text/html;charset=UTF-8");
            // 在组件上添加邮件文本
            mp.addBodyPart(bp);     
        } catch (Exception e) {
            System.err.println("设置邮件正文时发生错误!" + e);
            return false;
        }
        return true;
    }
    /**
         * 增加发送附件
         * @param filename
         * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
         * @return
         */
    public boolean addFileAffix(String filename) {
        try {
            BodyPart bp = new MimeBodyPart();
            FileDataSource fileds = new FileDataSource(filename);
            bp.setDataHandler(new DataHandler(fileds));
            bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null));  // 解决附件名称乱码
            mp.addBodyPart(bp);// 添加附件
            files.add(fileds);
        } catch (Exception e) {
            System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
           return false;
        }
        return true;
   }
   public boolean delFileAffix(){
              try {
                FileDataSource fileds = null;
                for(Iterator it =  files.iterator() ;it.hasNext();) {
                       fileds = (FileDataSource)it.next(); 
                       if(fileds != null && fileds.getFile() != null){
                               fileds.getFile().delete();
                       }
                }
               }catch (Exception e) {
             return false;
          }
        return true;
    }
    /**
         * 设置发件人地址
         * @param from
         * 发件人地址
         * @return
         */
    public boolean setFrom(String from) {
        try {
            mimeMsg.setFrom(new InternetAddress(from));
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 设置收件人地址
         * @param to收件人的地址
         * @return
         */
    public boolean setTo(String to) {
        if (to == null)
            return false;
        try {
            mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 发送附件
         * @param copyto
         * @return
         */
    public boolean setCopyTo(String copyto) {
        if (copyto == null)
            return false;
        try {
            mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto));
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 发送邮件
         * @return
         */
    public boolean sendEmail() throws Exception{
            mimeMsg.setContent(mp);
            mimeMsg.saveChanges();
            System.out.println("正在发送邮件....");
            Session mailSession = Session.getInstance(props, null);
            Transport transport = mailSession.getTransport("smtp");
            // 连接邮件服务器并进行身份验证
            transport.connect((String) props.get("mail.smtp.host"), sendUserName,sendUserPass);
            // 发送邮件
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
            System.out.println("发送邮件成功!");
            transport.close();
        return true;
    }
}
4、邮件发送的类文件(SendEmail.java)
/**
* 发送邮件测试
* <p>Company:  疯狂的IT人</p>
* time:2013-04-05
* @author www.crazyiter.com
* @date 
* @version 1.0 
*/

public class SendEmail {
        public SendEmail() {
        }
        /***以后需要两个参数:接收方地址 、 内容***/
        public static void send(String subject, String toaddress,String content)throws Exception {
                String hostName = ReadPropertity.getProperty("emailsmtp");
                String fromAddress = ReadPropertity.getProperty("emailaddress");
                String fromAPass = ReadPropertity.getProperty("emailpass");
                EmailHandle emailHandle = new EmailHandle(hostName);
                emailHandle.setFrom(fromAddress);
                emailHandle.setNeedAuth(true);
                emailHandle.setSubject(subject);
                emailHandle.setBody(content);
                emailHandle.setTo(toaddress);
                emailHandle.setFrom(fromAddress);
                emailHandle.addFileAffix("D:/myself/help/txt/java环境变量.txt");// 附件文件路径
                emailHandle.setNamePass(fromAddress, fromAPass);
                emailHandle.sendEmail();
        }
        public static void main(String[] args) {
                try {
        SendEmail.send("带附件的邮件测试","459104018@qq.com","测试内容<a href='http://www.crazyiter.com'>疯狂的IT人</a>");
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
}
​5、发送邮件需要的jar包:
activation.jar
mail-plugin.jar
mail.jar

java邮件发送(含附件)的更多相关文章

  1. C#邮件发送(含附件)

    class SendEmail { static void Main(string[] args) { string from = "发件人@yingu.com"; string ...

  2. java mail邮件发送(带附件) 支持SSL

    java mail邮件发送(带附件)有三个类 MailSenderInfo.java package mail; import java.util.Properties; import java.ut ...

  3. 基于JavaMail的Java邮件发送:复杂邮件发送

    参考:http://blog.csdn.net/xietansheng/article/details/51722660package com.bfd.ftp.utils;import java.ut ...

  4. JAVA邮件发送的简单实现

    JAVA MAIL是利用现有的邮件账户发送邮件的工具,比如说,我在网易注册一个邮箱账户,通过JAVA Mail的操控,我可以不亲自登录网易邮箱,让程序自动的使用网易邮箱发送邮件.这一机制被广泛的用在注 ...

  5. java-基于JavaMail的Java邮件发送

    1.基于JavaMail的Java邮件发送:简单邮件发送 2.基于JavaMail的Java邮件发送:复杂邮件发送

  6. System.Net.Mail邮件发送抄送附件(多个)

    /// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...

  7. 解决java mail发送TXT附件被直接显示在正文中的问题

    这两天遇到一个问题,关于使用java mail发送邮件的问题. 详细是这样子的:我使用java mail发送异常报告邮件,邮件中有一个包含异常日志的附件,和关于设备信息的邮件正文.假设日志为log后缀 ...

  8. 【转】基于JavaMail的Java邮件发送

    http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...

  9. java email发送(附件中文的处理)

    这里使用的是commons-email-1.3.2.jar进行的开发,自认为这是简单的邮件发送. package com.yt.base.common; import java.io.Unsuppor ...

随机推荐

  1. 【Hihocoder1034】毁灭者问题(splay,树状数组)

    题意: 假设你拥有 n 个魔法单位,他们从左到有站在一行,编号从 1 到 n. 每个单位拥有三项属性: si: 初始法力. mi: 最大法力上限. ri: 每秒中法力回复速度. 现在你操纵一个毁灭者, ...

  2. hihocoder #1290 : Demo Day

    传送门 #1290 : Demo Day 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 You work as an intern at a robotics star ...

  3. Day 13 Python 一之helloworld

    直接肝程序吧! """ # 作业六:用户登录测试(三次机会) count = 1 while count <= 3: user = input('请输入用户名: ' ...

  4. python(3)- 常用快捷键及基础命令

  5. max file descriptors [4096] for elasticsearch proess is too low, increase to at least [65536]

    修改文件 /etc/security/limits.conf 加入以下两行: sonar hard nofile 65536 sonar soft nofile  65536 #备注:sonar这里是 ...

  6. HTML 中 SELECT 选项分组

    <select name="viewType"> <option value selected>选择排序/显示方式</option> <o ...

  7. [Code Plus#4] 最短路

    题目背景 在北纬 91° ,有一个神奇的国度,叫做企鹅国.这里的企鹅也有自己发达的文明,称为企鹅文明.因为企鹅只有黑白两种颜色,所以他们的数学也是以二进制为基础发展的. 比如早在 1110100111 ...

  8. Jenkins中的Job配置里缺少“触发远程构建(例如,使用脚本)”选项的问题解决

    如图所示的功能没有出现在Job配置页面,这是由于权限问题导致的,解决方法如下: 1.[系统管理]->[Configure Global Security] 2.配置如下: 3.或者你有第三方权限 ...

  9. Matlab多项式拟合測试

    x=0:0.2:4; %生成等差数列 rnd=rand(1,size(x,2))*5; %生成一组随机数 y=x.*x.*x+x.*x+6+rnd; %生成y=x^3+x^2+6函数在垂直方向5个尺度 ...

  10. 数据库系统学习(九)-嵌入式SQL语言之基本技巧

    第九讲 嵌入式SQL语言之基本技巧 901 什么是嵌入式SQL语言 交互式SQL语言的局限性 嵌入式SQL语言 交互式和嵌入式语言的对比 高级语言中使用嵌入式语言需要解决的问题 902 程序与数据库连 ...