`
ShellyLi
  • 浏览: 114582 次
  • 性别: Icon_minigender_2
  • 来自: 山东
社区版块
存档分类
最新评论

支持邮件群发,多附件发送的javaMail代码

阅读更多
在网上找了半天才找到了一点比较满意的代码,但是不能直接拿来用,所以就修改了一下,可能有不完美的地方,如果你发现了一定要告诉我哦!有什么需要我帮助的话请发yuxia2217@163.com联系我!大家一起学习一起讨论!

要用到的两个包,因为不能上传附件所以没有传上来,有需要的话,发邮件给我!有时间的话发给你!

用到的包名

activation.jar

mail.jar

java日志文件包可以不用

log4j-1.2.11.jar

源代码如下:

package test;


import java.awt.List;
import java.net.MalformedURLException;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
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.dom4j.DocumentException;


/**
* @author 俞晓坚

*update 2007-08-15
*
*/
public class MailSendtest {

String host="smtp.163.com";
String userName="yuxia2217";//可替换为你自己的邮箱用户名
String password="***************************";//不好意思密码不能给你们看
String from=yuxia2217@163.com //你要发送的邮箱名称
String to;//发给谁
String subject;//邮件议题
String body;//内容

String fileName;//附件路径(注意绝对路径和相对路径的选择)

// 用于保存发送附件的文件名列表
List arrFileName = new List();

public MailSendtest(String to, String subject, String body)
     throws MalformedURLException, DocumentException {
    //初始化发件人、收件人、主题等

    this.to = to;
    this.subject =subject;
    this.body = body;
}

// 用于收集附件名
public void attachFile(String fileName) {
    this.arrFileName.add(fileName);
}

// 开始发送
public boolean startSend() {

    //创建Properties对象
    Properties props = System.getProperties();
    //创建信件服务器
    props.put("mail.smtp.host", this.host);
//    props.put("mail.smtp.host", "smtp.163.com");
    props.put("mail.smtp.auth", "true"); //通过验证
    //得到默认的对话对象
    Session session = Session.getDefaultInstance(props, null);
    try {
     //创建一个消息,并初始化该消息的各项元素
     MimeMessage msg = new MimeMessage(session);
     msg.setFrom(new InternetAddress(this.from));
     if (this.to.trim().length() > 0) {
      String[] arr = this.to.split(",");
      //int ReceiverCount=1;
      int receiverCount = arr.length;
      if (receiverCount > 0) {
       InternetAddress[] address = new InternetAddress[receiverCount];
       for (int i = 0; i < receiverCount; i++) {
        address[i] = new InternetAddress(arr[i]);
       }
       msg.addRecipients(Message.RecipientType.TO, address);
      } else {
       System.out
         .println("None receiver! The program will be exit!");
       System.exit(0);
      }
     } else {
      System.out.println("None receiver! The program will be exit!");
      System.exit(0);
     }
     msg.setSubject(subject);
     //后面的BodyPart将加入到此处创建的Multipart中
     Multipart mp = new MimeMultipart();     
     //获取附件
     int FileCount = this.arrFileName.getItemCount();
     if (FileCount > 0) {
      for (int i = 0; i < FileCount; i++) {
       MimeBodyPart mbp = new MimeBodyPart();    
       //选择出附件名
       fileName = arrFileName.getItem(i).toString();
       //得到数据源
       FileDataSource fds = new FileDataSource(fileName);
       //得到附件本身并至入BodyPart
       mbp.setDataHandler(new DataHandler(fds));
       //得到文件名同样至入BodyPart
       mbp.setFileName(fds.getName());
       mp.addBodyPart(mbp);
      }
      MimeBodyPart mbp = new MimeBodyPart();
      mbp.setText(this.body);
      mp.addBodyPart(mbp);
      //移走集合中的所有元素
      arrFileName.removeAll();
      //Multipart加入到信件
      msg.setContent(mp);
     } else {
      //设置邮件正文
      msg.setText(this.body);
     }
     //设置信件头的发送日期
     msg.setSentDate(new Date());
     msg.saveChanges();
     //发送信件
     Transport transport = session.getTransport("smtp");
     transport.connect(this.host, this.userName, this.password);
     transport.sendMessage(msg, msg
       .getRecipients(Message.RecipientType.TO));
     transport.close();
    } catch (MessagingException mex) {
     mex.printStackTrace();
     Exception ex = null;
     if ((ex = mex.getNextException()) != null) {
      ex.printStackTrace();
     }
     return false;
    }
    return true;
}

public static void main(String[] args) {

    try {
     MailSendtest sendmail = new MailSendtest("yuxia2217@163.com,yuzhi2217@163.com",
       "邮件主题", "邮件内容");
     sendmail.attachFile("E:\\eclipse\\startup.jar");//附件地址
     sendmail.attachFile("E:\\eclipse\\notice.html");/ /附件2地址;根据需要可继续添加....................
     sendmail.startSend();
     System.out.println("OK");
    } catch (Exception e) {
     e.printStackTrace();
    }

}
}

分享到:
评论
1 楼 ly5188 2012-07-20  
大虾,例子少了些东西,
javax.mail.MessagingException: Could not connect to SMTP host: www.sina.com, port: 25;
nested exception is:
java.net.ConnectException: Connection timed out: connect

相关推荐

    javamail群发邮件源码

    这个源码示例是关于使用 JavaMail 实现邮件群发功能的,尤其强调了包含图片、附件以及HTML文本显示的能力。以下是对这个主题的详细解释: 1. **JavaMail API**:JavaMail API 是一组用于访问邮件服务器的接口和类,...

    javamail多线程群发

    JavaMail 是一个强大的开源库,用于在Java应用程序中处理电子邮件。在JavaMail中实现多线程群发邮件是一项常见的需求,特别是在...通过阅读和理解这些代码,你可以更好地掌握JavaMail在多线程环境下的邮件群发实践。

    Android使用Javamail发送Email群发加附件

    本篇文章将详细介绍如何使用JavaMail API在Android中发送带有附件并进行群发的电子邮件。首先,我们需要理解JavaMail API的工作原理以及如何将其集成到Android项目中。 1. **集成JavaMail库** 在Android项目中,...

    javamail发送邮件小程序,类以及写好,只要放包,下载一个就可以

    JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对...

    java邮件群发代码

    本篇将详细介绍一个简单的Java邮件群发代码,帮助理解如何使用JavaMail API来实现这个功能。 首先,我们来看核心类`Mailer`,它封装了邮件发送的相关配置和逻辑。`Mailer`类包含了以下主要属性: 1. `Session`对象...

    利用javamail api实现的邮件发送类

    JavaMail API 是一个开源的Java库,用于处理电子邮件的创建、发送和接收。这个API提供了一组接口和类,使得开发者能够直接与SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)服务器进行交互...

    发送邮件及邮件附件java代码实例(支持多附件-群发送)教案资料.docx

    通过`FileInputStream`和`BufferedReader`读取本地文件内容,准备作为邮件附件发送。 7. **SMTP交互**: 实例中创建Socket连接到SMTP服务器,然后通过`PrintWriter`发送命令和数据,实现邮件的发送。在发送过程中...

    自己写的一个基于Javamail的邮件发送客户端

    5. **群发功能**: 在描述中提到支持群发,这通常意味着客户端可以处理多个收件人,将同一封邮件发送给一组人。这涉及对 `Message` 对象的处理,将多个 `InternetAddress` 对象添加到收件人、抄送或密送字段。 6. **...

    邮件群发代码

    总的来说,JavaMail API提供了强大的邮件处理能力,通过合理的代码设计,可以实现高效、可靠的邮件群发功能。在使用过程中,要结合具体的邮件服务提供商的API文档和最佳实践,以确保邮件发送的稳定性和效果。

    java 邮件 群发 源代码

    邮件群发的关键在于正确设置多个收件人。在`MimeMessage`中,你可以使用`setRecipients()`方法,传入`Message.RecipientType.TO`、`Message.RecipientType.CC`或`Message.RecipientType.BCC`,以及收件人的邮箱列表...

    java发送邮件的案例 包括附件 群发

    以下是一个简单的示例代码,演示了如何使用JavaMail API发送带有附件的群发邮件: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class EmailSender { ...

    用jsp实现邮件群发

    在邮件群发的场景下,JSP将负责构建邮件内容并调用JavaMail API进行邮件发送。 JavaMail API是Java平台用于处理电子邮件的标准API,它提供了创建、发送和接收邮件的功能。要使用JavaMail,我们需要在项目中引入相关...

    java mail 发送邮件

    提供的文件"发送邮件及邮件附件java代码实例(支持多附件_群发送).doc"和"java_mail_发送邮件代码.doc"可能包含了更详细的代码示例和具体实现过程,建议参考这些文档以获取完整的邮件发送和附件处理的代码。...

    java邮件发送(单发,群发,附件,抄送)

    要实现邮件群发,只需在`setRecipients()`方法中传入多个收件人的邮箱地址,它们之间用逗号分隔。如果希望将邮件同时发送给一组人而不让他们看到彼此的邮箱,可以使用`BCC`。 8. **使用注意** 在实际应用中,需要...

    JAVA实现邮件群发

    总结来说,Java实现邮件群发涉及的关键知识点包括:JavaMail API的使用,配置SMTP服务器参数,创建和发送`MimeMessage`,以及在多收件人场景下的邮件发送逻辑。通过深入理解这些概念并实践,开发者可以有效地实现...

    javamail群发邮件

    综上所述,使用JavaMail实现邮件群发是一个相对直接但细节繁多的过程。开发者需要熟悉JavaMail API的相关组件及其用法,并确保邮件发送过程中各环节正确无误。通过上述步骤和示例代码的分析,开发者应该能够成功地...

    Spring 使用163发邮件带附件

    如果要添加附件,可以使用`MimeMessage`,它是JavaMail API的一部分,支持更复杂的邮件格式。 3. **创建Multipart对象**:在`MimeMessage`中,我们需要创建一个`Multipart`对象,它允许我们添加多个部分,包括文本...

    Android邮件发送器

    通过以上步骤,你可以在Android应用中构建一个强大的邮件发送器,支持群发和附件功能。注意,实际开发时需要根据具体需求调整代码,并对不同邮件服务商的策略进行适应,以确保邮件发送的成功率。

    Java实现发送邮件

    如果你想发送HTML格式的邮件,或者包含附件,可以使用`Multipart`来组合多个内容部分。例如,以下代码演示了如何发送带有HTML正文和附件的邮件: ```java Multipart mp = new MimeMultipart(); BodyPart ...

Global site tag (gtag.js) - Google Analytics