详解简易邮件实现方法

邮件是信息化时代不可缺少的交流方式之一,那我们如何去实现用自己写的程序发送邮件呢?想必大家都对JavaMail有一定的了解吧,它是sun公司发布的处理emailAPI可以发送一些生活中常用的邮件。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("[email protected]"));
		message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
		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("[email protected]",faname);//设置发信的邮件帐号和发信人 
	   email.setSubject(subject);//设置邮件主题 
	  email.setAuthentication("[email protected]","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包文件。

你可能感兴趣的:(应用服务器,qq,生活,Microsoft,百度)