详解简易邮件实现方法
邮件是信息化时代不可缺少的交流方式之一,那我们如何去实现用自己写的程序发送邮件呢?想必大家都对JavaMail有一定的了解吧,它是sun公司发布的处理email的API可以发送一些生活中常用的邮件。JavaMail包中用于处理电子邮件的核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。
首先我们介绍如何去实现发一封带有邮件并切包含图片的邮件(基于JavaMail开发出类似于Microsoft?Outlook的应用程序,我们要把我们自己写的邮件文件在Outlook中打开)。再介绍之前,我们先去了解一下如何在一封邮件中实现及带有附件又带有图片,并且如何去设置它们的关系:

此图来自-----redarmy_chen
下面是具体实现代码:package cn.csdn.javamail;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.Message;import javax.mail.MessagingException;import javax.mail.Session;import javax.mail.internet.AddressException;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 MailImageAndAttch {/** * @param args * @throws MessagingException * @throws AddressException * @throws IOException * @throws FileNotFoundException */public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {// TODO Auto-generated method stub//创建邮件 MimeMessage message=new MimeMessage(Session.getInstance(System.getProperties()));//设置邮件 message.setFrom(new InternetAddress("Longmanfei@qq.com"));message.setRecipient(Message.RecipientType.TO, new InternetAddress("longmanfei@qq.com"));message.setSubject("复杂邮箱发送");//设置邮件属性MimeBodyPart text=new MimeBodyPart();text.setContent("发送邮件内容<br/><img src='cid:1.jpg'><br/>", "text/html;charset=utf-8");//设置图片MimeBodyPart image=new MimeBodyPart();image.setDataHandler(new DataHandler(new FileDataSource("src\\1.jpg")));image.setContentID("1.jpg");//设置图片和正文的关系MimeMultipart mm=new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related");//设置附件MimeBodyPart accth=new MimeBodyPart();DataHandler dh= new DataHandler(new FileDataSource("src\\大笑.mp3"));accth.setDataHandler(dh);String name=dh.getName(); //设置读取附件名称是不出现乱码accth.setFileName(MimeUtility.encodeText(name));//设置关系图片和bodypart关系MimeBodyPart part=new MimeBodyPart();part.setContent(mm);//设置关系MimeMultipart mM= new MimeMultipart();mM.addBodyPart(part);mM.addBodyPart(accth);mM.setSubType("mixed");//把MIME消息设置到message中message.setContent(mM);message.saveChanges(); message.writeTo(new FileOutputStream("d:\\66.eml"));}}下面是以另一种方式实现的简单发送邮件的方法: package com.sfc.model; import org.apache.commons.mail.*; public class SendMail { public String to;/* 收信人地址 */ public String toName;//收信人姓名 public String subject;/* 主题 */ public String body; public boolean sMail(String faname,String to,String toName,String subject,String body){ boolean flag=false; HtmlEmail email=new HtmlEmail(); try { email.setHostName("smtp.163.com");//设置发信的smtp服务器 email.addTo(to, toName);//设置收件人帐号和收件人 email.setFrom("Longmanfei@163.com",faname);//设置发信的邮件帐号和发信人 email.setSubject(subject);//设置邮件主题 email.setAuthentication("Longmanfei@163.com","123123");//如果smtp服务器需要认证的话,在这里设置帐号、密码 email.setCharset("utf-8"); //System.out.println("发送成功1"); email.setHtmlMsg("<B>您可以将联系方式公布</B><br>"+"<font color='#800000'>"+body+"</font><br>"+"<B><font color='red'>本消息来自58FF同城,有事您说话</font></B>");//设置邮件正文和字符编码 email.send(); flag=true; } catch (EmailException e) { //flag=false; System.out.println("发送失败"); e.printStackTrace(); } return flag; }}?????? 这个相对上面那种要简单的多,至于如何发送带附件的邮件,我们可以登录官方网站去产看相应的实现方法。第二中实现方式当不是用java项目运行的时候,而是通过相应的web项目传值,去发送时有课能会报错,那是因为没有导入相应的包,当遇到错误时可以去百度查找并去官网下相应的jar包文件。