`
KuangYeYaZi
  • 浏览: 55881 次
文章分类
社区版块
存档分类
最新评论

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");
    }
 
    /**
         * 进行用户身份验证时,设置用户名和密码
         */
    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 //发送邮件必须的jar
注:现在最新的不必使用mail-plugin.jar,如果要下载网络则使用activation.jar
 
6、文章地址:
http://www.crazyiter.com/bbs/forum.php?mod=viewthread&tid=1140&extra=page%3D1
分享到:
评论

相关推荐

    java 发邮件带excel附件,以流的形式发送附件,不生成excel文件

    记得在完成邮件发送后,关闭所有打开的流,以释放系统资源。 在你的项目中,你可以根据实际情况调整代码,例如添加错误处理、使用配置文件来获取邮件服务器参数等。记住,安全性和性能优化也是开发此类功能时需要...

    使用Jmail组件发送和接收邮件(含附件)

    4. **添加附件**:如果需要发送附件,可以使用MimeMultipart类来构建一个多部分的消息体。先创建一个MimeBodyPart,然后使用`setDataHandler()`方法设置数据源(如FileDataSource),最后将其添加到Multipart对象中...

    Java通过内容模板发送邮件,支持附件

    在Java编程领域,发送邮件是一项常见的任务,尤其在企业级应用中,如自动通知、报告发送等场景。本文将深入探讨如何使用Java通过内容模板发送邮件...开发者只需提供必要的配置和数据,即可轻松完成复杂的邮件发送任务。

    java邮件发送,带附件与测试类

    Java邮件发送是一个常见的任务,尤其在自动化通知、报表发送或者数据传输等场景中。下面将详细解释如何在Java中实现邮件发送,以及如何创建和测试此类功能。 首先,要发送邮件,我们需要使用JavaMail API,这是一个...

    java发送邮件源码

    然后,我们可以通过以下步骤实现邮件发送: 1. **配置属性**:创建一个`Properties`对象,设置SMTP服务器的属性,如主机名、端口号、是否使用SSL/TLS等。例如,如果是使用Gmail的SMTP服务器: ```java ...

    java发送OutLook会议邮件

    Java发送Outlook会议邮件是一种常见的任务,特别是在自动化工作流程或者集成系统中。下面将详细介绍如何使用Java来实现这个功能。 首先,我们需要理解Outlook会议邮件实际上是一种特殊的邮件,它包含了会议的时间、...

    java中email邮件发送接受和处理excel文件(xls)实例

    以下是一个简单的邮件发送示例: 1. 引入JavaMail相关依赖库,如`javax.mail`和`javax.mail.internet`。 2. 创建`Properties`对象,设置SMTP服务器信息,如主机名和端口号。 3. 初始化`Session`对象,设置邮件会话...

    java发送邮件的源码和jar包

    这个压缩包包含了一份`MailCode.java`的源代码示例和相关的`javamail`支持文件,帮助开发者快速理解和实现邮件发送功能。 `MailCode.java`是Java发送邮件的核心代码,它主要依赖于JavaMail API。JavaMail API是一个...

    JAVA实现126和QQ形式发送邮件代码及相关jar包

    本篇文章将详细讲解如何使用Java实现126和QQ邮箱的邮件发送功能,以及涉及的相关jar包和核心类。 首先,邮件发送的核心在于JavaMail API,这是一个开源的Java库,用于处理邮件服务器的通信。在提供的压缩包中,`...

    java 发送邮件 所需jar包

    Java发送邮件是开发过程中常见的需求,特别是在自动化任务、通知服务或者数据报告中。要实现这一功能,你需要一些特定的库,这些库以JAR...有了这些库,你可以轻松地在Java应用程序中实现复杂且可靠的邮件发送功能。

    java使用mail.jar发送邮件类

    总的来说,使用JavaMail API和`mail.jar`,开发者可以创建一个灵活且功能丰富的邮件发送系统,能够支持多接收人和多附件的邮件。然而,由于邮件服务器的安全策略,发送带有大附件的邮件可能需要更复杂的设置,比如...

    邮件发送所需jar

    在您提供的文件列表中,`activation.jar`、`mail.jar` 和 `commons-email-1.3.jar` 都是与Java邮件发送密切相关的库。 1. **activation.jar**: 这个JAR文件包含了JavaBeans Activation Framework (JAF),它是一个...

    Java Web应用开发 56 课堂案例-应用JavaMail组件发送邮件.docx

    本案例旨在通过实际操作帮助学生掌握如何利用JavaMail组件在Java Web应用中实现邮件发送功能。JavaMail是Java平台的一个扩展,用于发送、接收以及管理电子邮件。在现代Web应用开发中,邮件服务是非常重要的组成部分...

    java 发送邮箱

    Java发送邮件是一个常见的任务,尤其在自动化通知、系统报警或者用户注册验证等场景中。本文将深入探讨如何使用Java来实现...结合提供的源码和文档,我们可以学习到邮件发送的完整流程,理解如何配置和使用JavaMail库。

    java发邮件(word2003).pdf

    邮件发送的核心在于使用`Session`对象配置SMTP服务器的属性,并进行身份验证。在示例代码中,`Properties`对象用于设置SMTP服务器的相关属性,比如`mail.smtp.host`指定了SMTP服务器的地址(这里是smtp.126.com),...

    MailDemo.zip

    8. **异常处理**:在实际的邮件发送过程中,可能会遇到网络问题、认证错误等异常情况,因此代码中会有相应的异常处理逻辑来确保程序的健壮性。 通过阅读和理解【MailDemo】源代码,开发者不仅可以学习到如何在Java...

    毕设项目:基于Javamail的邮件收发系统的设计与实现(系统+文档+开题报告+答辩PPT).zip

    因此系统提供对上述信息的设置与存储的功能,这里,我们采用属性文件的形式存储SMTP 和POP3 邮件服务器属性设置。其文件名为smtpPop3.properties,位于工程的根目录下,可使用java.uitl. Properties 类的s

    JavaMail邮件开发详解

    JavaMail API 提供了一个强大且灵活的框架,使得开发者能够在 Java 应用程序中轻松地实现邮件发送和接收功能。通过了解基本的概念、相关协议以及简单的使用案例,你可以快速上手并利用 JavaMail API 构建复杂的邮件...

    log4j发送邮件log4j1.2.16.jar、mail.jar、activation.jar

    在IT行业中,日志记录是系统管理和故障排查的重要环节,而Log4j是Java平台上的一个广泛应用的日志组件。...在实际应用中,开发者应确保这些库文件已正确引入,并根据需要调整Log4j配置以满足特定的邮件发送需求。

    android发送邮件必备的jar包

    为了在Android应用中实现邮件发送功能,我们需要依赖一些特定的库,这些库通常以JAR(Java Archive)文件的形式存在。在这个场景中,提到的三个关键JAR包是`mail.jar`、`activation.jar`和`additionnal.jar`。 1. *...

Global site tag (gtag.js) - Google Analytics