導航:首頁 > 編程語言 > java郵件添加附件

java郵件添加附件

發布時間:2025-08-27 03:58:12

㈠ 怎麼用java實現郵件發送

一個小例子,也可使用其他api

importjava.util.Properties;
importjavax.mail.Address;
importjavax.mail.Authenticator;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;

publicclassTest{

//test
publicstaticvoidmain(String[]args)throwsException{
sendEmail("smtp.163.com","測試","測試","!!!收件人地址!!!","!!!發件人郵箱用戶名!!!","!!!郵箱密碼!!!","發件人昵稱");
}

/**
*
*@paramsmtp
*@throwsException
*/
publicstaticvoidsendEmail(StringemailServer,Stringsubject,StringmailBody,Stringreceiver,finalStringusername,finalStringpassword,Stringnickname)throwsException{
Propertiesprops=newProperties();
props.put("mail.smtp.auth","true");
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.smtp.host",emailServer);
props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback","false");
props.setProperty("mail.smtp.port","465");
props.setProperty("mail.smtp.socketFactory.port","465");
Sessionsession=Session.getDefaultInstance(props,newAuthenticator(){
(){
(username,password);
}
});
session.setDebug(true);
MimeMessagemimeMsg=newMimeMessage(session);
Multipartmp=newMimeMultipart();

mimeMsg.setSubject(MimeUtility.encodeText(subject,"utf-8",null));

nickname=MimeUtility.encodeText(nickname,"utf-8",null);
mimeMsg.setFrom(newInternetAddress(username,nickname,"UTF-8"));

BodyPartbp=newMimeBodyPart();
bp.setContent(mailBody,"text/html;charset=utf-8");
mp.addBodyPart(bp);

mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(receiver));

mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Transporttransport=session.getTransport();
transport.connect(username,password);
Address[]allRecipients=mimeMsg.getAllRecipients();
transport.sendMessage(mimeMsg,allRecipients);
transport.close();
}
}

㈡ java 發送郵件 需要哪些jar包

使用發送郵件需要用到mail.jar和activtion.jar兩個包。

該類實現了較完整的郵件發送功能,包括以HTML格式發送,添加附件和抄送人。下面是具體的代碼

packagecn.cgw.util.mail;

importjava.util.Properties;

importjavax.activation.DataHandler;
importjavax.activation.FileDataSource;
importjavax.mail.Address;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;


