一、单发邮件、带抄送的示例:
1、首先定义发送邮件接口
package com.saien.sca.fss.mail;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import org.apache.tuscany.sca.core.factory.ObjectFactory;
import org.osoa.sca.annotations.Remotable;
@Remotable
@WebService
@XmlSeeAlso({ObjectFactory.class})
public interface SendMail {
@WebMethod(action = "http://test.tuscany.webService")
@ResponseWrapper(className = "com.saien.sca.fss.mail.SendMailResponse", localName = "sendMailResponse", targetNamespace = "http://test.tuscany.webService")
@RequestWrapper(className = "com.saien.sca.fss.mail.SendMail", localName = "sendMail", targetNamespace = "http://test.tuscany.webService")
public String sendMail(String business_id,String recipients,String mailcc, String subject, String content);
}
2、实现类
/**
*
*/
package com.saien.sca.fss.mail;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import org.apache.commons.mail.SimpleEmail;
import org.osoa.sca.annotations.Service;
/**
* @author
*
*/
@Service(SendMail.class)
public class SendMailImp implements SendMail {
static Connection conn;
static Statement st;
public static String recipient;
public static String mailc = "";
public static String sub;
public static String cont;
public static int result;
public static String business;
/*
* 发送邮件方法实现,输入参数依次为:业务系统名称、收件人邮箱地址、抄送人邮箱地址、邮件主题、邮件内容,
* 返回值为成功或失败
* */
@WebMethod(action = "http://test.tuscany.webService")
@ResponseWrapper(className = "com.saien.sca.fss.mail.SendMailResponse", localName = "sendMailResponse", targetNamespace = "http://test.tuscany.webService")
@RequestWrapper(className = "com.saien.sca.fss.mail.SendMail", localName = "sendMail", targetNamespace = "http://test.tuscany.webService")
public String sendMail(String business_id,String recipients,String mailcc,String subject, String content) {
// TODO Auto-generated method stub
// conn = getConnection();
recipient = recipients;
if(mailcc!=null && !"".equals(mailcc)){
mailc = mailcc;
}
// mailcc = null;
sub = subject;
cont = content;
business = business_id;
SimpleEmail mail = new SimpleEmail();
// final String smtpHostName = "smtp." + username.split("@")[1];
mail.setHostName("smtp.sina.com");
mail.setAuthentication("用户名", "密码"); //用到的163、新浪、QQ邮箱的账户、密码
mail.setCharset("utf-8");
try{
mail.setFrom("用户名");
mail.addTo(recipient);
if(mailc.trim().length()>0){
mail.addCc(mailc);
}
// if(!recipients.matches("\\b(^['_A-Za-z0-9-]+(\\.['_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\\.[A-Za-z0-9-]+)*((\\.[A-Za-z0-9]{2,})|(\\.[A-Za-z0-9]{2,}\\.[A-Za-z0-9]{2,}))$)\\b")){
// System.out.println("邮箱格式不正确");
// }else{
// System.out.println("");
// }
mail.setSubject(subject);
mail.setMsg(content);
mail.send();
result =1;
insert();
}catch(Exception e){
e.printStackTrace();
result = 0;
insert();
}
if(result == 1){
return "成功";
}else{
return "失败";
}
}
/*发送邮件的数据添加到数据库*/
public static void insert(){
conn = getConnection();
List<String> ls = new ArrayList<String>();
ls.add(recipient);
ls.add(mailc);
String emails="";
for(String s : ls){
System.out.println(s);
emails = emails + s+";";
}
System.out.println(emails);
try{
String sql = "INSERT INTO fss_mail(business_id,recmailadr,mailsub,maildetail,sendtime,mailstate) "+
"VALUES ('"+business+"','"+ emails + "','"+ sub +"','"+ cont + "', NOW() , "+ result +")";
st = (Statement)conn.createStatement();
int count = st.executeUpdate(sql);
System.out.print("向fss_mail表中插入" + count + "条数据");
conn.close();
}catch(Exception e){
System.out.print("插入数据失败"+e.getMessage());
}
}
/*获取数据库连接 */
public static Connection getConnection() {
// TODO Auto-generated method stub
Connection con = null;
try{
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
// con = DriverManager.getConnection("jdbc:mysql://192.168.0.198:3306/bip_db", "root", "root");//创建数据库连接
con = DriverManager.getConnection("jdbc:mysql://192.168.7.102:3306/bip_db", "admin", "admin");//创建数据库连接
// con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bip_db", "admin", "admin");//创建数据库连接
}catch(Exception e){
System.out.print("数据库连接失败" + e.getMessage());
}
return con; //返回所建立的数据库连接
}
}
二、群发、群抄送的实现
1、接口
package com.saien.sca.fss.mail;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import org.apache.tuscany.sca.core.factory.ObjectFactory;
import org.osoa.sca.annotations.Remotable;
@Remotable
@WebService
@XmlSeeAlso({ObjectFactory.class})
public interface SendMail {
@WebMethod(action = "http://test.tuscany.webService")
@ResponseWrapper(className = "com.saien.sca.fss.mail.SendMailResponse", localName = "sendMailResponse", targetNamespace = "http://test.tuscany.webService")
@RequestWrapper(className = "com.saien.sca.fss.mail.SendMail", localName = "sendMail", targetNamespace = "http://test.tuscany.webService")
public String sendMail(String business_id,List<String> recipients, List<String> mailccs,String subject, String content);
}
2、实现
/**
*
*/
package com.saien.sca.fss.mail;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebMethod;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
import org.apache.commons.mail.SimpleEmail;
import org.osoa.sca.annotations.Service;
/**
* @author wangkun
*
*/
@Service(SendMail.class)
public class SendMailImp implements SendMail {
static Connection conn;
static Statement st;
public static List<String> recipient;
public static List<String> mailcc = null;
public static String sub;
public static String cont;
public static int result;
public static String business;
// mailccs = null;
/*
* 群发送邮件方法实现,输入参数依次为:业务系统名称、收件人邮箱地址、抄送人邮箱地址、邮件主题、邮件内容,
* 返回值为成功或失败
* */
@WebMethod(action = "http://test.tuscany.webService")
@ResponseWrapper(className = "com.saien.sca.fss.mail.SendMailResponse", localName = "sendMailResponse", targetNamespace = "http://test.tuscany.webService")
@RequestWrapper(className = "com.saien.sca.fss.mail.SendMail", localName = "sendMail", targetNamespace = "http://test.tuscany.webService")
public String sendMail(String business_id,List<String> recipients,List<String> mailccs, String subject, String content) {
recipient = recipients;
mailcc = mailccs;
// mailccs = null;
sub = subject;
cont = content;
business = business_id;
result = 0;
int reci = recipient.size();
int mc = mailcc.size();
System.out.println(mc);
SimpleEmail mail = new SimpleEmail();
// final String smtpHostName = "smtp." + username.split("@")[1];;
mail.setHostName("smtp.sina.com"); //邮件服务器
// mail.setHostName(smtpHostName);
mail.setAuthentication("用户名", "密码"); //发件人邮箱地址、密码
// mail.setAuthentication(username, pwd);
mail.setCharset("utf-8");
try{
mail.setFrom("用户名");
// 群发 设置收件人邮箱地址(多个)
for (int i = 0; i < reci; i++) {
mail.addTo(recipient.get(i).split(";")); //对方邮箱地址用分号分隔
// mail.addTo(recipient.get(i));
System.out.println("Hello");
}
//设置抄送邮箱地址(多个)
if(mailcc!=null && mc > 0){
for(int j = 0; j < mc; j++){
if(mailcc.get(j).trim().length()>0){
mail.addCc(mailcc.get(j).split(";")); //抄送邮箱地址用分号分开
// mail.addCc(mailcc.get(j));
System.out.print("抄送!");
}
}
}
mail.setSubject(subject); //邮件主题
mail.setMsg(content); //邮件内容
// mail.addCc();
mail.send(); //发送邮件
result = 1;
insert();
}catch(Exception e){
e.printStackTrace();
result = 0;
insert();
}
if(result == 1){
return "成功";
}else{
return "失败";
}
}
/*发送邮件的数据添加到数据库*/
public static void insert(){
conn = getConnection();
List<String> ls = new ArrayList<String>();
ls.addAll(recipient);
List<String> lt = new ArrayList<String>();
// mailcc = null;
lt.addAll(mailcc);
ls.addAll(lt);
System.out.println(ls);
String emails="";
for(String s : ls){
System.out.println(s);
emails = emails + s+";";
}
System.out.println(emails);
try{
String sql = "INSERT INTO fss_mail(business_id,recmailadr,mailsub,maildetail,sendtime,mailstate) "+
"VALUES ('"+business+"','"+ emails + "','"+ sub +"','"+ cont + "', NOW(), "+ result +")";
st = (Statement)conn.createStatement();
int count = st.executeUpdate(sql);
System.out.print("向fss_mail表中插入" + count + "条数据");
conn.close();
}catch(Exception e){
System.out.print("插入数据失败"+e.getMessage());
}
}
/*获取数据库连接 */
public static Connection getConnection() {
Connection con = null;
try{
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
// con = DriverManager.getConnection("jdbc:mysql://192.168.0.198:3306/bip_db", "root", "root");//创建数据库连接
con = DriverManager.getConnection("jdbc:mysql://192.168.7.102:3306/bip_db", "admin", "admin");//创建数据库连接
}catch(Exception e){
System.out.print("数据库连接失败" + e.getMessage());
}
return con; //返回所建立的数据库连接
}
}
其他的一些SCA配置文件不是很复杂,就没写!