用JavaMail发送带附件的邮件

转载 2006年05月23日 16:33:00

源代码: 下载 (右击->目标另存为, 下载后将扩展名改为.rar)

以新浪为例,发附件要用到上传的组件,O'Reilly公司的cos.jar。请将cos.jar、mail.jar和activation.jar,放到你的WEB应用程序的WEB-INF/lib目录下。
测试用的JavaMail3.html
<html>
<head>
  <title>JavaMail3.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body>

<h2>利用JavaMail来发送电子邮件 - 附件</h2>
<form name="SendMessage" Method="post" action="JavaMail3.jsp" enctype="multipart/form-data">
  <p>寄信人:<input type="text" name="From" size="30" maxlength="30"></p>
  <p>收信人:<input type="text" name="To" size="30" maxlength="30"></p>
  <p>主题:<input type="text" name="Subject" size="30" maxlength="30"></p>
  <p>格式:<select name="Type" size="1">
<option value="text/plain">Text</option>
<option value="text/html">HTML</option>
           </select></p>
  <p>附件:<input type="file" name="FileName" size="20" maxlength="20"></p>         
  <p>内容:</p><p><textarea name="Message" cols=40 rows=5></textarea></p>
  
  <input type="submit" value="发送">
  <input type="reset" value="重填">
</form>

</body>
</html>
处理附件与邮件的JavaMail3.jsp
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.util.*,java.io.*" %>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page contentType="text/html;charset=GB2312" %>

<html>
<head>
  <title>CH17 - JavaMail2.jsp</title>
</head>
<body>

<h2>利用JavaMail来发送电子邮件 - 附件</h2>

<%
InternetAddress[] address = null;

request.setCharacterEncoding("gb2312");
MultipartRequest multi = new MultipartRequest(request , "." , 5*1024*1024 , "GB2312");

String mailserver   = "smtp.sina.com.cn";
String From         = multi.getParameter("From");
String to           = multi.getParameter("To");
String Subject      = multi.getParameter("Subject");
String type     = multi.getParameter("Type");
String messageText  = multi.getParameter("Message");
String FileName     = multi.getFilesystemName("FileName");

   boolean sessionDebug = false;

try {

   // 设定所要用的Mail 服务器和所使用的传输协议
   java.util.Properties props = System.getProperties();
 
   props.put("mail.host",mailserver);
   props.put("mail.transport.protocol","smtp");
             props.put("mail.smtp.auth", "true");//指定是否需要SMTP验证

   // 产生新的Session 服务
   javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props,null);
  mailSession.setDebug(sessionDebug);
   Message msg = new MimeMessage(mailSession);
   // 设定发信人
   msg.setFrom(new InternetAddress(From));
     // 设定收信人
   address = InternetAddress.parse(to,false);
   msg.setRecipients(Message.RecipientType.TO, address);
     // 设定信中的主题 
   msg.setSubject(Subject);
     // 设定送信的时间
   msg.setSentDate(new Date());

   if (FileName != null)
   {
        File file = new File(FileName);
              
   // 如果有附件,先将邮件内容部分存起来
           MimeBodyPart mbp1 = new MimeBodyPart();
      
     // 设定邮件内容的类型为 text/plain 或 text/html
   mbp1.setContent(messageText, type + ";charset=GB2312");

           // 再来对附件作处理
           MimeBodyPart mbp2 = new MimeBodyPart();
           FileDataSource fds = new FileDataSource(FileName);
           mbp2.setDataHandler(new DataHandler(fds));
           mbp2.setFileName(MimeUtility.encodeText(fds.getName(), "GB2312", "B"));

           // 最后再将两者整合起来,当作一份邮件送出
           Multipart mp = new MimeMultipart();
           mp.addBodyPart(mbp1);
           mp.addBodyPart(mbp2);
           msg.setContent(mp);
    }
    else
    {
           // 若没有附件时,就直接存邮件内容
           msg.setContent(messageText,type + ";charset=GB2312");
    }             
              Transport transport = mailSession.getTransport("smtp");
              //请填入你邮箱的用户名和密码,千万别用我的^_^。
              transport.connect(mailserver, "zz3zcwb", "1234567");
              transport.sendMessage(msg, msg.getAllRecipients());
              transport.close();
  out.println("邮件已顺利发送");

}
     catch (MessagingException mex) 
     {
 out.println(mex);
         mex.printStackTrace();
}
%>
</body>
</html>

JavaMail发送邮件(普通邮件,html邮件以及附件邮件)

实现普通邮件,html邮件以及附件邮件的发送;此例子使用的是163邮箱 邮箱的服务地址,邮件用户名密码在配置文件中读取;...
  • shfei10100
  • shfei10100
  • 2013年12月25日 16:08
  • 7733

java发送邮件带附件

import java.io.File; import java.util.Date; import java.util.Properties; import javax.activation.Da...
  • hfmbook
  • hfmbook
  • 2014年06月03日 17:52
  • 10410

使用javaMail来发送和接收带附件的邮件

使用javaMail发送(文本支持HTML)邮件   内容为HTML网页的邮件叫做HTML型邮件,它与文本型邮件的主要区别在于MIME类型的不同,一个为“text/html”,一个为“text/p...
  • wenjie4892543
  • wenjie4892543
  • 2014年01月15日 16:33
  • 985

java邮件自动发送时添加网络附件

查了很多资料都是使用本地资源作为附件发送。但是遇到资源在数据服务器上时,怎么在发送邮件时添加附件吗?先下载资源,然后发送邮件,再删除附件?...
  • shuzl213
  • shuzl213
  • 2017年02月18日 20:30
  • 598

Javamail 发送附件中文名过长以及乱码问题

最近在弄javamail发送邮件当邮件里含有附件并且附件是中文的时候发送后就会出现乱码...
  • haozhongjun
  • haozhongjun
  • 2014年04月24日 16:49
  • 8501

非典型 JavaMail 邮件附件名乱码问题

------------  记一个JavaMail 附件乱码的问题      说到乱码,很多人都遇到过,“哎呀,你这个编码是不是UTF-8!”,“你这个会不会操作系统不一致导致的...
  • wty19
  • wty19
  • 2016年01月29日 15:18
  • 1604

java实现发送邮件可多个附件内嵌图片-commons-email使用

前言        java实现发邮件功能,其实SUN在javaEE的开发包里给我们提供了相关的工具,利用 mail.jar 和 activation.jar可以实现这个功能,n年前包括我第一次实习的...
  • chenleixing
  • chenleixing
  • 2015年04月11日 13:22
  • 7051

Java MailUtils邮件发送工具类 支持附件

Java MailUtils邮件发送工具类 支持附件JavaMail Demo,引用的jar如下: - activation.jar - mail.jarsmtp设置参考https://www.w...
  • u010826617
  • u010826617
  • 2017年06月22日 11:21
  • 524

java带图片的邮件发送方法实现

Java发送带图片的邮件,代码为发生2张图片的邮件关联方式,注释中有发送带附件、带多人发送解析的代码,可以自行调整...
  • mm7591383
  • mm7591383
  • 2014年06月03日 09:46
  • 5088

Java mail 邮件发送 附件文件名过长的问题 版本1.5及以上

在使用javamail 1.5版本的时候,如果附件文件名过长,会错误显示为“未命名的附件 00439.dat” 解决方案如下: 一、Javamail jar包退回1.4版本 二、...
  • albert0707
  • albert0707
  • 2017年04月05日 18:36
  • 1541
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用JavaMail发送带附件的邮件
举报原因:
原因补充:

(最多只允许输入30个字)