publicclassMail{

privateMimeMessagemimeMsg;//MIME郵件對象
privateSessionsession;//郵件會話對象
privatePropertiesprops;//系統屬性
privatebooleanneedAuth=false;//smtp是否需要認證
//smtp認證用戶名和密碼
privateStringusername;
privateStringpassword;
privateMultipartmp;//Multipart對象,郵件內容,標題,附件等內容均添加到其中後再生成MimeMessage對象

/**
*Constructor
*@paramsmtp郵件發送伺服器
*/
publicMail(Stringsmtp){
setSmtpHost(smtp);
createMimeMessage();
}

/**
*設置郵件發送伺服器
*@paramhostNameString
*/
publicvoidsetSmtpHost(StringhostName){
System.out.println("設置系統屬性:mail.smtp.host="+hostName);
if(props==null)
props=System.getProperties();//獲得系統屬性對象
props.put("mail.smtp.host",hostName);//設置SMTP主機
}


/**
*創建MIME郵件對象
*@return
*/
()
{
try{
System.out.println("准備獲取郵件會話對象!");
session=Session.getDefaultInstance(props,null);//獲得郵件會話對象
}
catch(Exceptione){
System.err.println("獲取郵件會話對象時發生錯誤!"+e);
returnfalse;
}

System.out.println("准備創建MIME郵件對象!");
try{
mimeMsg=newMimeMessage(session);//創建MIME郵件對象
mp=newMimeMultipart();

returntrue;
}catch(Exceptione){
System.err.println("創建MIME郵件對象失敗!"+e);
returnfalse;
}
}

/**
*設置SMTP是否需要驗證
*@paramneed
*/
publicvoidsetNeedAuth(booleanneed){
System.out.println("設置smtp身份認證:mail.smtp.auth="+need);
if(props==null)props=System.getProperties();
if(need){
props.put("mail.smtp.auth","true");
}else{
props.put("mail.smtp.auth","false");
}
}

/**
*設置用戶名和密碼
*@paramname
*@parampass
*/
publicvoidsetNamePass(Stringname,Stringpass){
username=name;
password=pass;
}

/**
*設置郵件主題
*@parammailSubject
*@return
*/
publicbooleansetSubject(StringmailSubject){
System.out.println("設置郵件主題!");
try{
mimeMsg.setSubject(mailSubject);
returntrue;
}
catch(Exceptione){
System.err.println("設置郵件主題發生錯誤!");
returnfalse;
}
}

/**
*設置郵件正文
*@parammailBodyString
*/
publicbooleansetBody(StringmailBody){
try{
BodyPartbp=newMimeBodyPart();
bp.setContent(""+mailBody,"text/html;charset=GBK");
mp.addBodyPart(bp);

returntrue;
}catch(Exceptione){
System.err.println("設置郵件正文時發生錯誤!"+e);
returnfalse;
}
}
/**
*添加附件
*@paramfilenameString
*/
publicbooleanaddFileAffix(Stringfilename){

System.out.println("增加郵件附件:"+filename);
try{
BodyPartbp=newMimeBodyPart();
FileDataSourcefileds=newFileDataSource(filename);
bp.setDataHandler(newDataHandler(fileds));
bp.setFileName(fileds.getName());

mp.addBodyPart(bp);

returntrue;
}catch(Exceptione){
System.err.println("增加郵件附件:"+filename+"發生錯誤!"+e);
returnfalse;
}
}

/**
*設置發信人
*@paramfromString
*/
publicbooleansetFrom(Stringfrom){
System.out.println("設置發信人!");
try{
mimeMsg.setFrom(newInternetAddress(from));//設置發信人
returntrue;
}catch(Exceptione){
returnfalse;
}
}
/**
*設置收信人
*@paramtoString
*/
publicbooleansetTo(Stringto){
if(to==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
returntrue;
}catch(Exceptione){
returnfalse;
}
}

/**
*設置抄送人
*@paramtoString
*/
publicbooleansetCopyTo(Stringto)
{
if(to==null)returnfalse;
try{
mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(to));
returntrue;
}
catch(Exceptione)
{returnfalse;}
}

/**
*發送郵件
*/
publicbooleansendOut()
{
try{
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在發送郵件....");

SessionmailSession=Session.getInstance(props,null);
Transporttransport=mailSession.getTransport("smtp");
transport.connect((String)props.get("mail.smtp.host"),username,password);
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));
//transport.send(mimeMsg);

System.out.println("發送郵件成功!");
transport.close();

returntrue;
}catch(Exceptione){
System.err.println("郵件發送失敗!"+e);
returnfalse;
}
}

