會不會是你的用戶許可權問題?
㈡ 用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 郵件操作
把它刪除到已刪除裡面只需要資料庫多對這個類型設置類型簡乎即可,比如已刪除是1,0是未刪除,清塌如果點擊刪攔正悉除就修改資料庫的欄位將欄位變成1就代表已刪除了
㈣ 怎麼用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 開發郵件問題
對照我以前寫的,從程序上看沒有什麼錯。你試試下面:
Part p = multipart.getBodyPart(j);
改為:BodyPart p = multipart.getBodyPart(j);
㈥ 如何用Java實現系統自動發送郵件/簡訊
找個簡訊平台注冊,他會提供一個簡訊介面,用這個介面就可以發了。
㈦ java實現接收郵件,mail.jar
這個異常表示有類型轉換錯誤,有個地方需要使用 javax.mail.Multipart 類型的對象,你用了 com.sun.mail.imap.IMAPInputStream 類型,所以回出現了這個異常。答
根據你給的有限的資料,暫時只能分析道這么多了。
㈧ 100高分誠求:Java郵件系統源代碼
你的這個要求有點離譜,如果真的要的話
建議去這個找吧,源代碼都有的
㈨ java編寫郵件收發程序步驟
補充回答:如果不涉及到MIME,只是收發簡單文本郵件。就會比較簡單。因為就像你說的,smtp和pop3協議就是文本格式的。你用Socket建立連接後,就像讀文件一樣,一行一行的讀數據,然後按照協議分析數據格式。例如如果開始時USER那麼後面可能跟的就是用戶等。
就是一個字元串解析和匹配的過程。網上好像有這類代碼,自己找一個學習一下。我以前用C在68k上作過,不是很難。不過代碼已經沒有了。
你的是郵件客戶端,功能類似於outlook,foxmail等,如果你能上網,就不需要郵件伺服器,直接用自己的郵件賬號來測試,例如如果你有一個sina的郵件賬戶,就可以從sina伺服器收發郵件。
不過為了測試方便,還是上網去收一個郵件伺服器把。例如foxmail server等。網上有教程,可以配置好的。
對於編程,既然要求用socket編寫,那麼就要熟悉java的socket編程,這部分倒是很簡單。可能還需要看看多線程部分。
另外,你需要學習一下, smtp和pop3這兩個網路協議的內容,因為你需要解析這兩個協議。如果需要收發代附件的,還需要看mime的內容,不過估計不需要。
其實java有自己的類庫javamail,可以實現手法郵件,功能很強大。不過既然要求必須用socket,那就不能這個了。
說的太羅嗦了。總結一下:
1)配置郵件伺服器,搭建測試環境
2)熟悉java的socket編程、 Swing編程(編寫界面)、多線程(選用)
3)熟悉smtp和pop3的內容(內容很多,了解基本的就可以)
網上應該有類似代碼,可以用來參考。
㈩ 如何寫一個JAVA類可以實現郵件發送功能,也可以實現群發功能
packagebyd.core;
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.io.UnsupportedEncodingException;
importjava.net.Socket;
importjava.nio.charset.Charset;
importjava.text.SimpleDateFormat;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;
importsun.misc.BASE64Encoder;
/**
*該類使用Socket連接到郵件伺服器,並實現了向指定郵箱發送郵件及附件的功能。
*
*@authorKouHongtao
*/
publicclassEmail{
/**
*換行符
*/
privatestaticfinalStringLINE_END=" ";
/**
*值為「true」輸出高度信息(包括伺服器響應信息),值為「false」則不輸出調試信息。
*/
privatebooleanisDebug=true;
/**
*值為「true」則此乎在發送郵件{@linkMail#send()}過程中會讀取伺服器端謹局返回的消息,
*並在郵件發送完畢後將這些消息返回給用戶。
*/
=true;
/**
*郵件伺服器地址
*/
privateStringhost;
/**
*發件人郵箱地址
*/
privateStringfrom;
/**
*收件人郵箱地址
*/
privateList<String>to;
/**
*抄送地址
*/
privateList<String>cc;
/**
*暗送地址
*/
privateList<String>bcc;
/**
*郵件主題
*/
privateStringsubject;
/**
*用戶名
*/
privateStringuser;
/**
*密碼
*/
privateStringpassword;
/**
*MIME郵件類型
*/
privateStringcontentType;
/**
*用來綁定多個郵件單元{@link#partSet}
*的分隔標識,我們可以將郵件的正文及每一個附件都看作是一個郵件單元。
*/
privateStringboundary;
/**
*郵件單元分隔標識符,該屬性將用來在郵件中作為分割各個郵件單元的標識。
*/
privateStringboundaryNextPart;
/**
*傳輸郵件所採用的編碼
*/
;
/**
*設置郵件正文所用的字元集
*/
privateStringcharset;
/**
*內容描述
*/
;
/**
森晌悉*郵件正文
*/
privateStringcontent;
/**
*發送郵件日期的顯示格式
*/
;
/**
*附件的默認MIME類型
*/
;
/**
*郵件單元的集合,用來存放正文單元和所有的附件單元。
*/
privateList<MailPart>partSet;
privateList<MailPart>alternativeList;
privateStringmixedBoundary;
;
/**
*不同類型文件對應的{@linkMIME}類型映射。在添加附件
*{@link#addAttachment(String)}時,程序會在這個映射中查找對應文件的
*{@linkMIME}類型,如果沒有,則使用
*{@link#defaultAttachmentContentType}所定義的類型。
*/
privatestaticMap<String,String>contentTypeMap;
privatestaticenumTextType{
PLAIN("plain"),HTML("html");
privateStringv;
privateTextType(Stringv){
this.v=v;
}
publicStringgetValue(){
returnthis.v;
}
}
static{
//MIMEMediaTypes
contentTypeMap=newHashMap<String,String>();
contentTypeMap.put("xls","application/vnd.ms-excel");
contentTypeMap.put("xlsx","application/vnd.ms-excel");
contentTypeMap.put("xlsm","application/vnd.ms-excel");
contentTypeMap.put("xlsb","application/vnd.ms-excel");
contentTypeMap.put("doc","application/msword");
contentTypeMap.put("dot","application/msword");
contentTypeMap.put("docx","application/msword");
contentTypeMap.put("docm","application/msword");
contentTypeMap.put("dotm","application/msword");
}
/**
*該類用來實例化一個正文單元或附件單元對象,他繼承了{@linkMail}
*,在這里製作這個子類主要是為了區別郵件單元對象和郵件服務對象,使程序易讀一些。
*這些郵件單元全部會放到partSet中,在發送郵件{@link#send()}時,程序會調用
*{@link#getAllParts()}方法將所有的單元合並成一個符合MIME格式的字元串。
*
*@authorKouHongtao
*/
{
publicMailPart(){
}
}
/**
*默認構造函數
*/
publicEmail(){
defaultAttachmentContentType="application/octet-stream";
simpleDatePattern="yyyy-MM-ddHH:mm:ss";
boundary="--=_NextPart_zlz_3907_"+System.currentTimeMillis();
boundaryNextPart="--"+boundary;
contentTransferEncoding="base64";
contentType="multipart/mixed";
charset=Charset.defaultCharset().name();
partSet=newArrayList<MailPart>();
alternativeList=newArrayList<MailPart>();
to=newArrayList<String>();
cc=newArrayList<String>();
bcc=newArrayList<String>();
mixedBoundary="=NextAttachment_zlz_"+System.currentTimeMillis();
mixedBoundaryNextPart="--"+mixedBoundary;
}
/**
*根據指定的完整文件名在{@link#contentTypeMap}中查找其相應的MIME類型,
*如果沒找到,則返回{@link#defaultAttachmentContentType}
*所指定的默認類型。
*
*@paramfileName
*文件名
*@return返迴文件對應的MIME類型。
*/
(StringfileName){
Stringret=null;
if(null!=fileName){
intflag=fileName.lastIndexOf(".");
if(0<=flag&&flag<fileName.length()-1){
fileName=fileName.substring(flag+1);
}
ret=contentTypeMap.get(fileName);
}
if(null==ret){
ret=defaultAttachmentContentType;
}
returnret;
}
/**
*將給定字元串轉換為base64編碼的字元串
*
*@paramstr
*需要轉碼的字元串
*@paramcharset
*原字元串的編碼格式
*@returnbase64編碼格式的字元
*/
privateStringtoBase64(Stringstr,Stringcharset){
if(null!=str){
try{
returntoBase64(str.getBytes(charset));
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
}
return"";
}
/**
*將指定的位元組數組轉換為base64格式的字元串
*
*@parambs
*需要轉碼的位元組數組
*@returnbase64編碼格式的字元
*/
privateStringtoBase64(byte[]bs){
returnnewBASE64Encoder().encode(bs);
}
/**
*將給定字元串轉換為base64編碼的字元串
*
*@paramstr
*需要轉碼的字元串
*@returnbase64編碼格式的字元
*/
privateStringtoBase64(Stringstr){
returntoBase64(str,Charset.defaultCharset().name());
}
/**
*將所有的郵件單元按照標準的MIME格式要求合並。
*
*@return返回一個所有單元合並後的字元串。
*/
privateStringgetAllParts(){
StringBuildersbd=newStringBuilder(LINE_END);
sbd.append(mixedBoundaryNextPart);
sbd.append(LINE_END);
sbd.append("Content-Type:");
sbd.append("multipart/alternative");
sbd.append(";");
sbd.append("boundary="");
sbd.append(boundary).append(""");//郵件類型設置
sbd.append(LINE_END);
sbd.append(LINE_END);
sbd.append(LINE_END);
addPartsToString(alternativeList,sbd,getBoundaryNextPart());
sbd.append(getBoundaryNextPart()).append("--");
sbd.append(LINE_END);
addPartsToString(partSet,sbd,mixedBoundaryNextPart);
sbd.append(LINE_END);
sbd.append(mixedBoundaryNextPart).append("--");
sbd.append(LINE_END);
//sbd.append(boundaryNextPart).
//append(LINE_END);
alternativeList.clear();
partSet.clear();
returnsbd.toString();
}
privatevoidaddPartsToString(List<MailPart>list,StringBuildersbd,
StringnextPartString){
intpartCount=list.size();
for(inti=0;i<partCount;i++){
Emailattachment=list.get(i);
StringattachmentContent=attachment.getContent();
if(null!=attachmentContent&&0<attachmentContent.length()){
sbd.append(nextPartString).append(LINE_END);
sbd.append("Content-Type:");
sbd.append(attachment.getContentType());
sbd.append(LINE_END);
sbd.append("Content-Transfer-Encoding:");
sbd.append(attachment.getContentTransferEncoding());
sbd.append(LINE_END);
Stringcd=attachment.getContentDisposition();
if(null!=cd){
sbd.append("Content-Disposition:");
sbd.append(cd);
sbd.append(LINE_END);
}
sbd.append(LINE_END);
sbd.append(attachmentContent);
sbd.append(LINE_END);
}
}
}
/**
*添加郵件正文單元
*/
privatevoidaddContent(){
if(null!=content){
MailPartpart=newMailPart();
part.setContent(toBase64(content));
part.setContentType("text/plain;charset=""+charset+""");
alternativeList.add(part);
}
}
privateStringlistToMailString(List<String>mailAddressList){
StringBuildersbd=newStringBuilder();
if(null!=mailAddressList){
intlistSize=mailAddressList.size();
for(inti=0;i<listSize;i++){
if(0!=i){
sbd.append(";");
}
sbd.append("<").append(mailAddressList.get(i)).append(">");
}
}
returnsbd.toString();
}
privateList<String>getrecipient(){
List<String>list=newArrayList<String>();
list.addAll(to);
list.addAll(cc);
list.addAll(bcc);
returnlist;
}
/**
*添加超文本內容
*
*@paramtext
*/
publicvoidaddHtmlContent(Stringtext){
addContent(text,TextType.HTML);
}
/**
*添加純文本內容
*
*@paramtext
*/
publicvoidaddTextContent(Stringtext){
addContent(text,TextType.PLAIN);
}
privatevoidaddContent(Stringtext,TextTypetype){
if(null!=text){
MailPartpart=newMailPart();
part.setContent(toBase64(text));
part.setContentType("text/"+type.getValue()+";charset=""
+charset+""");
alternativeList.add(part);
}
}