導航:首頁 > 編程語言 > 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相關的資料

熱點內容
android平滑滾動效果 瀏覽:841
什麼是編譯器指令 瀏覽:219
微控制器邏輯命令使用什麼匯流排 瀏覽:885
程序員在學校里是學什麼的 瀏覽:601
oraclejava數據類型 瀏覽:890
程序員考注冊會計師 瀏覽:957
怎麼使用access的命令按鈕 瀏覽:899
有點錢app在哪裡下載 瀏覽:832
博途v15解壓後無法安裝 瀏覽:205
什麼是根伺服器主機 瀏覽:438
安卓手游怎麼申請退款 瀏覽:555
安卓系統如何分享網頁 瀏覽:278
ad如何編譯pcb工程 瀏覽:414
除了滴滴app哪裡還能用滴滴 瀏覽:399
截圖怎麼保存文件夾然後壓縮 瀏覽:8
幻影伺服器怎麼樣 瀏覽:28
具體哪些廣東公司招程序員 瀏覽:871
嵌入式編譯器教程 瀏覽:307
ssl數據加密傳輸 瀏覽:87
51單片機定時器方式2 瀏覽:332