/**
*調用sendOut方法完成郵件發送
*@paramsmtp
*@paramfrom
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@returnboolean
*/
publicstaticbooleansend(Stringsmtp,Stringfrom,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

/**
*調用sendOut方法完成郵件發送,帶抄送
*@paramsmtp
*@paramfrom
*@paramto
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@returnboolean
*/
publicstaticbooleansendAndCc(Stringsmtp,Stringfrom,Stringto,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setCopyTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

/**
*調用sendOut方法完成郵件發送,帶附件
*@paramsmtp
*@paramfrom
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@paramfilename附件路徑
*@return
*/
publicstaticbooleansend(Stringsmtp,Stringfrom,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword,Stringfilename){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.addFileAffix(filename))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

/**
*調用sendOut方法完成郵件發送,帶附件和抄送
*@paramsmtp
*@paramfrom
*@paramto
*@paramto
*@paramsubject
*@paramcontent
*@paramusername
*@parampassword
*@paramfilename
*@return
*/
publicstaticbooleansendAndCc(Stringsmtp,Stringfrom,Stringto,Stringto,Stringsubject,Stringcontent,Stringusername,Stringpassword,Stringfilename){
MailtheMail=newMail(smtp);
theMail.setNeedAuth(true);//需要驗證

if(!theMail.setSubject(subject))returnfalse;
if(!theMail.setBody(content))returnfalse;
if(!theMail.addFileAffix(filename))returnfalse;
if(!theMail.setTo(to))returnfalse;
if(!theMail.setCopyTo(to))returnfalse;
if(!theMail.setFrom(from))returnfalse;
theMail.setNamePass(username,password);

if(!theMail.sendOut())returnfalse;
returntrue;
}

}

㈢ java 代碼發郵件怎麼添加附件

實現java發送郵件的過程大體有以下幾步:

准備一個properties文件,該文件中存放SMTP伺服器地址等參數。

利用properties創建一個Session對象

利用Session創建Message對象,然後設置郵件主題和正文

利用Transport對象發送郵件

需要的jar有2個:activation.jar和mail.jar發送附件,需要用到Multipart對象。

importjava.io.File;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Properties;

importjavax.activation.DataHandler;
importjavax.activation.DataSource;
importjavax.activation.FileDataSource;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
importjavax.mail.internet.MimeUtility;

{
privateMimeMessagemessage;
privateSessionsession;
privateTransporttransport;

privateStringmailHost="";
privateStringsender_username="";
privateStringsender_password="";

privatePropertiesproperties=newProperties();

/*
*初始化方法
*/
publicJavaMailWithAttachment(booleandebug){
InputStreamin=JavaMailWithAttachment.class.getResourceAsStream("MailServer.properties");
try{
properties.load(in);
this.mailHost=properties.getProperty("mail.smtp.host");
this.sender_username=properties.getProperty("mail.sender.username");
this.sender_password=properties.getProperty("mail.sender.password");
}catch(IOExceptione){
e.printStackTrace();
}

session=Session.getInstance(properties);
session.setDebug(debug);//開啟後有調試信息
message=newMimeMessage(session);
}

/**
*發送郵件
*
*@paramsubject
*郵件主題
*@paramsendHtml
*郵件內容
*@paramreceiveUser
*收件人地址
*@paramattachment
*附件
*/
publicvoiddoSendHtmlEmail(Stringsubject,StringsendHtml,StringreceiveUser,Fileattachment){
try{
//發件人
InternetAddressfrom=newInternetAddress(sender_username);
message.setFrom(from);

//收件人
InternetAddressto=newInternetAddress(receiveUser);
message.setRecipient(Message.RecipientType.TO,to);

//郵件主題
message.setSubject(subject);

//向multipart對象中添加郵件的各個部分內容,包括文本內容和附件
Multipartmultipart=newMimeMultipart();

//添加郵件正文
BodyPartcontentPart=newMimeBodyPart();
contentPart.setContent(sendHtml,"text/html;charset=UTF-8");
multipart.addBodyPart(contentPart);

//添加附件的內容
if(attachment!=null){
BodyPartattachmentBodyPart=newMimeBodyPart();
DataSourcesource=newFileDataSource(attachment);
attachmentBodyPart.setDataHandler(newDataHandler(source));

//網上流傳的解決文件名亂碼的方法,其實用MimeUtility.encodeWord就可以很方便的搞定
//這里很重要,通過下面的Base64編碼的轉換可以保證你的中文附件標題名在發送時不會變成亂碼
//sun.misc.BASE64Encoderenc=newsun.misc.BASE64Encoder();
//messageBodyPart.setFileName("=?GBK?B?"+enc.encode(attachment.getName().getBytes())+"?=");

//MimeUtility.encodeWord可以避免文件名亂碼
attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentBodyPart);
}

//將multipart對象放到message中
message.setContent(multipart);
//保存郵件
message.saveChanges();

transport=session.getTransport("smtp");
//smtp驗證,就是你用來發郵件的郵箱用戶名密碼
transport.connect(mailHost,sender_username,sender_password);
//發送
transport.sendMessage(message,message.getAllRecipients());

System.out.println("sendsuccess!");
}catch(Exceptione){
e.printStackTrace();
}finally{
if(transport!=null){
try{
transport.close();
}catch(MessagingExceptione){
e.printStackTrace();
}
}
}
}

publicstaticvoidmain(String[]args){
JavaMailWithAttachmentse=newJavaMailWithAttachment(true);
Fileaffix=newFile("c:\測試-test.txt");
se.doSendHtmlEmail("郵件主題","郵件內容","[email protected]",affix);//
}
}

