社区
Java SE
帖子详情
java mail
zhuq
2004-11-22 11:12:26
小弟求救于各位大虾,如何用java实现mail的传递,即收发mail
叩谢
...全文
78
2
打赏
收藏
java mail
小弟求救于各位大虾,如何用java实现mail的传递,即收发mail 叩谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shangqiao
2004-11-22
打赏
举报
回复
public static void send(final Mail sendMail) throws Exception {
final MailBox mailBox=sendMail.getMailFolder().getMailBox();
//发送邮件使用的服务器
String hostName = mailBox.getHostName();
//连接服务器的用户名
String userName = mailBox.getUserName();
//连接服务器的用户密码
String password = mailBox.getPassword();
//Properties env = System.getProperties();
Properties env=new Properties();
//存储发送邮件服务器的信息
env.put("mail.smtp.host", hostName);
//同时通过验证
env.put("mail.smtp.auth", "true");
//得到登陆器
AbstractAuthenticator authenticator = MailElementFactory.getInstance()
.createAuthenticator();
//根据属性新建一个邮件会话
Session session = Session.getDefaultInstance(env);
session.setDebug(false);
//创建一个消息
MimeMessage message = new MimeMessage(session);
//设定该消息的信息
//设定发件人
UserEMailAddress fromAddress = sendMail.getFromUser();
if (fromAddress != null) {
String fromUser = fromAddress.getUserName();
String fromEmail = fromAddress.getEmailAddress();
InternetAddress fromInter = new InternetAddress(fromUser, fromEmail);
message.setFrom(fromInter);
} else {
InternetAddress from=new InternetAddress("tx_1981@etang.com");
message.setFrom(from);
}
//设定发送到
Collection toUser = sendMail.getToUser();
if (toUser != null && toUser.size() > 0) {
Iterator iter = toUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.TO);
}
}
//设定抄送到
Collection copyUser = sendMail.getCopyUser();
if (copyUser != null && copyUser.size() > 0) {
Iterator iter = copyUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.CC);
}
}
//密送到
Collection copySecretUser = sendMail.getCopySecrecyUser();
if (copySecretUser != null && copySecretUser.size() > 0) {
Iterator iter = copySecretUser.iterator();
while (iter.hasNext()) {
UserEMailAddress address = (UserEMailAddress) iter.next();
addAddress(message, address, Message.RecipientType.BCC);
}
}
//设定回复地址
Collection repliesUser = sendMail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.setReplyTo((Address[]) replyAddresses
.toArray(new Address[] {}));
}
//设定需要发送收条,第二参数为回复地址,可以多个设定
if(sendMail.isReplySign()){
//设定收条地址
repliesUser = sendMail.getRepliesUser();
if (repliesUser != null && repliesUser.size() > 0) {
Iterator replyIter = repliesUser.iterator();
Collection replyAddresses = new ArrayList();
while (replyIter.hasNext()) {
UserEMailAddress reAddress = (UserEMailAddress) replyIter
.next();
String replyUserName = reAddress.getUserName();
String replyEmail = reAddress.getEmailAddress();
InternetAddress re = new InternetAddress(replyUserName,
replyEmail);
replyAddresses.add(re);
}
message.addHeader("Disposition-Notification-To","tx_1981@csm.com,tx_1982@csm.com");
}
}
//设定主题
message.setSubject(sendMail.getSubject());
//设定发送时间
message.setSentDate(sendMail.getSendDate());
//创建消息体
buildMessageContent(message,sendMail);
message.saveChanges();
Transport transport=session.getTransport("smtp");
MailListener listener=new MailListener();
transport.addTransportListener(listener);
transport.addConnectionListener(listener);
transport.connect(hostName,userName,password);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
}
protected static void buildMessageContent(Message message,Mail sendMail)throws Exception {
// create and fill the first message part
MimeBodyPart textBody = new MimeBodyPart();
textBody.setText(sendMail.getBodyText());
//添加附件
Multipart multiPart=new MimeMultipart();
Collection attackments=sendMail.getMutiparts();
if(attackments!=null&&attackments.size()>0){
Iterator iter=attackments.iterator();
while(iter.hasNext()){
Attackment attackment=(Attackment)iter.next();
String fileName=attackment.getFileName();
MimeBodyPart multiBodyPart=new MimeBodyPart();
FileDataSource ds=new FileDataSource(fileName);
multiBodyPart.setDataHandler(new DataHandler(ds));
String separator=File.separator;
int index=fileName.lastIndexOf(separator);
String name=fileName.substring(index+1);
multiBodyPart.setFileName(name);
multiPart.addBodyPart(multiBodyPart);
}
}
message.setContent(multiPart);
}
shangqiao
2004-11-22
打赏
举报
回复
你下在的jmail.zip里面不是又非常多的例子吗,一般的应用足够了
java
mail
包 (activation.jar,
mail
.jar)
java
发送邮件包 解压后 把activation.jar和
mail
.jar 拷贝到 WEB-INF/lib 下就可以直接在项目中使用
Java
Mail
发送邮件时用到的Jar包
Java
Mail
用到的jar包,一共3个。下载之后要放到libs目录下,然后右击工程,选择Builder Path--》Configure Build Path,Libraries,Add JARs,选择工程目录下的libs下的jar包。
JAVA
应用案例
为了对
JAVA
基础知识进行复习并实战使用,本课程讲解了如何使用
JAVA
知识实现反射、RPC、SOCKET、文件、JSON、二维码、
JAVA
MAIL
、加密等案例。 本课程对每个知识的讲解都带有核心的知识点复习,以及详尽的案例讲解。...
java
源码包---
java
源码 大量 实例
Applet钢琴模拟程序
java
源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM...
ssm demo(学生管理系统)
使用spring + spring mvc + mybatis + easyui 架构,同时用到了
java
mail
和poi报表技术,功能比较简单,主要就是实现集成。
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章