要实现一个邮件群发的功能,比如有1000个会员,同时给他们发送通知,我知道用javamail可以实现邮件发送,但比如我借用163发送,收件人用‘,’分隔,但只能发几个就不行了,请问怎么能实现大量的发送呢?是否需要自己写邮件服务器?应该如何实现呢?谢谢?
------解决方案--------------------
你可以分开发送,起几个线程一起发,每个线程发几封,多个线程就发了很多封了
给你一个代码
/*
* Send.java
*
* Created on 2006年11月27日, 上午9:36
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package lbf.email;
/**
*
* @author lbf
*/
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import javax.mail.search.*;
import javax.mail.util.*;
import javax.mail.event.*;
public class Send {
private String content,subject;//表示发送内容
private String userName,pwd;//表示发送邮箱的用户名密码
private Session s;//一个发送邮件的会话
private MimeMessage mm;//网际网络邮件协议
private List <String> to;//发往的地址
/**
* Creates a new instance of Send
*/
public Send(Properties pro,String from,String userName,String pwd,String subject,String content) {
s=Session.getInstance(pro);
s.setDebug(true);
mm=new MimeMessage(s);
to=new Vector <String> ();
this.userName=userName;
this.pwd=pwd;
this.subject=subject;
this.content=content;
try{
mm.setFrom(new InternetAddress(from));
}
catch(Exception exe){
exe.printStackTrace();
}
}
//把地址加入到要发送者的名单中
public void addAddress(String address){
to.add(address);
}
//把一大串地址加入到要发送者名单中
public void addAddress(List <String> ls){
to.addAll(ls);
}
//发送邮件
public void send()throws Exception{
mm.setSubject(subject);
mm.setText(content);
mm.setSentDate(new Date());
mm.saveChanges();
Transport t=s.getTransport( "smtp ");
t.connect(userName,pwd);
for(String s:to){
mm.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(s));
t.sendMessage(mm,mm.getAllRecipients());
}
t.close();
System.out.println( "所有信件发送成功 ");
}
public static void main(String[] args)throws Exception {
System.out.println( "开始运行! ");
Properties props=System.getProperties();
props.put( "mail.smtp.host ", "smtp.sohu.com ");
props.put( "mail.smtp.auth ", "true ");
Send s=new Send(props, "libinfeng1982@sohu.com ", "libinfeng1982 ", "密码 ", "测试的一封信 ", "这是测试的内容,有中文有英文,English ");
s.addAddress( "libinfeng1982@sohu.com ");
s.addAddress( "hades_lbf@hotmail.com ");
s.addAddress( "hades_lbf@163.com ");
s.addAddress( "24325142@qq.com ");
s.send();
}
}
------解决方案--------------------
拆成多封信,每10-15个人一组,发一份信
------解决方案--------------------
1000个当然不能同时一起发,发送列表长度有限制的,大概也就255个字符了。
必须拆分。
------解决方案--------------------
用Spring中的SimpleMailMessage设置收件人列表,可以实现邮件群发。
------解决方案--------------------
用线程的话就算是在服务器上跑也会很吃力!建议自动分割时间段来发送!
------解决方案--------------------