- 浏览: 292766 次
- 性别:
- 来自: 东京
文章分类
最新评论
-
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 1319To control transaction boundari ... -
EJB3.0初学备注
2008-08-31 23:33 1443Session Bean Example @State ... -
JUnit初学备注
2008-08-24 19:32 10311,Create a class for testing,he ... -
简易java分页标签
2007-12-17 15:18 68201,标签的实现类NumenTag.java java 代码 ... -
JSP模板应用指南
2007-12-15 16:48 1969Window 工具包提供了一种典型的布局机制,比如说在一个容器 ... -
Filter对权限和session的控制
2007-12-15 16:26 1778用Filter防止用户访问一些未被授权的资源,比如一个用户未登 ... -
创建Java中的线程池
2007-12-15 16:12 1762线程是Java的一大特性,它可以是给定的指令序列、给定的方法中 ... -
JMF简单示例
2007-12-15 16:08 2005java 代码 import java.awt.*; ... -
在jar中查找类
2007-12-15 16:02 1625java 代码 import java.util.* ... -
Java Media Framework
2007-12-15 15:59 2208安装JMF 下载完JMF安装程序后,双击安装程序的图 ... -
Java程序易犯的21种错误
2007-12-15 15:57 10491.Duplicated Code 代码重复几乎 ... -
六种异常处理的陋习
2007-12-15 00:26 1146你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Ja ... -
JXTA P2P网络编程技术
2007-12-15 00:24 22711.前言 最近,P2P(Peer-to-Peer)又成为 ...
相关推荐
java发送附件mail, 包阔多附件,文本mail,以及网页mail.
java 发邮件带excel附件,以流的形式发送附件,不生成excel文件
java Mail 发送邮件及邮件附件 java Mail 发送邮件及邮件附件
NULL 博文链接:https://haroldxie.iteye.com/blog/697353
JAVA 发送文本格和HTML格式并带图片链接的邮件实例,图片可以为附件可以为邮件正文显示,可以为图片添加超链接
SpringBoot中整合Mail实现发送带附件的邮件示例代码SpringBoot中整合Mail实现发送带附件的邮件示例代码
java mail 邮件发送 代码文档 java_mail_发送邮件代码 发送邮件及邮件附件java代码实例(支持多附件_群发送)
JAVA_Mail_邮件_发送_接收_抄送_密送_附件 该资源是一个Java项目,可用Eclipse导入即可运行。 共4个类: 1:ReceiveMail.java -接收普通邮件 2:ReciveMailWithAttachMent.java --接收含有附件的邮件 3:SendMail....
java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送java生成excle文件不需要导出直接通过邮件附件发送
JavaMail邮件发送(带附件)
} /** * 增加发送附件 * @param filename * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常 * @return */ public boolean addFileAffix(String filename) { try { BodyPart bp = new MimeBodyPart...
java mail 邮件发送,可发送附件;多个附件以,号分开;可抄送、密送等多个抄送、密送以,号分开。详细发送DEMO参考SendMailTest.java类: SendMailInfo mailInfo = new SendMailInfo("mail.china1168.com", true, ...
java Mail 邮箱发送html代码块和附件
java mail 发送邮件源代码以及所需要的两个架包。 附件代码以腾讯企业邮箱发送邮件为例子,其它邮箱只要支持SMTP服务即可。只要懂点JAVA就能看懂。
Java课程设计 Java实现邮件的加密发送
采用javax.mail发送邮件,可以发送附件
这个java project的源代码 博文链接:https://kukuqiu.iteye.com/blog/161771
使用mail.jar包进行发送邮件支持多接收人,多附件,但是附件不可过大。
java mail 邮件(群发)发送的源码 里面带有附件的发送