`

javamail写带附件eml文件并调用outlook的方法

    博客分类:
  • java
阅读更多
1 将邮件写入到文件的代码

      msg.saveChanges();
      File f = new File("d:/test.eml");
      msg.writeTo(new FileOutputStream(f));

2 调用outlook的代码

Process p = Runtime.getRuntime().exec("cmd /C start msimn.exe /eml:d:/test.eml");

3 完整的代码如下

package code.jdk.mail;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;
import java.util.Vector;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.AuthenticationFailedException;
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 javax.mail.internet.MimeUtility;

public class EmailWriteToFile {
  // 定义发件人、收件人、SMTP服务器、用户名、密码、主题、内容等
  private String displayName;

  private String to;

  private String from;

  private String smtpServer;

  private String username;

  private String password;

  private String subject;

  private String content;

  private boolean ifAuth; // 服务器是否要身份认证

  private String filename = "";

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

  private String contentType = "text/html";

  private String charset = "utf-8";

  public void addFile(String filename) {
    file.add(filename);
  }

  public String getContentType() {
    return contentType;
  }

  public void setContentType(String contentType) {
    this.contentType = contentType;
  }

  public String getCharset() {
    return charset;
  }

  public void setCharset(String charset) {
    this.charset = charset;
  }

  /**
   * 设置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 EmailWriteToFile() {

  }

  private int port = 25;

  public int getPort() {
    return port;
  }

  public void setPort(int port) {
    this.port = port;
  }

  /**
   * 发送邮件
   *
   * @throws IOException
   * @throws FileNotFoundException
   */
  public boolean send() throws FileNotFoundException, IOException {
    HashMap<String, String> map = new HashMap<String, String>();
    map.put("state", "success");
    String message = "邮件发送成功!";
    Session session = null;
    Properties props = System.getProperties();
    props.put("mail.smtp.host", smtpServer);
    props.put("mail.smtp.port", port);
    try {

      props.put("mail.smtp.auth", "false");
      session = Session.getDefaultInstance(props, null);

      session.setDebug(false);
      Transport trans = null;
      Message msg = new MimeMessage(session);
      try {
        Address from_address = new InternetAddress(from, displayName);
        msg.setFrom(from_address);
      } catch (java.io.UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      InternetAddress[] address = { new InternetAddress(to) };
      msg.setRecipients(Message.RecipientType.TO, address);
      msg.setSubject(subject);
      Multipart mp = new MimeMultipart();
      MimeBodyPart mbp = new MimeBodyPart();
      mbp.setContent(content.toString(), getContentType() + ";charset=" + getCharset());
      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(MimeUtility.encodeText(fds.getName(), getCharset(),"B")); // 得到文件名同样至入BodyPart
          mp.addBodyPart(mbp);
        }
        file.removeAllElements();
      }
      msg.setContent(mp); // Multipart加入到信件
      msg.setSentDate(new Date()); // 设置信件头的发送日期
      // 发送信件
      msg.saveChanges();
      File f = new File("d:/test.eml");
      msg.writeTo(new FileOutputStream(f));

    } catch (AuthenticationFailedException e) {
      map.put("state", "failed");
      message = "邮件发送失败!错误原因: " + "身份验证错误!";
      e.printStackTrace();
      return false;
    } catch (MessagingException e) {
      message = "邮件发送失败!错误原因: " + e.getMessage();
      map.put("state", "failed");
      e.printStackTrace();
      Exception ex = null;
      if ((ex = e.getNextException()) != null) {
        System.out.println(ex.toString());
        ex.printStackTrace();
      }
      return false;
    }
    // System.out.println(" 提示信息:"+message);
    map.put("message", message);
    return true;
  }

  public static void main(String[] args) throws FileNotFoundException, IOException, InterruptedException {
    EmailWriteToFile o = new EmailWriteToFile();
    o.setSmtpServer("localhost");
    o.setFrom("from@from.com");
    o.setDisplayName("TOM");
    o.setTo("to@to.com");
    o.setSubject("Test Subject");
    o.setContent("Test Content");
    o.setCharset("GBK");
    o.addFile("e:/读我.txt");
    o.send();
    Process p = Runtime.getRuntime().exec("cmd /C start msimn.exe /eml:d:/test.eml");

  }

}
分享到:
评论

相关推荐

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

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

    javamail 可带附件demo 源码

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

    JavaMail发送带附件的邮件

    在JavaMail中发送带附件的邮件是一个常见的需求,尤其对于企业级应用或者自动化任务来说。下面将详细介绍如何使用JavaMail来实现这一功能,以及所需依赖和示例代码。 首先,要使用JavaMail,你需要在项目中添加相应...

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

    在JavaMail中,发送带有附件的邮件涉及到对MIME(Multipurpose Internet Mail Extensions)标准的理解和使用。MIME扩展了邮件协议,允许在邮件中包含多媒体内容,如图片、文档、音频或视频文件等。 在JavaMail中,`...

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

    本教程将详细讲解如何使用JavaMail API在Gmail上发送邮件,包括不带附件和带有一个附件的情况。 首先,JavaMail是一个开源的Java库,它提供了用于处理邮件的标准API。在使用JavaMail发送邮件前,你需要在项目中引入...

    javamail(带界面的javamail)

    在本项目中,"javamail(带界面的javamail)"显然包含了一个具有图形用户界面(GUI)的示例应用,展示了如何集成JavaMail功能来实现邮件的交互操作。 首先,我们要了解JavaMail的基本概念。JavaMail API 提供了 javax...

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

    在提供的压缩包文件“james+javaMail收发邮件”中,可能包含了示例代码和配置文件,供开发者参考和学习如何在实际项目中实现邮件收发功能,特别是处理中文内容和附件。通过理解和实践这些示例,开发者可以更好地掌握...

    javamail附件从流中获取

    在"javamail附件从流中获取"这个主题中,我们将深入探讨如何使用JavaMail库从输入流中读取数据并作为邮件附件发送。 首先,我们需要导入JavaMail的相关库,主要包含`javax.mail`和`com.sun.mail`两个包。这两个包...

    javamail收发邮件(带附件,正文带图).doc

    javamail收发邮件(带附件,正文带图).doc

    javaMail 用三种方式实现发送附件

    javaMail 用附件路径,文件流 byte[] 或 base64 字符串 实现发送附件功能

    javamail收取邮件(包括附件)

    首先,确保你的项目中已经引入了JavaMail相关的依赖,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; &lt;artifactId&gt;javax.mail &lt;version&gt;1.6.2 ``` 接下来...

    javamail发邮件(带附件)

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

    javamail发送邮件(带附件)

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

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    Java查询OutLook邮件代码

    `MimeMessage.getContent()` 返回邮件内容,如果邮件包含MIME多部分,我们可以将其转换为 `MimeMultipart` 对象,然后遍历其子部分,找到 `MimeBodyPart` 对象并使用 `saveFile()` 方法保存附件。 8. **安全性和...

    javaMail 全功能 附件 HTML

    javaMail可以代附件,可以发送HTML,可以在HTML只显示图片等

    JAVAMAIL集合发送图片,附件,内容,HTML等得JAVAMAIL代码

    本资源是一个集合发送图片,附件,内容,HTML等得JAVAMAIL代码,并且可以同时发送多个附件多个图片,只需填充VO类,即可直接调用并发送邮件,例子已经写好,只要填充上必要值即可,经163,qq,sina测试没有问题,有...

    javamail.jar,javamail资源包

    `javamail.jar` 文件是JavaMail的核心库,包含了所有必要的类和接口,使得开发者可以在他们的应用程序中集成邮件功能。 在JavaMail中,有几个关键的概念和组件: 1. **Session**: 这是JavaMail中的顶级对象,代表...

    JAVAMAIL集合发送图片,附件,内容

    本资源是一个集合发送图片,附件,内容,HTML等得JAVAMAIL代码,并且可以同时发送多个附件多个图片,只需填充VO类,即可直接调用并发送邮件,例子已经写好,只要填充上必要值即可,经163,qq,sina测试没有问题,有...

Global site tag (gtag.js) - Google Analytics