一、 使用开源的Jarkata Common Email包,来实现发送邮件。(例子网上多的很,如http://www.blogjava.net/bluebear2007/archive/2008/01/25/177619.html)
另外这里意味着使用第三方Jar包,我们需要建立第三方lib工程,这个在下一篇博客里写。
二、 使用SAP NetWeaver CE自带的Email功能。
1. 配置SMTP邮件服务器地址
(1) 进入NWA控制台 选择Configuration Management -> Infrastructure -> Java SystemProperties
(2) 选中CE_Complete_Stack_production_full, Detail面板中选择Services,搜索javaMailClient,设置它的Smtp的地址为要使用的邮件服务器的地址(222.128.29.xxx)就可以了。
2. 进行代码编程:
(1) 声明javamail的Session对象
在J2EE 5环境中,可以直接声明JavaMail的Session对象
@Resource(name="mail/myMailSession")
private javax.mail.Session mailSession;
(2) 创建邮件体
邮件体由类MimeMessage实现
MimeMessage message = new MimeMessage(mailSession);
MimeMessage有以下常用方法:
setSubject – 设置邮件主题
setContent – 设置邮件正文
setRecipients – 设置收件人、抄送、暗送等信息
addForm – 设置发件人
以下是创建邮件体的代码:
MimeMessage message = new MimeMessage(mailSession); // 创建邮件
message.setSubject("xxxxx","UTF-8"); // 设置主题
message.setContent("xxx报销系统. ","text/plain;charset=UTF-8"); // 设置邮件内容,此邮件为纯文本邮件,换行符为\n
message.setRecipients(javax.mail.Message.RecipientType.TO, "xxxxx@dbic.com.cn"); // 设置收件人
InternetAddress[] to = new InternetAddress[]{new InternetAddress("xxxxx@dbic.com.cn","xxxx费用报销系统","UTF-8")}; // 设置发件人地址
message.addFrom(to); // 设置发件人
(3) 连接服务器,发送邮件体
发送邮件通过类Transport实现
代码:
Transport tr ;
tr = mailSession.getTransport("smtp");
tr.connect(); // SMTP服务器要由系统管理员在NWA中事先配置好
tr.sendMessage(message, message.getAllRecipients());
完整代码示例:
public static boolean sendEmail(String subject,String content,String sendEmail, String[] reciverEmail) throws Exception{
try {
Context ctx = new InitialContext();
javax.mail.Session mailSession = (javax.mail.Session)ctx.lookup("java:comp/env/mail/MailSession");
MimeMessage message = new MimeMessage(mailSession); // 创建邮件
//设置主题
message.setSubject(subject,"UTF-8");
//设置内容
message.setContent(content,"text/html;charset=UTF-8");
//收件人地址
for (int i = 0; i < reciverEmail.length; i++){
message.addRecipient(javax.mail.Message.RecipientType.TO,new InternetAddress(reciverEmail[i]));
}
//发件人地字
InternetAddress[] to = new InternetAddress[]{new InternetAddress(sendEmail)
message.addFrom(to);
//发件时间
message.setSentDate(new Date(System.currentTimeMillis()));
Transport tr = mailSession.getTransport("smtp"); // 这里的smtp在NWA控制台已经配置
tr.connect();
tr.sendMessage(message, message.getAllRecipients());
return true;
} catch (MessagingException e) {
logger.error("发送邮件 "+subject+"失败", e);
e.printStackTrace();
return false;
}
}