用JavaMail写发送邮件程序
参加开发过各种各样的Web应用,经常会遇到Web应用需要嵌入邮件功能。例如,如果是EC应用的话,香港虚拟主机,顾客下单后会收到下单确认邮件,而商品提供者会收到有新订单需要处理的邮件,这样商品提供者就不必定期的访问自己的网站或数据库也能够处理订单,香港服务器,而顾客也不必记下下单时填写的内容。或者还有,有新品上市时,通过邮件给希望收到最新信息的老顾客发送商品介绍和各种促销活动等。
一般来说,通过Pull型浏览器(能自动收集信息)和Push型邮件系统(信息提供者积极提供信息)的协同,可以给用户带来更好的用户体验,对网站经营者也可以提供非常有利的解决方案。
在本文中,就是要介绍能够简单实现这种邮件系统的Java类库–JavaMail。利用JavaMail,不用考虑SMTP这种底层的通信实现,只要设定相关参数就可实现发送邮件。
在这里,只是先用固定文本信息来尝试,当然你可以编辑必要的参数,从数据库获取数据等,来实现动态的发送邮件功能。
下面通过具体代码来了解。
1. 安装JavaMail类库
要利用JavaMail类库,除了JavaMail自身,还需要JAF(Java Activation Framework),Java6以后的版本不需要JAF。可以从下面的地址获取这些。
下载后解压,将lib下的类库添加到你的Classpath。
2. Java程序
MailTransfer.java
1 import java.io.UnsupportedEncodingException; 2 import java.util.Properties; javax.mail.Message; 5 import javax.mail.MessagingException; 6 import javax.mail.Session; 7 import javax.mail.Transport; 8 import javax.mail.internet.InternetAddress; 9 import javax.mail.internet.MimeMessage; MailTransfer { main(String[] args) {14Properties objPrp=new Properties();objPrp.put(“mail.host”,”smtp.xxxxx.ne.jp”); // HostSession session=Session.getDefaultInstance(objPrp,null);MimeMessage objMsg=new MimeMessage(session);21try {objMsg.setRecipients(Message.RecipientType.TO,”xxxxxx@hotmail.com”);InternetAddress objFrm=new InternetAddress(“xxxxxx@gmail.com”,”E.Kou”);26 27 objMsg.setFrom(objFrm);objMsg.setSubject(“Mail Test”,”utf-8″);objMsg.setText(“Hello”,”utf-8″);Transport.send(objMsg); 36} catch (UnsupportedEncodingException e) {37 e.printStackTrace();38} catch (MessagingException e) {39 e.printStackTrace();40 } 41 }42 }
这个例子是从gmail向hotmail发送一封名为Mail Test的邮件。
3. 需要注意的地方
①发送中文邮件时要注意编码
这里用的是utf-8
②mail.host和mail.smtp.host都要指定
因为Java会先识别mail.smtp.host,所以只指定mail.smtp.host也可以。但是Message-ID是利用mail.host生成的,香港服务器,所以如果不指定mail.host,可能会影响Message-ID的生成。
posted on
无论才能知识多么卓着,如果缺乏热情,则无异纸上画饼充饥,无补于事。