用JavaMail发送带附件的Email

随着网络应用的不断推广,电子邮件越来越多的被大家使用。虽然我们往往将电子邮件与 Foxmail、Outlook 这样的电子邮件客户端联系起来,但是往往我们也需要自己编程实现发送接收邮件,例如在一个网站注册用户后网站发出的回执mail,或者在网络购物的时候,在完成订单后的几分钟之内发送确认电子邮件。对于这样的需求,我们不能通过已有的邮件客户端而需要自己编写邮件发送或者处理程序。在这里向大家讲解一下如何利用JavaMail来实现邮件的收发。

注意:本文只打算讨论JavaMail收发带附件邮件的一些技巧,所以只是给出部分代码。

1.发送带附件的邮件

我们平时发送的邮件主要可以分解成2大部分,一个是发信人,接信人,主题等邮件标头,另外一部分是邮件内容,它包括了邮件的附件。我们在发送普通邮件的时候content设置的类型是"text/html",带上附件后,我们需要把content的类型设置成Multipart,这时content包括了附件和"text/html"类型的正文。下面的这个告诉大家如何把附件放置到邮件中。

private Multipart getMultipart() throws MessagingException,UnsupportedEncodingException
{
  MimeMultipart mp = new MimeMultipart();
  try
  {
   //设置content里的内容
   MimeBodyPart contentMbp = new MimeBodyPart();
   //请指定字符集,否则会是乱码
   contentMbp.setContent(_mailContent.getContent(), "text/html; charset=GB2312");
   mp.addBodyPart(contentMbp); //添加附件
   for (int i=0;i<_mailAttachment.getAttachPath().size();i++)
   {
    MimeBodyPart mbp = new MimeBodyPart();
    FileDataSource fds = new FileDataSource((String) _mailAttachment.getAttachPath().get(i));
    mbp.setDataHandler(new DataHandler(fds));
    mbp.setFileName(MimeUtility.encodeWord(fds.getName(), "GB2312",null));
    mp.addBodyPart(mbp);
   }
  }
  catch(MessagingException ie)
  {
   System.out.println("Set Content Message error..."+ie.getMessage());
   throw ie;
  }
  catch(UnsupportedEncodingException ie)
  {
   System.out.println("Encode the fileName error..."+ie.getMessage());
   throw ie;
  }
  return mp;
}

放置附件的注意事项如下:

在发mail时需要注意字符集的问题。不但content里要设置,而且文件名也需要设置。如果我们去掉mbp.setFileName(MimeUtility.encodeWord(fds.getName(),"GB2312",null));这句话,那么你选中的附件还是会带到邮件里,但是在附件里看不到。我们可以通过查看邮件大小知道。我们利用这个特点来实现发送content中写的是html语言,而且包含图片信息的邮件。

时间: 2025-01-18 23:35:24

用JavaMail发送带附件的Email的相关文章

java中javamail发送带附件的邮件实现方法_java

本文实例讲述了java中javamail发送带附件的邮件实现方法.分享给大家供大家参考.具体分析如下: JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输,JavaMail是可选包,因此如果需要使用的话你需要首先从java官网上下载.目前最新版本是JavaMail1.5.0,下面我们来看看javamail发送带附件的邮件实例 mail.java 代码: 复制代码 代码如下: package mail;

用php发送带附件的Email

参考了一下网上的文章.俗话说,天下文章一大抄,看你会抄不会抄.关键是能为我所用,这是最重要的.废话不多讲,let's go. 其实发mail很简单,php有现成的函数,可以参考php 的 manual,特别是第四个例子,讲的很详细. 关键是怎么把上传附件跟邮件发送结合起来.关于文件的上传,可以参考http://blog.csdn.net/slamdunk3/archive/2005/02/23/299025.aspx 这篇文章. 讲一下 文件上传的方法及其属性: 我们假设文件上传字段的名称如上例

JavaMail 发送带附件邮件遇到的问题 !

问题描述 大家好,我刚开始接触javamail,遇到一个小问题请大家帮忙解决下.我在发送带附件邮件的时候附件是可以发过去的,但是不管是中文名的还是英文名的附件到了接收邮件的那边都会是带地址的一串名字,例如:CUsersxinge1023Desktop___,_c.txt或CUsersxinge1023Desktop__茆_.jpg乱码问题我能搞定,但是就是搞不通为什么名字是带地址的,请大家帮忙看下,我只想要文件名,而不要前面的那一长串文件路径,我的电脑系统是win7,服务器是tomcat的,谢谢

java中javamail发送带附件的邮件实例

mail.java 代码  代码如下 复制代码 package mail;    import java.util.* ;  import java.io.* ;  import javax.mail.* ;  import javax.mail.internet.* ;  import javax.activation.* ;  public class Mail {      //定义发件人.收件人.SMTP服务器.用户名.密码.主题.内容等      private String disp

用JavaMail发送带附件的邮件

本文根据Ian F. Darwin的<Java Cookbook>整理而成,原书用整章的文字介绍如何发邮件,可能头绪会比较乱,本文则将其浓缩成一篇文章,力求使完全不懂JavaMail的人,都可以根据文中指示稍作修改,拿来就可以用.如果对其中原理还有不清楚,你可以参考原书.一.首先要用到三个java文件:1.MailConstants.java,properties文件的助记符:///////////////////////////////////////////////////////////

javamail-javaMail发送带附件的邮件时,png的附件可以发送而jpg的图片则会导致发送失败

问题描述 javaMail发送带附件的邮件时,png的附件可以发送而jpg的图片则会导致发送失败 同一个图片的png可以发送,而jpg格式发送失败,定位到代码处如下: // 保存邮件到指定的收件夹中 public boolean copyMessage(Message[] message, String folderName) throws MessagingException { openFolder(folderName, Folder.READ_WRITE);// 打开指定的邮件夹 fol

发送带附件的HTML格式邮件例程可以带附件

如何通过 ASP 来发送带附件.格式为 HTML 的邮件?下面提供了一个例程. <%@ LANGUAGE=VBScript%><%Response.Buffer = TrueResponse.Expires = 0 '创建对象实例Set myMail = Server.CreateObject("CDONTS.NewMail") '以下是将要发送的内容HTML = "<html>"HTML = HTML & "<

发送带附件的HTML格式邮件例程

发送带附件的HTML格式邮件例程 如何通过 ASP 来发送带附件.格式为 HTML 的邮件?下面提供了一个例程. <%@ LANGUAGE=VBScript%><%Response.Buffer = TrueResponse.Expires = 0 '创建对象实例Set myMail = Server.CreateObject("CDONTS.NewMail") '以下是将要发送的内容HTML = "<html>"HTML = HTML

发送带附件的HTML格式邮件例程[转]可以带附件的哟。精华备查?

精华 发送带附件的HTML格式邮件例程 如何通过 ASP 来发送带附件.格式为 HTML 的邮件?下面提供了一个例程. <%@ LANGUAGE=VBScript%><%Response.Buffer = TrueResponse.Expires = 0 '创建对象实例Set myMail = Server.CreateObject("CDONTS.NewMail") '以下是将要发送的内容HTML = "<html>"HTML = H