`
liyonghui160com
  • 浏览: 775805 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javax.mail发送带附件的邮件代码

    博客分类:
  • java
阅读更多

 

javax.mail发送带附件的邮件代码

 

package com.dc.mail;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.util.*;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;


public class SendMail {
    //定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等
    private String displayName="DataCheck";
    private String[] to;
    private String from;
    private String smtpServer= "smtp.163.com";
    private String username;
    private String password;
    private String subject="DataCheckMail";
    private String content;
    private boolean ifAuth; //服务器是否要身份认证

    private Vector file = new Vector(); //用于保存发送附件的文件名的集合

    private Log log = LogFactory.getLog(getClass());



    /**
     * 设置SMTP服务器地址
     */
    public void setSmtpServer(String smtpServer){
        this.smtpServer=smtpServer;
    }

    /**
     * 设置发件人的地址
     */
    public void setFrom(String from){
        this.from=from;
    }
    /**
     * 设置显示的名称
     */
    public void setDisplayName(String displayName){
        this.displayName=displayName;
    }

    /**
     * 设置服务器是否需要身份认证
     */
    public void setIfAuth(boolean ifAuth){
        this.ifAuth=ifAuth;
    }

    /**
     * 设置E-mail用户名
     */
    public void setUserName(String username){
        this.username=username;
    }

    /**
     * 设置E-mail密码
     */
    public void setPassword(String password){
        this.password=password;
    }

    /**
     * 设置接收者
     */
    public void setTo(String[] to){
        this.to=to;
    }

    /**
     * 设置主题
     */
    public void setSubject(String subject){
        this.subject=subject;
    }

    /**
     * 设置主体内容
     */
    public void setContent(String content){
        this.content=content;
    }

    /**
     * 该方法用于收集附件名
     */
    public void addAttachfile(String fname){
        file.addElement(fname);
    }

    public SendMail(){
    }

    /**
     * 初始化SMTP服务器地址、发送者E-mail地址、用户名、密码、接收者、主题、内容
     */
    public SendMail(String smtpServer,String from,String displayName,String username,String password,String[] to,String subject,String content){
        this.smtpServer=smtpServer;
        this.from=from;
        this.displayName=displayName;
        this.ifAuth=true;
        this.username=username;
        this.password=password;
        this.to=to;
        this.subject=subject;
        this.content=content;
    }

    /**
     * 初始化SMTP服务器地址、发送者E-mail地址、接收者、主题、内容
     */
    public SendMail(String smtpServer,String from,String displayName,String[] to,String subject,String content){
        this.smtpServer=smtpServer;
        this.from=from;
        this.displayName=displayName;
        this.ifAuth=false;
        this.to=to;
        this.subject=subject;
        this.content=content;
    }

    /**
     * 发送邮件
     */
    public void send(){
        String filename="";
        String message="邮件发送成功!";
        Session session=null;
        Properties props = System.getProperties();
        props.put("mail.smtp.host", smtpServer);
        if(ifAuth){ //服务器需要身份认证
            props.put("mail.smtp.auth","true");
            SmtpAuth smtpAuth=new SmtpAuth(username,password);
            session=Session.getDefaultInstance(props, smtpAuth);
        }else{
            props.put("mail.smtp.auth","false");
            session=Session.getDefaultInstance(props, null);
        }
        session.setDebug(true);
        Transport trans = null;
        try {
            Message msg = new MimeMessage(session);
            try{
                Address from_address = new InternetAddress(from, displayName);
                msg.setFrom(from_address);
            }catch(java.io.UnsupportedEncodingException e){
                e.printStackTrace();
            }
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address[] address = new InternetAddress[to.length];
                for (int i=0; i<to.length; i++) {
                    address[i] = new InternetAddress(to[i]);
                }
            msg.setRecipients(Message.RecipientType.TO,address);
            msg.setSubject(subject);
            Multipart mp = new MimeMultipart();
            MimeBodyPart mbp = new MimeBodyPart();
            mbp.setContent(content.toString(), "text/html;charset=gb2312");
            mp.addBodyPart(mbp);
            if(!file.isEmpty()){//有附件
                Enumeration efile=file.elements();
                while(efile.hasMoreElements()){
                    mbp=new MimeBodyPart();
                    filename=efile.nextElement().toString(); //选择出每一个附件名
                    FileDataSource fds=new FileDataSource(filename); //得到数据源
                    mbp.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart
                    mbp.setFileName(fds.getName());  //得到文件名同样至入BodyPart
                    mp.addBodyPart(mbp);
                }
                file.removeAllElements();
            }
            msg.setContent(mp); //Multipart加入到信件
            msg.setSentDate(new Date());     //设置信件头的发送日期
            //发送信件
            msg.saveChanges();
            trans = session.getTransport("smtp");
            trans.connect(smtpServer, username, password);
            trans.sendMessage(msg, msg.getAllRecipients());
            trans.close();
            log.debug("邮件发送成功!");
        }catch(AuthenticationFailedException e){
            message="邮件发送失败!错误原因:身份验证错误!";
            log.error(message+e.getMessage());
        }catch (MessagingException e) {
            message="邮件发送失败!错误原因:\n"+e.getMessage();
            log.error(message+e.getMessage());
            Exception ex = null;
            if ((ex = e.getNextException()) != null) {
                log.error(e.getNextException());
            }
        }
    }
    public static void main(String[] args)
    {

        SendMail sendMail=new SendMail("smtp.XX.com","lXX@XX.com","DataCheck","lXX","XXXXXX!@#",new String[]{"lXX@XX.com","xiaoqiang@XX.com"},"DataCheckMail","测试一下");
        sendMail.addAttachfile("D:\\123.xls");
        sendMail.send();

    }


}

 

SmtpAuth代码

 

package com.dc.mail;


public class SmtpAuth extends javax.mail.Authenticator {
    private String username,password;

    public SmtpAuth(String username,String password){
        this.username = username;
        this.password = password;
    }
    protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
        return new javax.mail.PasswordAuthentication(username,password);
    }
}

 

 

 

分享到:
评论

相关推荐

    基于Maven的javax.mail发送邮件例子程序

    基于Maven的javax.mail发送邮件例子程序 pom.xml添加依赖jar: &lt;groupId&gt;javax.mail &lt;artifactId&gt;mail ${javamail.version} &lt;/dependency&gt; &lt;javamail.version&gt;1.4.1&lt;/javamail.version&gt; /* 功能:...

    javax.mail java 发送邮件的实现

    在Java编程语言中,`javax.mail` 是一个标准的API,用于发送和接收电子邮件。这个API为开发者提供了处理SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网消息访问协议)等邮件服务的能力。在本篇中,...

    javax.mail-1.5.2源码

    7. **Protocol Support**: `javax.mail` 支持多种邮件协议,如POP3(Post Office Protocol v3)用于接收邮件,SMTP(Simple Mail Transfer Protocol)用于发送邮件,以及IMAP(Internet Message Access Protocol)...

    java发送邮件依赖包javax.mail.jar和activation.jar.zip

    javax.mail.jar 和 activation.jar 是实现这一功能的关键库文件,它们提供了JavaMail API,允许开发者通过Java代码来发送和接收电子邮件。 javax.mail.jar 包含了JavaMail API的核心类和接口,这些接口和类主要...

    javax.mail发送邮件所需要jar及简单demo

    下面是一个简单的使用`javax.mail`发送邮件的示例代码,这个例子涵盖了多收件人、多抄送人、多密送人和多附件的功能: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public ...

    JAVA发送邮件demo 代码 及jar包 javax.mail.jar

    Java发送邮件是软件开发中常见的需求,特别是在自动化通知、用户注册...以上就是关于“JAVA发送邮件demo 代码 及jar包 javax.mail.jar”的主要知识点。在实际开发中,可以根据具体需求对这些基础知识进行扩展和调整。

    javax.mail.jar

    在Java编程领域,`javax.mail.jar`是一个重要的库文件,它包含了Java Mail API的所有类和接口,用于处理电子邮件的发送和接收。Java Mail API是Java平台上的标准API,它允许开发人员编写与邮件服务器进行交互的应用...

    JSP发送邮件实例 利用javax.mail和java.activation这两个包

    在这个实例中,我们将利用`javax.mail`和`java.activation`这两个Java库来实现JSP发送邮件的功能。这两个库是JavaMail API的一部分,提供了丰富的接口和类,使得我们可以在Java程序中方便地处理邮件的发送和接收。 ...

    采用java的javax.mail发送 mail

    要使用javax.mail发送邮件,首先需要在项目中引入相关的依赖。在这个例子中,`mail-1.4.1.jar`是Java Mail的一个版本,包含了发送邮件所需的类和接口。为了发送邮件,你需要做以下步骤: 1. 添加依赖:将`mail-...

    Javax实现邮件接收和发送,支持附件

    (发送文本不会发送附件,附送Html邮件才会发送附件,接收邮件可以拿到所有未读邮件,已读不会下载,下载时会把附件下载到MailTool中的localPath文件夹下,请确保路径存在) 本人测试输出结果如下: /****************...

    javamail"java发送邮件所需要的包

    描述中提到的“java发送邮件所需要的包”即是指JavaMail API,它包含了一系列的类和接口,例如`javax.mail.Session`,它是邮件会话对象,用于配置邮件服务器的连接参数;`javax.mail.Transport`,用于发送邮件;`...

    Java javax.mail(Mail)依赖-永久无需积分

    `javax.mail`是JavaMail API的核心包,版本1.6.2是一个稳定且广泛使用的版本,它包含了发送邮件、处理附件、支持多种邮件协议(如SMTP、POP3、IMAP)等功能。 在JavaWeb应用中,`javax.mail`库是非常重要的,因为...

    SpringBoot中整合Mail实现发送带附件的邮件示例代码

    至此,我们已经完成了在Spring Boot中整合JavaMailSender发送带附件邮件的过程。请注意,为了确保邮件能够成功发送,确保你的SMTP服务器设置正确,同时确保你的邮件不被识别为垃圾邮件。在发送大量邮件时,还需要...

    ant发邮件所需的jar(activation.jar+javax.mail.jar+mail.jar+commons-email-1.2.jar)

    3. **mail.jar**:在某些情况下,javax.mail.jar可能会包含在名为mail.jar的文件中,它是JavaMail API的完整实现,包含了发送邮件所需的所有组件。 4. **commons-email-1.2.jar**:这是Apache Commons Email库,...

    javamail相关JAR包

    它不仅包括了`javax.mail-api-1.5.6.jar`中的接口和类,还包含了实际执行邮件操作的代码,如SMTP协议的实现,用于邮件的发送;POP3和IMAP协议的实现,用于邮件的接收。这个JAR包使得开发者可以直接使用JavaMail API...

    Java邮件发送

    使用这三个类的示例代码展示了如何实例化这些类并设置相应的属性,然后调用 `sendTextMail` 或 `sendHtmlMail` 方法来发送邮件。在示例中,邮件服务器被设置为smtp.163.com,发件人和收件人都是同一个163邮箱地址,...

    android使用javamail发送邮件jar包

    例如,`javax.mail.Session`用于创建和配置邮件会话,`javax.mail.Transport`用于发送邮件,而`javax.mail.internet.MimeMessage`则用于构建符合MIME标准的邮件消息。 2. **activation.jar**:JavaBeans Activation...

    javamail发邮件(带附件)

    ### JavaMail 发送带附件的电子邮件 在Java开发过程中,经常需要通过程序自动发送电子邮件,尤其是在需要进行用户通知、密码重置或者系统日志报告等场景。JavaMail API提供了非常强大的功能来支持这些需求,包括...

    javamail的jdk打包

    JavaMail 是一个开源的 Java API,它允许开发者在 Java 应用程序中发送和接收电子邮件。这个API提供了全面的电子邮件处理功能,包括SMTP、POP3和IMAP协议的支持。在JavaMail的使用过程中,通常会涉及到两个核心的JAR...

    Java发送邮件javax.mail的实现方法

    在Java编程中,使用`javax.mail`包可以实现发送电子邮件的功能。这个库提供了一套完整的API,用于处理邮件协议,包括SMTP(简单邮件传输协议)等。以下将详细讲解如何利用`javax.mail`来发送邮件。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics