`

JavaMail发送带附件的邮件

    博客分类:
  • Java
阅读更多

package test;


import java.io.File;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
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 org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;

public class MailSenderImpl {

private static final org.apache.log4j.Logger LOG = Logger.getLogger(MailSenderImpl.class);
   
    private Session session;
    private Transport transport;
   
    public void init() throws Exception{
        this.session = Session.getDefaultInstance(new Properties(), null);
       
        this.transport = session.getTransport("smtp");
       
        this.transport.connect("219.145.110.51", "sendmail@mail.163.com", "123456");
    }
   

   
    public boolean send(String subject, String content, String target){
        try{
           
             System.setProperty("mail.smtp.auth","true");
           
            MimeMessage message =new MimeMessage(session);
           
            /** 发送人地址 */
            Address fromAddress = new InternetAddress("sendmail@mail.163.com");
            message.setFrom(fromAddress);
            message.setReplyTo(new Address[]{fromAddress});
           
            /** 收件人地址 */
            Address toAddress = new InternetAddress(target);           
            message.addRecipient(Message.RecipientType.TO, toAddress);
           
            /** 邮件主题 */
            sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); 
            message.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
           
            MimeBodyPart messageBodyPart =new MimeBodyPart();

            /** 邮件文本内容 */
//            messageBodyPart.setText("Hi");//邮件正文内容
           
           
            /** 要发送附件的位置 */
            String fileAttachment = "D:/workDoc/iof_8888.xml";
           
           
            /** 邮件引入其它文件内容 */
            DataSource fds = new javax.mail.util.ByteArrayDataSource(content.getBytes(),"text/html");
            messageBodyPart.setDataHandler(new DataHandler(fds));
           
           
            /** 邮件附件 */
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);

            messageBodyPart = new MimeBodyPart();
            DataSource source =new FileDataSource(fileAttachment);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(fileAttachment);
            multipart.addBodyPart(messageBodyPart);
            message.setContent(multipart);
            message.saveChanges();

            transport.sendMessage(message, message.getAllRecipients());

            /** 以下为不带附件的写法 */
//            MimeMessage message = new MimeMessage(session);
//           
//            Address fromAddress = new InternetAddress("sendmail@mail.yimei.com");
//            message.setFrom(fromAddress);
//            message.setReplyTo(new Address[]{fromAddress});
//           
//            Address toAddress = new InternetAddress(target);//gj@yimei.com
//            message.addRecipient(Message.RecipientType.TO, toAddress);
//           
//            sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder(); 
//            message.setSubject("=?GB2312?B?"+enc.encode(subject.getBytes())+"?=");
//           
//            DataSource fds = new javax.mail.util.ByteArrayDataSource(content.getBytes(),"text/html");
//            message.setDataHandler(new DataHandler(fds));
//           
//            transport.sendMessage(message, message.getAllRecipients());
           
           
            return true;
        }catch(Exception e){
            LOG.error(e.getMessage(),e);
        }
        return false;
    }
   
   
    public void close(){
        try{
            transport.close();
        }catch(Exception e){
        }
    }
   
    public static void main(String[] args) throws Exception{
        long start = System.currentTimeMillis();
        String[] targets = new String[]{"zj@yimei.com","zj@yimei.com","zj@yimei.com","zj@yimei.com","zmfkplj@163.com","zmfkplj@126.com"};
        MailSenderImpl sender = new MailSenderImpl();
        sender.init();
        for(String target:targets){
            sender.send("测试邮件", FileUtils.readFileToString(new File("D:/workDoc/index.html")), target);
        }
        sender.close();
        long end = System.currentTimeMillis();
        System.out.println("elapse time: "+(end-start));
    }
   
}

分享到:
评论

相关推荐

    06 使用JavaMail发送带附件的邮件.exe

    06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe

    JavaMail(3)——发送带附件的邮件.docx

    下面将详细解释如何利用JavaMail发送带有附件的邮件。 首先,你需要导入以下关键的JavaMail和Java Activation Framework (JAF) 类: ```java import javax.mail.*; import javax.mail.internet.*; import javax....

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    在使用JavaMail发送邮件前,你需要在项目中引入相关的依赖包。在描述中提到的"javamail"可能是指JavaMail的jar包,这是进行邮件操作的基础。确保你的项目已包含以下两个关键的JavaMail库: 1. `javax.mail-api.jar`...

    JavaMail发送邮件(文本、html、附件)

    以上就是使用JavaMail发送文本、HTML和附件邮件的详细步骤。在实际应用中,还需要考虑错误处理、邮件格式验证、多线程发送等复杂情况。同时,对于企业级应用,通常会使用邮件服务提供商如SendGrid、Mailgun等,它们...

    james和javamail实现邮件收发(带发送附件)

    下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    ### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    javamail发送、接收邮件

    通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件功能。 ### javamail发送、接收邮件 JavaMail API是由Sun Microsystems开发...

    java email 发送带附件的邮件

    以上就是使用JavaMail发送带附件邮件的基本流程。需要注意的是,实际应用中可能还需要处理异常、超时和其他复杂情况。此外,对于大型附件或大量邮件,应考虑使用连接池和异步处理以提高性能。 在阅读和实现上述代码...

    javamail发送邮件(带附件)

    这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    用javaMail发送邮件

    下面是一个简单的JavaMail发送邮件的步骤: 1. **导入必要的库**:首先,在项目中导入`mail.jar`和`activation.jar`,确保编译和运行时能够访问到这些库。 2. **配置邮件会话**:创建一个`Properties`对象,设置...

    javamail发送邮件.zip

    这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...

    javamail 可带附件demo 源码

    JavaMail 是一个开源库,它提供了在Java应用程序中发送和接收电子邮件的标准API。这个源码示例是关于如何使用JavaMail来发送带有附件...这个源码示例是一个很好的起点,帮助开发者理解并应用JavaMail发送带附件的邮件。

    javamail发送html邮件

    JavaMail API 是一个用于发送、接收电子邮件的标准接口集合,它支持多种协议(如 SMTP、IMAP 和 POP3),使得 Java 应用程序能够轻松地发送和接收电子邮件。 #### 二、发送 HTML 格式的邮件 在实际应用中,经常需要...

    java 发送附件mail

    总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...

    oracle 发送带附件的邮件

    总结来说,实现Oracle发送带附件的邮件涉及到JavaMail API、JSP编程、PL/SQL包的使用,以及对UTL_SMTP或Java存储过程的调用。通过这些技术,你可以构建一个灵活且强大的邮件系统,满足各种企业级的邮件通信需求。

Global site tag (gtag.js) - Google Analytics