📄 mailsender.java
字号:
package com.qq.content;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import java.util.ArrayList;
public class MailSender {
Properties props;
Session mailSession;
MimeMessage message;
Transport transport;
public int init() {
try{
props=new Properties();//也可用Properties props = System.getProperties();
//props.put("mail.smtp.host","smtp.163.com");//存储发送邮件服务器的信息
props.put("mail.smtp.host","smtp.163.com");//存储发送邮件服务器的信息
props.put("mail.smtp.auth","true");//同时通过验证
mailSession=Session.getInstance(props);//根据属性新建一个邮件会话
mailSession.setDebug(false);
message=new MimeMessage(mailSession);//由邮件会话新建一个消息对象
transport=mailSession.getTransport("smtp");
//transport.connect("smtp.qq.com",25,"mclub","someotherdays");
transport.connect("smtp.163.com",25,"rj479","840209");//以smtp方式登录邮箱
}catch (Exception e){
System.out.println("*********init() fail***********:"+e.getMessage());
return -1;
}
return 0;
}
public MailSender() {
int ret = init();
if(ret!=0)
init();
}
public void closeConnection(){
try{
transport.close();
}catch (Exception e){
System.out.println("Exception whe close:"+e.getMessage());
}
}
public int sendServicesMail(String title, String msg, String [] services, String [] addto, String sender)
{
int i=0,ret=0;
int sended = 0;
UsersManager users;
int save = 1;
ArrayList ls;
try{
users = new UsersManager();
ls = users.getUsersList(services);//取出所有订了某种服务的用户email,存入ls
}catch(Exception e)
{
System.out.println("得到邮件列表错误:"+e.getMessage());
return -2;
}
int size = ls.size();
if(size==0){
if((addto==null)||(addto.length==0))
return -1;
else
save = 0;
}
System.out.println("邮件列表长度:"+size);
if(addto!=null){
for(i=0;i<addto.length;i++){
ls.add(addto[i]);
}
}
size = ls.size();
for(i=0;i<size;i++){
String revievers = (String)ls.get(i);
ret = sendMail(title, msg, revievers);
if(ret == -2)
ret = sendMail(title, msg, revievers);
if(ret==0){
System.out.println(i+":"+revievers+" success");
sended++;
}
else if(ret==-1){
System.out.println(i+":wrong email:"+revievers);
}
else{
System.out.println(i+":"+revievers+" failed"+ ret);
}
}
System.out.println("发送列表长:"+size+", 发送成功数:"+ sended);
if(save ==1 ){
try{
title = new String( title.getBytes("GBK"), "ISO-8859-1");
title = title.replace("'","\\'");
msg = new String( msg.getBytes("GBK"), "ISO-8859-1");
msg = msg.replace("'","\\'");
users.saveServiceMail(title, msg, services, sender, sended);
} catch (Exception e){
System.out.println("添加邮件数据库失败:"+e.getMessage());
}
users.addServiceMailSentNum(services);
}
return sended;
}
public int sendAssureMail(String mailBox, String [] services)
{
Encode_md5 md5 = new Encode_md5();
String servicestr = "";
String showstr = "";
for(int i=0;i<services.length;i++){
if((services[i]!=null)&&(services[i].length()>0)){
servicestr = servicestr + services[i]+":";
showstr = showstr + serviceSet.getChineseNameByServiceName(services[i])+"、";
}
}
servicestr = servicestr.substring(0,servicestr.length()-1);
showstr = showstr.substring(0,showstr.length()-1);
String key = md5.encode(mailBox, servicestr);
String title = "请您确认您刚刚订阅的服务";
String msg = "您刚刚订阅了我们的"+showstr+"服务,如果这个订阅请求确实来自您本人,请您点击以下链接进行确认:<a href='"+db_config.url+"/assure.jsp?key="+key+"&mail="+mailBox+"&service="+servicestr+"' target=_blank>点击确认</a>,如果链接不能正常打开,请您将以下地址复制到IE的地址栏内,然后回车确认:" +
db_config.url+"/assure.jsp?key="+key+"&mail="+mailBox+"&service="+servicestr;
int ret = sendMail(title, msg, mailBox);
if(ret==-2)
ret = sendMail(title, msg, mailBox);
return ret;
}
public int sendAssureQuitMail(String mailBox, String [] services)
{
Encode_md5 md5 = new Encode_md5();
String servicestr = "";
String showstr = "";
for(int i=0;i<services.length;i++){
if((services[i]!=null)&&(services[i].length()>0)){
servicestr = servicestr + services[i]+":";
showstr = showstr + serviceSet.getChineseNameByServiceName(services[i])+"、";
}
}
servicestr = servicestr.substring(0,servicestr.length()-1);
showstr = showstr.substring(0,showstr.length()-1);
String key = md5.encode(mailBox, servicestr);//加密
String title = "请您确认您的退订操作";
String msg = "您刚刚退订了我们的"+showstr+"服务,如果这个退订请求确实来自您本人,请您点击以下链接进行确认:<a href='"+db_config.url+"/quit.jsp?key="+key+"&mail="+mailBox+"&service="+servicestr+"' target=_blank>点击确认</a>,如果链接不能正常打开,请您将以下地址复制到IE的地址栏内,然后回车确认:" +
db_config.url+"/quit.jsp?key="+key+"&mail="+mailBox+"&service="+servicestr;
int ret = sendMail(title, msg, mailBox);
if(ret==-2)
ret = sendMail(title, msg, mailBox);
return ret;
}
public int sendMail(String title, String msg, String mailBox)
{
if( (title == null )||(msg==null)||(mailBox==null)||(mailBox.indexOf("@")==-1))
return -1;
// 设置邮件
try{
InternetAddress from=new InternetAddress("rj479@163.com");
//InternetAddress from=new InternetAddress("mclub@tencent.com");
message.setFrom(from);//设置发件人
InternetAddress toList=new InternetAddress(mailBox);
message.setRecipient(Message.RecipientType.TO, toList);//设置收件人,并设置其接收类型为TO
message.setSubject(title);//设置主题
message.setText(msg);//设置信件内容
message.setContent(msg,"text/html;charset=GBK");//设置邮件为网页格式,非纯文本
message.setSentDate(new Date());//设置发信时间
// 发送邮件
message.saveChanges();//存储邮件信息
transport.sendMessage(message,message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
}
catch(Exception e)
{
System.out.println(e.getMessage());
init();
return -2;
}
return 0;
}
/**
* @param args
*/
public static void main(String[] args) {//用于执行程序时调试
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -