- 浏览: 298589 次
- 性别:
- 来自: 东京
文章分类
最新评论
-
80后的童年2:
企业级分布式搜索平台Solr视频教程网盘地址:https:// ...
企业级搜索引擎Solr使用入门指南 -
springdata_spring:
apache lucene开源框架demo使用实例教程源代码下 ...
Lucene / Solr 开发经验 -
springdata-jpa:
java web开发分页demo源代码下载:http://ww ...
简易java分页标签 -
zjf_sdnu:
兄弟,script写错了
jqGrid初学备注 -
85600367:
你好,请教一个问题。当进行分布式查询时solr无法查询到Luc ...
Lucene / Solr 开发经验
1,读入图片的方式:
发现网上讲的很多读取图片的方式都不对,按下面提供的这个方法来读取,保证成功。
java 代码
- private byte [] getImageBytes(String file) {
- byte [] myData = null ;
- InputStream input = getClass().getClassLoader().getResourceAsStream(file);
- try {
- ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
- int ch = 0 ;
- while ((ch = input.read()) != - 1 ) {
- byteArray.write(ch);
- }
- // System.out.println(byteArray.size());
- myData = byteArray.toByteArray();
- // System.out.println(myData.length);
- }
- catch (Exception e) {
- e.printStackTrace();}
- return myData;
- }
2,发送邮件的“机关”
java 代码
- MimeMessage msg = new MimeMessage(mailSession);
- msg.setFrom(new InternetAddress( this .getSenderAddress()));
- msg.setSubject(this .getTitle());
- msg.setSentDate(new Date());
- Address[] adds = InternetAddress.parse(getToAddress());
- msg.addRecipients(javax.mail.Message.RecipientType.TO, adds);
- // 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
- MimeMultipart mm = new MimeMultipart( "related" );
- // 新建一个存放信件内容的BodyPart对象
- BodyPart mdp = new MimeBodyPart();
- // 给BodyPart对象设置内容和格式/编码方式
- mdp.setContent(this .getContent(), "text/html;charset=utf-8" );
- // 这句很重要,千万不要忘了
- mm.addBodyPart(mdp);
- // ---------图片处理开始!!!!!!!!!!!!!!!!
- mdp = new MimeBodyPart();
- byte bbb[] = new byte [ 1024 * 10 ];
- this .getClass().getClassLoader().getResourceAsStream( "notice.jpg" ).read(bbb);
- DataHandler dh = new DataHandler( new ByteArrayDataSource( this .getImageBytes( "notice.jpg" ), "application/octet-stream" ));
- mdp.setDataHandler(dh);
- // 加上这句将作为附件发送,否则将作为信件的文本内容
- mdp.setFileName("1.jpg" );
- mdp.setHeader("content-id" , "<IMG1>" );
- // 将含有附件的BodyPart加入到MimeMultipart对象中
- mm.addBodyPart(mdp);
- // 把mm作为消息对象的内容
- msg.setContent(mm);
3,一个实际应用的完整代码
要求根据一个格式文件和模版,发一封漂亮的邮件,所以需要用到HTML格式来发送邮件。不多说了,看代码吧!
java 代码
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Properties;
- import javax.activation.DataHandler;
- import javax.mail.Address;
- import javax.mail.BodyPart;
- import javax.mail.internet.InternetAddress;
- import javax.mail.internet.MimeBodyPart;
- import javax.mail.internet.MimeMessage;
- import javax.mail.internet.MimeMultipart;
- import javax.mail.util.ByteArrayDataSource;
- /** */ /**
- *
- * @author robin
- * @version $Revision: 1.4 $
- */
- public class SendMailUtil {
- private String mailServerAddress;
- private String user;
- private String password;
- private String toAddress;
- private String ccAddress;
- private String title;
- private String content;
- private boolean isHtml = true ;
- private Map attachmentFiles = null ;
- private String senderAddress;
- private byte [] getImageBytes(String file) {
- byte [] myData = null ;
- InputStream input = getClass().getClassLoader().getResourceAsStream(file);
- try {
- ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
- int ch = 0 ;
- while ((ch = input.read()) != - 1 ) {
- byteArray.write(ch);
- }
- // System.out.println(byteArray.size());
- myData = byteArray.toByteArray();
- // System.out.println(myData.length);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return myData;
- }
- public void sendMail() throws Exception {
- Properties pos = new Properties();
- pos.put("mail.smtp.host" , "10.5.1.1" );
- javax.mail.Session mailSession = javax.mail.Session.getInstance(pos,null );
- MimeMessage msg = new MimeMessage(mailSession);
- msg.setFrom(new InternetAddress( this .getSenderAddress()));
- msg.setSubject(this .getTitle());
- msg.setSentDate(new Date());
- Address[] adds = InternetAddress.parse(getToAddress());
- msg.addRecipients(javax.mail.Message.RecipientType.TO, adds);
- // 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
- MimeMultipart mm = new MimeMultipart( "related" );
- // 新建一个存放信件内容的BodyPart对象
- BodyPart mdp = new MimeBodyPart();
- // 给BodyPart对象设置内容和格式/编码方式
- mdp.setContent(this .getContent(), "text/html;charset=utf-8" );
- // 这句很重要,千万不要忘了
- mm.addBodyPart(mdp);
- // ---------图片处理开始!!!!!!!!!!!!!!!!
- mdp = new MimeBodyPart();
- byte bbb[] = new byte [ 1024 * 10 ];
- this .getClass().getClassLoader().getResourceAsStream( "notice.jpg" ).read(bbb);
- DataHandler dh = new DataHandler( new ByteArrayDataSource( this .getImageBytes( "notice.jpg" ), "application/octet-stream" ));
- mdp.setDataHandler(dh);
- // 加上这句将作为附件发送,否则将作为信件的文本内容
- mdp.setFileName("1.jpg" );
- mdp.setHeader("content-id" , "<IMG1>" );
- // 将含有附件的BodyPart加入到MimeMultipart对象中
- mm.addBodyPart(mdp);
- // ---------图片处理结束!!!!!!!!!!!!!!!!
- // 把mm作为消息对象的内容
- msg.setContent(mm);
- msg.saveChanges();
- javax.mail.Transport transport = mailSession.getTransport("smtp" );
- transport.connect();
- transport.sendMessage(msg, msg.getAllRecipients());
- transport.close();
- }
- public String getCcAddress() {
- return ccAddress;
- }
- public String getContent() {
- if (content == null ) {
- return "" ;
- } else {
- return content;
- }
- }
- public String getMailServerAddress() {
- return "10.5.1.1" ;
- }
- public String getUser() {
- if (user == null || user.equals( "" )) {
- user = "" ;
- }
- return user;
- }
- public String getPassword() {
- if (password == null || password.equals( "" )) {
- password = "" ;
- }
- return password;
- }
- public String getTitle() {
- if (title == null ) {
- return "" ;
- } else {
- return title;
- }
- }
- public String getToAddress() {
- return toAddress;
- }
- public boolean isHtml() {
- return isHtml;
- }
- public void setCcAddress(String ccAddress) {
- this .ccAddress = ccAddress;
- }
- public void setContent(String content) {
- this .content = content;
- }
- public void setMailServerAddress(String mailServerAddress) {
- this .mailServerAddress = mailServerAddress;
- }
- public void setUser(String user) {
- this .user = user;
- }
- public void setPassword(String password) {
- this .password = password;
- }
- public void setTitle(String title) {
- this .title = title;
- }
- public void setToAddress(String toAddress) {
- this .toAddress = toAddress;
- }
- public void setIsHtml( boolean isHtml) {
- this .isHtml = isHtml;
- }
- public void setAttachmentFiles(Map attachmentFiles) {
- this .attachmentFiles = attachmentFiles;
- }
- public Map getAttachmentFiles() {
- return attachmentFiles;
- }
- public void setHtml( boolean isHtml) {
- this .isHtml = isHtml;
- }
- public String getSenderAddress() {
- return senderAddress;
- }
- public void setSenderAddress(String senderAddress) {
- this .senderAddress = senderAddress;
- }
- public String readMailTemplate(String year, String season) throws IOException {
- ClassLoader loder = this .getClass().getClassLoader();
- InputStream is = loder.getResourceAsStream("t.html" );
- byte [] buf = new byte [ 1024 * 5 ];
- is.read(buf);
- String t = new String(buf, "utf-8" );
- t = t.replaceFirst("#year" , year);
- t = t.replaceFirst("#season" , season);
- // System.out.println(t);
- return t;
- }
- public static void sendNoticeMail(String title, String year, String season,String sender, File f) {
- SendMailUtil logic = new SendMailUtil();
- try {
- logic.setTitle(title);
- // logic.setMailServerAddress("10.5.1.1");
- String temp = logic.readMailTemplate(year, season);
- logic.setSenderAddress(sender);
- FileReader fr = new FileReader(f);
- char [] ch = new char [ new Long(f.length()).intValue()];
- fr.read(ch);
- StringBuffer sb = new StringBuffer( new Long(f.length()).intValue());
- for ( int i = 0 ; i < ch.length; i++) {
- sb.append(ch[i]);
- }
- String[] all = sb.toString().split("\n" );
- // System.out.println(sb.toString());
- for ( int i = 0 ; i < all.length; i++) {
- if (all[i].equals( "" )) {
- continue ;
- }
- String t = temp;
- String[] item = all[i].split("," );
- logic.setToAddress(item[2 ]);
- // 处理内容
- t = t.replaceFirst("#name" , item[ 1 ] + "(" + item[ 0 ] + ")" );
- t = t.replaceAll("#total" , item[ 3 ]);
- t = t.replaceFirst("#tax" , item[ 4 ]);
- t = t.replaceFirst("#actualTotal" , item[ 5 ]);
- logic.setContent(t);
- logic.sendMail();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
4,小技巧
我第一次发送后,发现读取图片的程序不对,在Outlook 2003中打开邮件,发现没有出现图片,搞半天也不知道是什么原因,后来我用FoxMail打开邮件,发现图片附件上打了个叉叉,才知道是附件中的图片读 取不对,如果你有这样的问题,不妨换个Mail客户端试试。
发表评论
-
Bean-Managed Transactions
2009-01-19 22:58 1361To control transaction boundari ... -
EJB3.0初学备注
2008-08-31 23:33 1515Session Bean Example @State ... -
JUnit初学备注
2008-08-24 19:32 10821,Create a class for testing,he ... -
简易java分页标签
2007-12-17 15:18 69281,标签的实现类NumenTag.java java 代码 ... -
JSP模板应用指南
2007-12-15 16:48 2029Window 工具包提供了一种典型的布局机制,比如说在一个容器 ... -
Filter对权限和session的控制
2007-12-15 16:26 1817用Filter防止用户访问一些未被授权的资源,比如一个用户未登 ... -
创建Java中的线程池
2007-12-15 16:12 1805线程是Java的一大特性,它可以是给定的指令序列、给定的方法中 ... -
JMF简单示例
2007-12-15 16:08 2079java 代码 import java.awt.*; ... -
在jar中查找类
2007-12-15 16:02 1677java 代码 import java.util.* ... -
Java Media Framework
2007-12-15 15:59 2267安装JMF 下载完JMF安装程序后,双击安装程序的图 ... -
Java程序易犯的21种错误
2007-12-15 15:57 10921.Duplicated Code 代码重复几乎 ... -
六种异常处理的陋习
2007-12-15 00:26 1195你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Ja ... -
JXTA P2P网络编程技术
2007-12-15 00:24 23391.前言 最近,P2P(Peer-to-Peer)又成为 ...
相关推荐
总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...
在Java编程中,发送带有附件和图片的电子邮件是一项常见的任务,尤其在自动化通知、报告分发等场景下。本文将详细讲解如何使用Java Mail API来实现这一功能,同时参考提供的`TemplateMailMessage.java`和`...
在IT领域,特别是Java开发中,使用Java Mail API发送带有图片的HTML格式邮件是一项常见且实用的功能。本文将深入解析如何利用Java Mail实现这一需求,包括必要的知识点、代码示例及其实现细节。 ### 一、Java Mail ...
在使用 Java Mail 发送邮件时,需要设置邮件的附件。Java Mail 支持多种邮件附件类型,包括文本、图像和二进制文件。下面是一个简单的示例代码: ```java public class Mail { public static void main(String[] ...
在Java编程中,发送带有Excel附件的电子邮件是一项常见的任务,特别是在数据报告或自动化流程中。在某些场景下,我们可能希望直接以流的形式处理Excel数据,而不是先将其保存为一个实际的文件,然后再作为附件发送。...
标题中的“用Java Mail发送包含图片的HTML”指的是使用JavaMail API来发送带有嵌入式图像的HTML格式电子邮件。在电子邮件中,除了纯文本内容,我们有时需要包含图像以提高信息的可读性和视觉吸引力。JavaMail API是...
javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名、密码等参数。 2. 使用...
5. 添加附件:如果需要发送附件,可以使用MimeBodyPart和Multipart类来创建包含附件的邮件。 6. 发送邮件:使用Transport类的send方法发送邮件。 四、添加附件的实现 1. 创建MimeBodyPart对象:为每个附件创建一个...
在Java编程语言中,发送带有附件的邮件是一个常见的任务,特别是在企业级应用或者自动化脚本中。这个场景通常涉及到SMTP(Simple Mail Transfer Protocol)服务,JavaMail API以及MIME(Multipurpose Internet Mail ...
在Java编程中,发送带有HTML格式和图片的邮件是一项常见的任务,这通常涉及到电子邮件API的使用,例如JavaMail API。以下是对这个主题的详细讲解: 首先,JavaMail API是Java平台上的一个开源库,用于处理电子邮件...
在本项目中,我们将深入探讨如何使用SpringMail发送带有附件的电子邮件。首先,我们需要了解几个核心概念: 1. **JavaMail API**: 这是Java平台上的一个标准API,用于处理邮件相关任务,如创建、发送和接收邮件。它...
如果要发送附件,可以使用`Multipart`和`BodyPart`来构建复杂的邮件结构。 ```java Multipart multipart = new MimeMultipart(); // 添加文本正文 BodyPart messageBodyPart = new MimeBodyPart(); ...
对于需要发送附件或图片的情况,可以通过构建`Multipart`对象来实现。`Multipart`允许我们将多个`BodyPart`(包括文本、图片等)组合在一起,形成一封完整的邮件。 ```java Multipart multipart = new ...
本文将详细介绍如何在Spring Boot项目中配置和使用JavaMailSender来发送带有附件的邮件。 首先,我们需要在项目的`pom.xml`或`build.gradle`文件中添加对`spring-boot-starter-mail`的依赖。对于Maven用户,可以在`...
4. **添加附件**:如果需要发送附件,可以使用MimeBodyPart和MimeMultipart类。 ```java MimeBodyPart attachmentPart = new MimeBodyPart(); attachmentPart.attachFile("path/to/your/file"); MimeMultipart ...
要使用Java Mail发送邮件,首先需要添加相应的依赖库到项目中。对于Android项目,通常会通过Gradle来引入。 1. 添加依赖: 在项目的build.gradle文件中,添加以下依赖: ```groovy dependencies { ...
这个“javamailtest带附件”可能是某个示例项目或教程,展示了如何使用JavaMail API来发送带有附件的电子邮件。下面将详细讨论JavaMail API以及如何在其中添加附件。 1. **JavaMail API基础**: JavaMail API 是...
JAVA_Mail_邮件_发送_接收_抄送_密送_附件 该资源是一个Java项目,可用Eclipse导入即可运行。 共4个类: 1:ReceiveMail.java -接收普通邮件 2:ReciveMailWithAttachMent.java --接收含有附件的邮件 3:SendMail....
本教程将深入讲解如何使用Java实现邮件发送功能,包括添加附件和向多个收件人发送邮件。 首先,我们来看`Mailer.java`,这个类通常会封装邮件发送的核心逻辑。在Java中,我们主要依赖JavaMail API来实现邮件的发送...
发送附件是通过`Multipart`对象实现的,它允许我们组合多个部分,包括文本和二进制文件。首先,创建一个`MimeBodyPart`对象来表示附件,然后将其添加到`Multipart`: ```java MimeBodyPart attachmentPart = new ...