本文实例讲述了基于JavaMail API收发邮件的方法。分享给大家供大家参考。具体如下:
1.JavaMail API按其功能划分通常可分为如下三大类
(1)创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
(2)发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
(3)接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
2. Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。
3.使用JavaMail发送一封简单的邮件
创建包含邮件服务器的网络连接信息的Session对象。
创建代表邮件内容的Message对象。
创建Transport对象、连接服务器、发送Message、关闭连接。
4.实例
(1)JavaMail邮件只发送内容
public class SendMail {public static void main(String[] args) throws Exception {//属性文件Properties props=new Properties();//设置邮件的发送主机名、发送协议和是否验证props.setProperty("mail.host","smtp.sohu.com" );props.setProperty("mail.transport.protocol", "smtp");props.setProperty("mail.smtp.auth", "true");//获取发送接收邮件环境的对象Session session=Session.getInstance(props);Message message=createMessage(session);//创建发送邮件的对象Transport tsp=session.getTransport();tsp.connect("jb51", "jb51");tsp.sendMessage(message, message.getAllRecipients());tsp.close();}public static Message createMessage(Session session) throws Exception{//根据环境对象创建一份邮件MimeMessage message=new MimeMessage(session);//设置邮件属性message.setFrom(new InternetAddress("jb51@sohu.com"));message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com"));message.setSubject("hello");//创建邮件体MimeBodyPart text=new MimeBodyPart();text.setContent("你好?","text/html;charset=utf-8");//设置描述关系MimeMultipart mm=new MimeMultipart();mm.addBodyPart(text);message.setContent(mm);message.saveChanges();return message;}}
(2)JavaMail邮件发送内容和图片
public class SendImageMail {public static void main(String[] args) throws Exception {//属性文件Properties props=new Properties();//设置邮件的发送主机名、发送协议和是否验证props.setProperty("mail.host","smtp.sohu.com" );props.setProperty("mail.transport.protocol", "smtp");props.setProperty("mail.smtp.auth", "true");//获取发送接收邮件环境的对象Session session=Session.getInstance(props);Message message=createMessage(session);//创建发送邮件的对象Transport tsp=session.getTransport();tsp.connect("jb51", "jb51");tsp.sendMessage(message, message.getAllRecipients());tsp.close();}public static Message createMessage(Session session) throws Exception{MimeMessage message=new MimeMessage(session);message.setFrom(new InternetAddress("jb51@sohu.com"));message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com"));message.setSubject("图片");MimeBodyPart text=new MimeBodyPart();text.setContent("好看吗?<br/><img src='cid:xx.jpg'>","text/html;charset=utf-8");MimeBodyPart image=new MimeBodyPart();image.setDataHandler(new DataHandler(new FileDataSource("src//f.jpg")));image.setContentID("xx.jpg");MimeMultipart mm=new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related");message.setContent(mm);message.saveChanges();return message;}}
(3)JavaMail邮件发送内容、图片和附件
public class SendAttchImageMail {public static void main(String[] args) throws Exception {//属性文件Properties props=new Properties();//设置邮件的发送主机名、发送协议和是否验证props.setProperty("mail.host","smtp.sohu.com" );props.setProperty("mail.transport.protocol", "smtp");props.setProperty("mail.smtp.auth", "true");//获取发送接收邮件环境的对象Session session=Session.getInstance(props);Message message=createMessage(session);//创建发送邮件的对象Transport tsp=session.getTransport();tsp.connect("jb51", "jb51");tsp.sendMessage(message, message.getAllRecipients());tsp.close();}public static Message createMessage(Session session) throws Exception{MimeMessage message=new MimeMessage(session);message.setFrom(new InternetAddress("jb51@sohu.com"));message.setRecipient(Message.RecipientType.TO,new InternetAddress("jb51@sina.com"));message.setSubject("图片");MimeBodyPart text=new MimeBodyPart();text.setContent("好看吗?<br/><img src='cid:xx.jpg'>","text/html;charset=utf-8");MimeBodyPart image=new MimeBodyPart();image.setDataHandler(new DataHandler(new FileDataSource("src//f.jpg")));image.setContentID("xx.jpg");MimeBodyPart attch=new MimeBodyPart();DataHandler dh=new DataHandler(new FileDataSource("src//默默无 语.mp3"));attch.setDataHandler(dh);String name=dh.getName();attch.setFileName(MimeUtility.encodeText(name));MimeMultipart mm=new MimeMultipart();mm.addBodyPart(text);mm.addBodyPart(image);mm.setSubType("related");MimeBodyPart part=new MimeBodyPart();part.setContent(mm);MimeMultipart m=new MimeMultipart();m.addBodyPart(part);m.addBodyPart(attch);m.setSubType("mixed");message.setContent(m);message.saveChanges();return message;}}
注:邮箱地址必须是真实的
希望本文所述对大家的java程序设计有所帮助。
新闻热点
疑难解答