JavaMail创建和发送邮件
2016-03-15 18:43
375 查看
JavaMail API提供一些邮件系统模型类。
JavaMail API Packages
javax.mail包定义邮件系统的常用类。
javax.mail.interner包定义基于Internet标准的特定的邮件系统类。例如MIME,SMTP,POP3和IMAP
javaMail API包括javax.mail包和子包。
下面的代码可以发送一个纯文本消息
通常使用
下面代码为发送一个普通邮件和发送一个含附件的邮件。
源码来自:https://github.com/yangnn/javaMail
Package | Description |
---|---|
javax.mail | The JavaMailTM API provides classes that model a mail system. |
javax.mail.event | Listeners and events for the JavaMail API. |
javax.mail.internet | Classes specific to Internet mail systems. |
javax.mail.search | Message search terms for the JavaMail API. |
javax.mail.util | JavaMail API utility classes. |
javax.mail.interner包定义基于Internet标准的特定的邮件系统类。例如MIME,SMTP,POP3和IMAP
javaMail API包括javax.mail包和子包。
下面的代码可以发送一个纯文本消息
Properties props = new Properties(); props.put("mail.smtp.host", "my-mail-server"); Session session = Session.getInstance(props, null); try { MimeMessage msg = new MimeMessage(session); msg.setFrom("me@example.com"); msg.setRecipients(Message.RecipientType.TO, "you@example.com"); msg.setSubject("JavaMail hello world example"); msg.setSentDate(new Date()); msg.setText("Hello, world!\n"); Transport.send(msg, "me@example.com", "my-password"); } catch (MessagingException mex) { System.out.println("send failed, exception: " + mex); }
Properties(属性)
JavaMail API 支持一下属性,可以设置在Session对象或Properties对象用于创建Session对象。属性通常设置为字符串类型;下表展示属性及其描述。通常使用
props.put("mail.debug", "true");为mail.debug设置属性值。
Name | Type | Description |
---|---|---|
mail.debug | boolean | The initial debug mode. Default is false. |
mail.from | String | The return email address of the current user, used by the InternetAddressmethod getLocalAddress. |
mail.mime.address.strict | boolean | The MimeMessage class uses the InternetAddressmethod parseHeaderto parse headers in messages. This property controls the strict flag passed to the parseHeadermethod. The default is true. |
mail.host | String | The default host name of the mail server for both Stores and Transports. Used if themail.protocol.hostproperty isn't set. |
mail.store.protocol | String | Specifies the default message access protocol. The Sessionmethod getStore()returns a Store object that implements this protocol. By default the first Store provider in the configuration files is returned. |
mail.transport.protocol | String | Specifies the default message transport protocol. The Sessionmethod getTransport()returns a Transport object that implements this protocol. By default the first Transport provider in the configuration files is returned. |
mail.user | String | The default user name to use when connecting to the mail server. Used if themail.protocol.userproperty isn't set. |
mail.protocol.class | String | Specifies the fully qualified class name of the provider for the specified protocol. Used in cases where more than one provider for a given protocol exists; this property can be used to specify which provider to use by default. The provider must still be listed in a configuration file. |
mail.protocol.host | String | The host name of the mail server for the specified protocol. Overrides the mail.hostproperty. |
mail.protocol.port | int | The port number of the mail server for the specified protocol. If not specified the protocol's default port number is used. |
mail.protocol.user | String | The user name to use when connecting to mail servers using the specified protocol. Overrides the mail.userproperty. |
package javaMail; import java.io.IOException; import java.util.Date; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SendMail { public static void main(String args[]){ String to = "XXX@com.cn";//收件人 String from = "XXXX@sari.ac.cn";//发件人 String password = "password";//发件人邮箱密码 String host = "smtp.XXX.cn";//服务器主机 boolean debug = true;//是否需要debug String filename = "D:\\books\\javamail.txt"; //配置发送邮件的环境属性 Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.debug", debug); //创建包含邮件服务器的网络连接信息的Session对象 //Session类定义整个应用程序所需的环境信息。 //Session对象根据这些邮件信息构建 用于邮件收发的Transport和Store对象,以及客户端创建Message对象时提供信息支持 Session session = Session.getInstance(props); try { //创建代表邮件内容的Message对象 //message对象:创建和解析邮件的核心API,它的实例对象代表一封电子邮件 Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(from)); InternetAddress[] address = {new InternetAddress(to)}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject("java mail 测试"); msg.setSentDate(new Date()); //创建Transport对象,链接服务器 //Transport是发送邮件的核心API类,它的实例对象代表了 实现某个邮件发送协议的邮件发送对象,例如SMTP协议 Transport ts = session.getTransport(); ts.connect("smtp.cstnet.cn", "OA_Feedback@sari.ac.cn", "sari112233"); //发送Message //发送简单邮件 setTextContent(msg); msg.saveChanges(); ts.sendMessage(msg, msg.getAllRecipients()); //发送添加附件的邮件 setFileAsAttachment(msg,filename); msg.saveChanges(); ts.sendMessage(msg, address); //关闭连接 ts.close(); } catch (MessagingException mex) { // Prints all nested (chained) exceptions as well mex.printStackTrace(); // How to access nested exceptions while (mex.getNextException() != null) { // Get next exception in chain Exception ex = mex.getNextException(); ex.printStackTrace(); if (!(ex instanceof MessagingException)) break; else mex = (MessagingException)ex; } }catch (IOException e) { e.printStackTrace(); } } //发送简单的,只包含文本的邮件 public static void setTextContent(Message msg) throws MessagingException{ String content = "发送简单的,只包含文本的邮件"; msg.setContent(content, "text/html;charset=UTF-8"); } //发送添加附件的邮件 public static void setFileAsAttachment(Message msg,String filename) throws MessagingException, IOException{ //MimeBodyPart表示邮件的一个MIME信息 MimeBodyPart mbp1 = new MimeBodyPart(); mbp1.setText("测试发送添加附件的邮件"); MimeBodyPart mbp2 = new MimeBodyPart(); mbp2.attachFile(filename); //Multipart类表示一个由多个MIME消息组合成的组合MIME消息 //创建Multipart,将BodyParts添加到Multipart Multipart mp = new MimeMultipart(); mp.addBodyPart(mbp1); mp.addBodyPart(mbp2); //将Multipart作为消息的内容 msg.setContent(mp); } }
源码来自:https://github.com/yangnn/javaMail
相关文章推荐
- java作业之输入n个学生的m门课程求每个学生的总分和平均分。。。
- Java - 动态代理
- java作业之输入十个学生的成绩求平均分。。。
- Java - 反射机制 2
- Eclipse控制台输出信息的控制
- spring mybatis整合读取配置文件
- MyEclipse 生成APK文件
- java作业之输出1-100只能能被3整除的前5个整数。。。
- Struts2 Hibernate Spring 整合的基本流程和步骤及其相关配置细节
- 在Java中谈尾递归--尾递归和垃圾回收的比较
- java作业源代码。。。
- 蓝桥杯2013年java—A组第七题
- Elasticsearch源码加载到eclipse调试
- Ubuntu16.04安装Eclipse EE
- java.io.Serializable浅析
- 关于[Ljava.lang.String;@1ec4536的问题
- struts2实现条件查询分页代码
- 如果把JAVA EE项目打成war包,上传到服务器!
- Java的synchronized使用
- 20145235 学号 《Java程序设计》第2周学习总结