㈣ 用java寫的郵件發送程序

界面自己寫一下就可以了,把相關的參數傳進去就可以了。 這個是我以前寫的。用的javamail。 有main方法,測試一下自己的郵件,應該沒問題的。希望可以幫到你。注意導入你需要的javamail.jar的包 -------------------------------------------------------------- package com.fourpane.mail; import java.util.Properties; import javax.mail.Address; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session; import javax.mail.Store; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class TestMail { public static void main(String[] args) { //TestMail.sendMail(); //TestMail.receiveMail(); TestMail.deleteMail(); } /** * send mail */ public static void sendMail() { String host = "smtp.sina.com";//郵件伺服器 String from = "[email protected]";//發件人地址 String to = "[email protected]";//接受地址(必須支持pop3協議) String userName = "xingui5624";//發件人郵件名稱 String pwd = "******";//發件人郵件密碼 Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props); session.setDebug(true); MimeMessage msg = new MimeMessage(session); try { msg.setFrom(new InternetAddress(from)); msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));//發送 msg.setSubject("我的測試...........");//郵件主題 msg.setText("測試內容。。。。。。。");//郵件內容 msg.saveChanges(); Transport transport = session.getTransport("smtp"); transport.connect(host, userName, pwd);//郵件伺服器驗證 transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO)); System.out.println("send ok..........................."); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * receive mail */ public static void receiveMail() { String host = "pop3.sina.com"; String userName = "xingui5624"; String passWord = "******"; Properties props = new Properties(); Session session = Session.getDefaultInstance(props); session.setDebug(true); try { System.out.println("receive..............................."); Store store = session.getStore("pop3"); store.connect(host, userName,passWord);//驗證 Folder folder = store.getFolder("INBOX");//取得收件文件夾 folder.open(Folder.READ_WRITE); Message msg[] = folder.getMessages(); System.out.println("郵件個數:" + msg.length); for(int i=0; i<msg.length; i++) { Message message = msg[i]; Address address[] = message.getFrom(); StringBuffer from = new StringBuffer(); /** * 此for循環是我項目測試用的 */ for(int j=0; j<address.length; j++) { if (j > 0) from.append(";"); from.append(address[j].toString()); } System.out.println(message.getMessageNumber()); System.out.println("來自:" + from.toString()); System.out.println("大小:" + message.getSize()); System.out.println("主題:" + message.getSubject()); System.out.println("時間::" + message.getSentDate()); System.out.println("==================================================="); } folder.close(true);//設置關閉 store.close(); System.out.println("receive over............................"); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * delete mail */ public static void deleteMail() { String host = "pop3.sina.com"; String userName = "xingui5624"; String passWord = "******"; Properties props = new Properties(); //Properties props = System.getProperties();這種方法創建 Porperties 同上 Session session = Session.getDefaultInstance(props); session.setDebug(true); try { System.out.println("begin delete ..........."); Store store = session.getStore("pop3"); store.connect(host, userName, passWord);//驗證郵箱 Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE);//設置我讀寫方式打開 int countOfAll = folder.getMessageCount();//取得郵件個數 int unReadCount = folder.getUnreadMessageCount();//已讀個數 int newOfCount = folder.getNewMessageCount();//未讀個數 System.out.println("總個數:" +countOfAll); System.out.println("已讀個數:" +unReadCount); System.out.println("未讀個數:" +newOfCount); for(int i=1; i<=countOfAll; i++) { Message message = folder.getMessage(i); message.setFlag(Flags.Flag.DELETED, true);//設置已刪除狀態為true if(message.isSet(Flags.Flag.DELETED)) System.out.println("已經刪除第"+i+"郵件。。。。。。。。。"); } folder.close(true); store.close(); System.out.println("delete ok................................."); } catch (NoSuchProviderException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } /** * reply mail */ public static void replyMail() { //test } } 注意:此實現要求郵箱都支持pop3和smtp協議。現在老的網易郵箱都支持(2006年以前注冊的),所以的sina的 qq的都可以,雅虎的部分支持,具體的可以在網上搜下把。 ============================================================================== 還有一種辦法,也是我以前用到的。 其實最簡單的發郵件方式是用Apache的Common組件中的Email組件,封裝得很不錯。 特簡單。首先從Sun的網站上下載JavaMail框架實現,最新的版本是1.4.1。然後是JavaBeans Activation Framework,最新版本1.1.1,JavaMail需要這個框架。不過如果JDK是1.6的話就不用下了。1.6已經包括了JavaBeans Activation Framework。 最後從 http://commons.apache.org/email/ 下載最新的Common Email,版本1.1。 首先在Eclipse中建立一個新的Java工程,然後把JavaMail和Common Email解壓縮,在工程中添加解壓縮出來的所有Jar的引用。 代碼: package org.fourpane.mail; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.HtmlEmail; public class Mail { public static void main(String[] args) { //SimpleEmail email = new SimpleEmail(); HtmlEmail email = new HtmlEmail(); email.setHostName("smtp.163.com");//郵件伺服器 email.setAuthentication("xingui5624", "******");//smtp認證的用戶名和密碼 try { email.addTo("[email protected]");//收信者 email.setFrom("[email protected]", "******");//發信者 email.setSubject("xingui5624的測試郵件");//標題 email.setCharset("UTF-8");//編碼格式 email.setMsg("這是一封xingui5624的測試郵件");//內容 email.send();//發送 System.out.println("send ok.........."); } catch (EmailException e) { e.printStackTrace(); } } } 【如果發送不成功,可能是你的jar包問題,javamail 的jar可能和jdk1.5以上的j2ee的jar沖突。還有就是可能你的郵箱不支持pop3和smtp協議。】

求採納

㈤ Java實現163郵箱發送郵件到QQ郵箱

在本教程中,我們將指導您使用Java實現將163郵箱的郵件發送到QQ郵箱。請按照以下步驟操作:

首先,在Maven項目中創建一個普通項目。

在項目中添加依賴,具體依賴如下:

4.0.0

com.xlgl.wzy

javamail

1.0

commonsIO

2.5.0

system

${pom.basedir}/jar/commonsIO-2.5.0.jar

com.sun.mail

javax.mail

1.6.1

junit

junit

4.10

log4j

log4j

1.2.8

org.apache.commons

commons-compress

1.5

javax.mail

mail

1.4.7

maven-assembly-plugin

jar-with-dependencies

com.xlgl.wzy.mail.SendMailUtils

make-assembly

package

single

為了實現郵件發送,您需要配置以下信息:

1. 創建配置類,用於接收配置文件中的信息,如伺服器地址、埠號、用戶名和授權碼。

2. 在配置類中設置屬性,例如伺服器地址、埠號、用戶名、授權碼等。

3. 實現配置類的載入方法,以載入配置文件中的信息。

4. 在配置文件中,確保授權碼是您163郵箱的授權碼,而非郵箱地址。若未正確配置,程序將顯示錯誤信息:使用163郵箱或其他網易郵箱時出現535 Error: authentication failed。

5. 准備郵件發送工具類,並編寫發送關鍵方法,包括正文和附件的發送。

6. 在測試類中,通過配置信息載入和發送工具類,進行郵件發送測試。

注意:如果在發送過程中出現錯誤,請檢查代碼實現是否有誤。確保所有步驟正確無誤後,您的郵件應成功發送到QQ郵箱,並且在郵箱中查看到附件。

㈥ java 接收郵件附件亂碼

imeUtility.encodeWord是進行編碼,MimeUtility.encodeWord是進行解碼
無論附件中文件是什麼樣的字元,都可以進行正確的解碼,但是當文件都是英文
文字的時候卻會包錯,為null,英文這個時候不支持全英文,所以這個時候應該:
if(!part_FileName.endsWith("?=")) //是全英文
{
直接賦值
}
else
{
MimeUtility.decodeWord(文件名字);
}
messageBodyPart.setFileName(MimeUtility.encodeWord(fileName));
同樣收中文附件時,以MimeUtility.decodeWord()將編碼後的字元串解碼。

字元編碼及字元集轉換問題
前面提到MIME要解決的另外一個問題就是將SMTP協議不支持的位元組流轉換成
為SMTP 協議支持的位元組流。比如我們要通過郵件傳輸一個附件文檔,該附件文檔就
是一個8bit 位元組流,如果簡單的直接通過SMTP 發送,其最高位信息將被丟失。MIME
規定可以用兩種編碼方式將8bit 的位元組流編碼成為低於8bit 的位元組流,它們分別是
BASE64 編碼(BASE64 將8bit 位元組流編碼成6bit 位元組流)和QP 編碼。這兩種編碼
方式同樣應用在對中文的編碼上。例如如果郵件中文題目叫做「CVS 介紹」,那麼其
編碼後的形式可能為:
Subject: =?gb2312?B?Q1ZTLS3QpMX0LnBwdA==?=
標題字元串以」=?」開始,以」?=」結束。」gb2312」表示字元串的字元集,而以」?」分
隔的」B」就表示此字元串的編碼方式為BASE64。我們處理此標題時就要先將BASE64
編碼的6bit 位元組流轉換為原來的8bit 位元組流,再根據字元集」gb2312」轉換為Java 中的
String 類型。這里可以簡單的使用JavaMail 提供的MimeUtility.decodeWord()靜態方法
將編碼後的字元串解碼。

文章出處:http://www.diybl.com/course/3_program/java/javashl/20071118/86782.html

閱讀全文

與java郵件添加附件相關的資料

熱點內容
學習智能編程的上哪個大學 瀏覽:312
c未能寫入日誌文件 瀏覽:738
招商銀行移動證書密碼 瀏覽:846
premiere鋼筆工具 瀏覽:889
aix忘記root密碼 瀏覽:398
android上傳文件伺服器 瀏覽:462
javascript獲取text 瀏覽:295
win10開啟共享文件夾 瀏覽:579
上海pdf文件在線合並 瀏覽:661
950自定義模塊代碼 瀏覽:232
java郵件添加附件 瀏覽:247
硬碟重置後分區後找不到文件 瀏覽:497
公務員考試報名用什麼app好 瀏覽:98
灰燼使者升級路線 瀏覽:433
像素數據量怎麼算 瀏覽:721
遇見愛app怎麼進不去 瀏覽:705
java實現的文件監控管理 瀏覽:779
javagui加圖片 瀏覽:364
獲取jsp參數 瀏覽:86
什麼標簽可以指向網站 瀏覽:4

友情鏈接