导航:首页 > 编程语言 > 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相关的资料

热点内容
单片机的功能模块 浏览:769
安卓手机如何录制视频长时间 浏览:283
安全问题app哪个好 浏览:445
压缩水会变冰吗 浏览:526
小说配音app哪个靠谱 浏览:820
编译iso 浏览:944
照片生成pdf格式 浏览:194
病历转pdf 浏览:835
云服务器配硬件 浏览:978
服务器10k什么意思 浏览:21
pdfeditor汉化 浏览:884
新科学pdf 浏览:746
现在还有c语言编译吗 浏览:675
哪里买到单片机 浏览:480
linux文件打开数量 浏览:510
编译原理中什么是l属性文法 浏览:372
硬盘加密时出现的问题 浏览:61
如何退域命令 浏览:108
看书的app哪里看 浏览:291
服务器怎么调大 浏览:4