导航:首页 > 编程语言 > javaeml

javaeml

发布时间:2022-10-11 00:26:18

‘壹’ 用java写一个程序读取c:下所有EML形式文件

public static void main(String[] args) {

File f = new File("c:/");
File[] fArray = f.listFiles();
for(int i=0; i<fArray.length; i++) {
if(fArray[i].getName().matches("[\\w\\s.]*.EML$")) {
System.out.println(fArray[i].getName());
}
}

}

‘贰’ javamail解析eml邮件使用getContent()方法获取邮件正文内容,繁体字(台湾)是乱码,简体显示正常

按BIG-5解码成utf-8
~
~
~
~

‘叁’ 怎么用java生成一个.eml文件

.eml文件是邮件文件,使用javamail发送邮件,在发送邮件的时候,将邮件保存在本地即可得到.eml文件

‘肆’ java 解析 eml的源代码

//从EML文件得到MimeMessage对象
MimeMessagemessage=newMimeMessage(session,newFileInputStream(emlFile));

(Messagemessage)throwsException{
returnMimeUtility.decodeText(message.getSubject());
}

(Messagemessage)throwsException{
StringemailSender=null;
Address[]addresses=message.getFrom();
if(addresses==null||addresses.length<1){
("该邮件没有发件人");
}

//获得发件人
InternetAddressaddress=(InternetAddress)addresses[0];
StringsenderName=address.getPersonal();
if(senderName!=null){
senderName=MimeUtility.decodeText(senderName);
emailSender=senderName+"<"+address.getAddress()+">";
}else{
senderName=address.getAddress();
}
returnemailSender;
}

(Messagemessage,Message.RecipientTyperecipientType)throwsException{
StringBuilderbuilder=newStringBuilder();

Address[]addresses=null;
if(recipientType==null){
addresses=message.getAllRecipients();
}else{
addresses=message.getRecipients(recipientType);
}

if(addresses==null||addresses.length<1){
("该邮件没有收件人");
}

for(Addressaddress:addresses){
InternetAddressiAddress=(InternetAddress)address;
builder.append(iAddress.toUnicodeString()).append(",");
}

returnbuilder.deleteCharAt(builder.length()-1).toString();
}

(Messagemessage,Stringpattern)throwsException{
StringsendDateString=null;

if(pattern==null||"".equals(pattern.trim())){
pattern="yyyy年MM月dd日EHH:mm";
}

DatesendDate=message.getSentDate();
sendDateString=newSimpleDateFormat(pattern).format(sendDate);

returnsendDateString;
}

(Partpart)throwsException{
booleanflag=false;
if(part!=null){
if(part.isMimeType("multipart/*")){
MimeMultipartmp=(MimeMultipart)part.getContent();
for(inti=0;i<mp.getCount();i++){
BodyPartbodyPart=mp.getBodyPart(i);
Stringdisposition=bodyPart.getDisposition();
if(disposition!=null&&(Part.ATTACHMENT.equalsIgnoreCase(disposition)
||Part.INLINE.equalsIgnoreCase(disposition))){
flag=true;
}elseif(bodyPart.isMimeType("multipart/*")){
flag=containsAttachment(bodyPart);
}else{
StringcontentType=bodyPart.getContentType();
if(contentType.indexOf("application")!=-1){
flag=true;
}

if(contentType.indexOf("name")!=-1){
flag=true;
}
}
if(flag)
break;
}
}elseif(part.isMimeType("message/rfc822")){
flag=containsAttachment((Part)part.getContent());
}
}

returnflag;
}

publicstaticbooleanisSeen(Messagemessage)throwsException{
if(message==null){
thrownewMessagingException("Messageisempty");
}
returnmessage.getFlags().contains(Flags.Flag.SEEN);
}

(Messagemessage)throwsException{
if(message==null){
thrownewMessagingException("Messageisempty");
}

booleanreplaySign=false;
String[]headers=message.getHeader("Disposition-Notification-To");
if(headers!=null&&headers.length>0){
replaySign=true;
}

returnreplaySign;
}

(Messagemessage)throwsException{
if(message==null){
thrownewMessagingException("Messageisempty");
}

Stringpriority="普通";

String[]headers=message.getHeader("X-Priority");
if(headers!=null&&headers.length>0){
StringmailPriority=headers[0];
if(mailPriority.indexOf("1")!=-1||mailPriority.indexOf("High")!=-1){
priority="紧急";
}elseif(mailPriority.indexOf("5")!=-1||mailPriority.indexOf("Low")!=-1){
priority="低";
}else{
priority="普通";//3或者Normal;
}

}

returnpriority;
}

