当前位置: 代码迷 >> Java相关 >> [求助]如何实现服务器端的邮件群发?
  详细解决方案

[求助]如何实现服务器端的邮件群发?

热度:383   发布时间:2007-05-07 15:03:09.0
[求助]如何实现服务器端的邮件群发?
本人在做个小型邮件服务器,初学java还不是很懂,现在已经完成的部分可以实现邮件收发。
我已经用Foxmail试验过了。
我想在这基础上,实现邮件群发,希望懂的人提些建议。
可以是关于javax.mail的帮助文档,也可以是关于代码的指导说明。

谢谢了!
搜索更多相关的解决方案: 服务器  邮件  

----------------解决方案--------------------------------------------------------

多开几个线程,每个线程给不同的用户发,这不就是群发了吗!!!!


----------------解决方案--------------------------------------------------------

谢谢你的建议哦
可是能不能再详细一点说阿

我的服务器不是联网的,只能在局域网内收发。想实现的群发功能是:服务器的Admin向服务器的用户发送。


----------------解决方案--------------------------------------------------------

我知道怎么弄了,呵呵,其实服务器不连接,直接写文件就可以了。
谢谢你


----------------解决方案--------------------------------------------------------

1.邮件发送类 :
package com.taihuatalk.taihua.common.common;
/** *//**
* Author:李鹏
* CreateDate:2006-06-25 22:47:00
* Modifier:李鹏
* ModifyDate:2006-06-25 22:47:00
* Version:1.0
* Copyright(c)2006 泰华网络 沪ICP备06××××××号
* All right reserved.
*/

import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import java.util.Date;
import javax.mail.Message.RecipientType;
import javax.mail.internet.MimeMessage;
import javax.mail.Message;
import javax.mail.Session;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.MimeBodyPart;
import javax.mail.Multipart;
import javax.mail.internet.MimeMultipart;
import org.apache.log4j.Logger;
/** *//**
* 发送Email类
*/

public class SendEmail ...{
Logger logger=Logger.getLogger(this.getClass());
/** *//**
* Email发送方法
* @param toemails 需要一个字符串参数,用来设置收件人地址,如果收件人为多个,则用","隔开
* @param content 邮件内容
* @param subject 邮件主题
* @return 邮件成功发送则返回true,否则返回false
*/
public boolean sendSimpleEmail(String toemails,String content,String subject)...{
boolean result=false;
logger.info("进入发送Email类");
try ...{
//创建属性对象
Properties props = new Properties();
//设置邮件传输协议为:smtp
props.put("mail.transpost.protocol","smtp");
//设置邮件服务器地址
props.put("mail.smtp.host", "smtp.163.com");
//设置邮件验证为真
props.put("mail.smtp.auth", "true");
//设置邮件服务器端口
props.put("mail.smtp.port","25");

//调用验证类进行验证,需要参数发件人用户名和密码
logger.info("验证类实例化==============");
CheckSendEmail auth=new CheckSendEmail("lip009","lip009");

logger.info("验证通过");
//创建session对象
Session sendMailSession;
sendMailSession = Session.getInstance(props, auth);
//设置输出调试信息
sendMailSession.setDebug(true);

logger.info("开始创建消息对象");
//创建信息对象
Message newMessage = new MimeMessage(sendMailSession);

//输入发送信息
//设置发信人地址
logger.info("设置发信人地址");
newMessage.setFrom(new InternetAddress("link2friend@163.com"));

//设置收信人地址,只支持单用户发送
// newMessage.setRecipient(Message.RecipientType.TO,new InternetAddress("lip0091981@163.com"));

//设置收信人地址,可以支持多用户发送
logger.info("设置收信人地址");
newMessage.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(toemails));
//附件
//==============================================================================
//msgText是信件的正文,共有两行
// String msgText = content;

//msgAttachment是一段字符串作为附件内容
// String msgAttachment = "This is an attachment string!";

// MimeBodyPart mbp1 = new MimeBodyPart();

// mbp1.setText(msgText); //把前面定义的msgText中的文字设定为邮件正文的内容

//创建附件部分
// MimeBodyPart mbp2 = new MimeBodyPart();

//使用setText(text, charset)来加入附件
// mbp2.setText(msgAttachment, "gb2312");

//创建Multipart
// Multipart mp = new MimeMultipart();

// mp.addBodyPart(mbp1);
// mp.addBodyPart(mbp2);

// 添加 Multipart到Message中
// newMessage.setContent(mp);
//==============================================================================
//设置信件文本格式(当设置了附件,这里就不能有)
logger.info("设置格式");
newMessage.setContent("SendMail", "text/html");

//设置信件主题
logger.info("设置主题");
newMessage.setSubject(subject);

//设置信件发送日期
logger.info("设置发送日期");
newMessage.setSentDate(new Date());

//设置信件正文(当设置了附件,这里就不能有)
newMessage.setText(content);
logger.info("设置完消息");
//创建对象
Transport transport;
transport = sendMailSession.getTransport("smtp");
logger.info("将要发送");

//发送
result=true;
transport.send(newMessage);//此处总是抛出异常,让人很是郁闷,但是邮件却发送成功!
logger.info("恭喜你!您的邮件已经成功发送!");
}
catch (MessagingException ex) ...{
// ex.printStackTrace();
}
return result;
}
}

2.邮件帐号密码验证类:

package com.taihuatalk.taihua.common.common;
/** *//**
* Author:李鹏
* CreateDate:2006-06-25 22:47:00
* Modifier:李鹏
* ModifyDate:2006-06-25 22:47:00
* Version:1.0
* Copyright(c)2006 泰华网络 沪ICP备06××××××号
* All right reserved.
*/

import javax.mail.*;

/** *//**
* Email发送帐号密码验证类
*/

public class CheckSendEmail extends Authenticator...{
private String m_username = null;
private String m_userpass = null;
public void setUsername(String username)
...{
m_username = username;
}
public void setUserpass(String userpass)
...{
m_userpass = userpass;
}
public CheckSendEmail(String username, String userpass)
...{
super();
setUsername(username);
setUserpass(userpass);
}
public PasswordAuthentication getPasswordAuthentication()
...{
return new PasswordAuthentication(m_username,m_userpass);
}
}

----------------解决方案--------------------------------------------------------
谢谢楼上的回复,很高兴在这里认识对java有兴趣或者有研究的人。
我也找到了几个关于jmail的代码,可是都不是很好懂,看起来乱乱的。

楼上的代码行文规则挺好。
----------------解决方案--------------------------------------------------------
我已经说是我转的了...不过这重代码网上找找就行了,不会也没什么大不了的,用的时候知道用什么,一查能搞定就是好样的,我也是前几天觉得要用了,才学学这个api的...
----------------解决方案--------------------------------------------------------
  相关解决方案