javaemail邮件收发 连接失败

断点 2011-05-28 10:47:09

package com.isoftstone.dao;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;


/**
* 测试邮件收件功能
* @author Administrator
*
*/
public class ReciveOneMail {
private MimeMessage mimeMessage = null;
private StringBuffer bodyText = new StringBuffer();// 存放邮件内容
private String dateformat = "yy-MM-dd HH:mm"; // 默认的日前显示格式

public ReciveOneMail(MimeMessage mimeMessage){
this.mimeMessage = mimeMessage;
}

public void setMimeMessage(MimeMessage mimeMessage){
this.mimeMessage = mimeMessage;
}

// 获取发件人和地址
public String getFrom() throws MessagingException{
InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom();
String from = address[0].getAddress();
if(null == from){
from = "";
}
String personal = address[0].getPersonal();
if(null == personal){
personal = "";
}
String fromaddr = personal+"<"+from+">";
return fromaddr;
}
// 获取邮件主题
public String getSubject(){
String subject = "";
try {
subject = MimeUtility.decodeText(mimeMessage.getSubject());
if(null == subject){
subject = "";
}
} catch (Exception e) {
e.printStackTrace();
}
return subject;
}
// 获取邮件发送日期
public String getSendDate() throws MessagingException{
Date sendDate = mimeMessage.getSentDate();
SimpleDateFormat format = new SimpleDateFormat(dateformat);
return format.format(sendDate);
}
// 获取邮件正文内容
public String getBodyText(){
return bodyText.toString();
}
// 获得邮件message Id
public String getMessageId() throws MessagingException{
return mimeMessage.getMessageID();
}
// 设置日期显示格式
public void setDateFormat(String format){
this.dateformat = format;
}
//解析邮件 把邮件内容保存到Stringbudder中
public void getMailContent(Part part) throws MessagingException, IOException{
String contentType = part.getContentType();// 获取邮件内容类型
int nameIndex = contentType.indexOf("name");// 得到邮件类型名称
boolean conname = false;
if(nameIndex != -1){
conname = true;
}
System.out.println("内容类型:"+contentType);

if(part.isMimeType("text/plain") && !conname){
bodyText.append((String) part.getContent());
}else if(part.isMimeType("text/html") && !conname){
bodyText.append((String) part.getContent());
}else if(part.isMimeType("multipart/*") && !conname){
Multipart multipart = (Multipart)part.getContent();
int counts = multipart.getCount();
for (int i = 0; i < counts; i++) {
getMailContent(multipart.getBodyPart(i));
}
}else if(part.isMimeType("message/rfc822")){
getMailContent((Part)part.getContent());
}
}
// 测试收件功能
public static void main(String[] args) throws Exception {
Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.10.40.15.45");
props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props,null);
URLName urln = new URLName("pop3","pop3.10.40.15.45",110,null,"w75004","wanggeng");
Store store = session.getStore(urln);
store.connect();
Folder folder = store.getFolder("INBOX");
Message message[] = folder.getMessages();

System.out.println("Messages's length:" +message.length);

ReciveOneMail pmm = null;

for (int i = 0; i < message.length; i++) {
System.out.println(">>>>>>>>>>>>>>>>>>开始打印>>>>>>>>>>>>>>>>>>>>>>");
pmm = new ReciveOneMail((MimeMessage)message[i]);

System.out.println("Mession:"+i+"邮件主题"+pmm.getSubject());
System.out.println("Mession:"+i+"发送时间"+pmm.getSendDate());
System.out.println("Mession:"+i+"发件人和地址"+pmm.getFrom());
pmm.setDateFormat("yy年MM月dd日 HH:mm");
System.out.println("Mession:"+i+"发送时间"+pmm.getSendDate());
System.out.println("Mession:" +i+"邮件标识ID"+pmm.getMessageId());
//获取邮件内容
pmm.getMailContent((Part)message[i]);
System.out.println("Mession:"+i+"bodycontent: \r\n"+pmm.getBodyText());
}
}
}
...全文
183 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq290500949 2011-06-24
  • 打赏
  • 举报
回复
为什么只能收到网易邮箱的邮件收不到其他邮箱的邮件了?
duqiangcise 2011-05-29
  • 打赏
  • 举报
回复
props.put("mail.smtp.auth", "true");

登录邮件服务器的用户名和密码在什么地方设置的???
鉴权类应该继承Authenticator类。

 EmailAuthenImpl auth = new EmailAuthenImpl(userName, password);
// 获得系统环境
Properties ps = System.getProperties();
// 设置登录邮件服务器的主机地址
ps.put("mail.smtp.host", host);
// 设置登录邮件服务器的主机端口
ps.put("mail.smtp.port", port);
// 设置邮件服务器的登录方式(必须通过授权)
ps.put("mail.smtp.auth", "true");
// 连接超时时间
ps.put("mail.smtp.connectiontimeout", 30 * 60 * 1000);
// IO超时时间
ps.put("mail.smtp.timeout", 30 * 60 * 1000);
session = Session.getDefaultInstance(ps, auth);
billhepeng 2011-05-28
  • 打赏
  • 举报
回复
URLName urln = new URLName("pop3","pop3.10.40.15.45",110,null,"w75004","wanggeng");

pop3.10.40.15.45
直接写个邮件ip 或者pop3.163.com 之类的

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