(Partpart,StringBuildercontent)throwsException{
if(part==null){
thrownewMessagingException("Messagecontentisempty");
}
=part.getContentType().indexOf("name")>0;
if(part.isMimeType("text/*")&&containsTextInAttachment){
content.append(part.getContent().toString());
}elseif(part.isMimeType("message/rfc822")){
getMailTextContent((Part)part.getContent(),content);
}elseif(part.isMimeType("multipart/*")){
Multipartmp=(Multipart)part.getContent();
for(inti=0;i<mp.getCount();i++){
BodyPartbodyPart=mp.getBodyPart(i);
getMailTextContent(bodyPart,content);
}
}elseif(part.isMimeType("image/*")){
//TODOpart.getInputStream()获得输入流然后输出到指定的目录
}else{
//TODO其它类型的contentType,未做处理,直接输出
content.append(part.getContent().toString());
}
}

(Partpart,StringdestDir)throwsException{
if(part==null){
thrownewMessagingException("partisempty");
}

//复杂的邮件包含多个邮件体
if(part.isMimeType("multipart/*")){
Multipartmp=(Multipart)part.getContent();
//遍历每一个邮件体
for(inti=0;i<mp.getCount();i++){
BodyPartbodyPart=mp.getBodyPart(i);
//bodyPart也可能有多个邮件体组成
Stringdisposition=bodyPart.getDisposition();
if(disposition==null&&(Part.ATTACHMENT.equalsIgnoreCase(disposition)
||Part.INLINE.equalsIgnoreCase(disposition))){
InputStreamin=bodyPart.getInputStream();
saveFile(in,destDir,decodeText(bodyPart.getFileName()));
}elseif(bodyPart.isMimeType("multipart/*")){
saveAttachment(bodyPart,destDir);
}else{
StringcontentType=bodyPart.getContentType();
if(contentType.indexOf("name")!=-1||contentType.indexOf("application")!=-1){
saveFile(bodyPart.getInputStream(),destDir,decodeText(bodyPart.getFileName()));
}
}
}
}elseif(part.isMimeType("message/rfc822")){
saveAttachment((Part)part.getContent(),destDir);
}
}

publicstaticvoidsaveFile(InputStreamin,StringdestDir,StringfileName)throwsException{

FileOutputStreamout=newFileOutputStream(newFile(destDir+fileName));

byte[]buffer=newbyte[1024];
intlength=0;
while((length=in.read(buffer))!=-1){
out.write(buffer,0,length);
}

out.close();
in.close();
}

publicstaticStringdecodeText(StringencodedText)throwsException{
if(encodedText==null||"".equals(encodedText.trim())){
return"";
}else{
returnMimeUtility.decodeText(encodedText);
}
}

‘伍’ JAVA 读 EML类型文件 结果是乱码 怎么解决

EML 你用二进制编辑器打开看看,是不是也是乱码!呵呵!
这个应该是编码过的,一般是Base64或者QP

‘陆’ 用JAVA写一个程序每隔一秒扫描c:\Mailboxes\in下所有EML形式文件

public static void main(String[] args) {
// TODO Auto-generated method stub

int j = 0;
while(j<5) {
File f = new File("c:/Mailboxes/in/");
File[] fArray = f.listFiles();
for(int i=0; i<fArray.length; i++) {
if(fArray[i].getName().matches("[\\w]*.EML$")) {
System.out.println(fArray[i].getName());
try {
FileInputStream is = new FileInputStream(fArray[i]);
byte[] b = new byte[(int)fArray[i].length()];
is.read(b);
FileOutputStream os = new FileOutputStream("c:/mail/" + fArray[i].getName());
os.write(b);
os.close();
is.close();
fArray[i].delete();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
j++;
}
}

‘柒’ java生成eml时为什么没有内容显示,但收件人、抄送、时间、标题都显示出来了

是不是写入的时候没有flush

阅读全文

与javaeml相关的资料

热点内容
带动程序员技术氛围的活动有哪些 浏览:551
华为捐赠源码 浏览:591
ccs编译程序一直弹debug 浏览:47
安卓手机如何调白图片 浏览:355
什么牌子的安卓平板最好用 浏览:172
keil编译显示目标没有建立 浏览:793
安卓收银机如何安装打印机驱动 浏览:820
电动车什么app上买 浏览:531
墨西哥pdf 浏览:712
python图形界面编程 浏览:958
暂停加密服务 浏览:278
易语言编程系统下载 浏览:55
linux创建数据库命令 浏览:927
佛系程序员的道路 浏览:409
安卓手机怎么玩天天麻将 浏览:218
程序员高血脂 浏览:265
基于单片机的盲人探路器 浏览:648
少女心贴图app哪个好 浏览:528
企业员工系统源码 浏览:755
java第三方jar 浏览:274