導航:首頁 > 編程語言 > pop3java進行判斷新郵件

pop3java進行判斷新郵件

發布時間:2022-08-19 15:36:06

java收發郵件過程中具體的功能是怎麼實現的

qq郵箱為例:


packagemain;

importjava.util.Properties;

importjavax.mail.Authenticator;
importjavax.mail.MessagingException;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMessage.RecipientType;


publicclassSendMessageService{
;
privateMimeMessagemessage;
privatePropertiesprops=newProperties();
publicstaticStringuserName;
publicstaticStringpassword;
;
;

SendMessageService(){
{
props.put("mail.smtp.auth","true");
props.put("mail.smtp.host","smtp.qq.com");
props.put("mail.smtp.port","587");
props.put("mail.user","[email protected]");//發送出去郵箱,
props.put("mail.password","在騰訊郵箱申請的SMTP服務碼");

//用戶名、密碼
userName=props.getProperty("mail.user");
password=props.getProperty("mail.password");

//構建授權信息,用於進行SMTP進行身份驗證
Authenticatorauthenticator=newAuthenticator(){
(){
(userName,password);
}
};
mailSession=Session.getInstance(props,authenticator);
message=newMimeMessage(mailSession);
InternetAddressform=newInternetAddress(props.getProperty("mail.user"));
message.setFrom(form);
}catch(MessagingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}

}

/**參數,發送的郵件的標題,郵件的內容,目標郵箱地址**/
publicvoidsendEm(Stringstr,Stringcont,Stringmailbox){
try{
//添加目標郵箱地址
to=newInternetAddress(mailbox);
message.setRecipient(RecipientType.TO,to);
//設置郵件標題
message.setSubject(str);
//設置郵件的內容體
message.setContent(cont,"text/html;charset=UTF-8");
Transport.send(message);
}catch(MessagingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}

publicstaticvoidmain(String[]args){
newSendMessageService().sendEm("hahhahahhaha","哈哈哈哈哈哈","[email protected]");
}
}

申請/SMTP服務 ,先進入郵箱,點擊設置,賬戶設置,翻到下面的開啟第二個IMAP/SMTP服務 ,會得到一個SMTP碼,記住它,

Ⅱ 急求:在JavaMail中,如何獲取messages中的所有「未讀」的郵件;通過uid能實現么具體是如何實現的呢

pop3由於本身不提供Flag的功能,所以一般來說沒有辦法判斷通過pop3得到的message是否已讀

但是有些服務商會在header裡面加入message是否已讀的信息
可以嘗試用message.getHeader(String name)得到header的信息,比如用
message.getHeader("Status")
或許可以得到是否已讀的信息(或許而已,因為這條語句成功與否取決於服務商是否加入該信息,以及使用的名字是否為"Status")
如果需要查看所有的header來判斷這個服務商是否加入了message的狀態信息,可以用
message.getAllHeaders() (返回的是Enumeration<Header>)
來獲取所有的header然後一個個檢查,如果裡面沒有的話,就沒有辦法了.

********************************************************

imap提供Flag,可以用
message.getFlags().getSystemFlags();
得到 Flag[], 然後去看其是否不為空,並且包括Flag.SEEN ,如果是,則為已讀,反之則未讀.

例如下面這個method可以返回message已讀的狀態 (true=已讀,false=未讀):

需要的imports:
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Flags.Flag;

代碼:
private boolean isRead(Message message)
throws MessagingException {
Flag[] flags = message.getFlags().getSystemFlags();
for (Flag f : flags) {
if (f.equals(Flag.SEEN))
return true;
}
return false;
}

希望這些可以幫到你

Ⅲ java里如何判斷Email是否發送成功

package com.liuns.mail.test;

import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

public class MailTest {
//發送的郵箱 內部代碼只適用qq郵箱
private static final String USER = "[email protected]";

//授權密碼 通過QQ郵箱設置->賬戶->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務->開啟POP3/SMTP服務獲取
private static final String PWD = "xxx";
private String[] to;
private String[] cc;//抄送
private String[] bcc;//密送
private String[] fileList;//附件
private String subject;//主題
private String content;//內容,可以用html語言寫
public void sendMessage() throws Exception {
// 配置發送郵件的環境屬性
final Properties props = new Properties();
//下面兩段代碼是設置ssl和埠,不設置發送不出去。
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
// 表示SMTP發送郵件,需要進行身份驗證
props.setProperty("mail.transport.protocol", "smtp");// 設置傳輸協議
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.qq.com");//QQ郵箱的伺服器 如果是企業郵箱或者其他郵箱得更換該伺服器地址
// 發件人的賬號
props.put("mail.user", USER);
// 訪問SMTP服務時需要提供的密碼
props.put("mail.password", PWD);

// 構建授權信息,用於進行SMTP進行身份驗證
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用戶名、密碼
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 使用環境屬性和授權信息,創建郵件會話
Session mailSession = Session.getInstance(props, authenticator);
// 創建郵件消息
MimeMessage message = new MimeMessage(mailSession);
BodyPart messageBodyPart = new MimeBodyPart();
Multipart multipart = new MimeMultipart();
// 設置發件人
InternetAddress form = new InternetAddress(
props.getProperty("mail.user"));
message.setFrom(form);
//發送
if (to != null) {
String toList = getMailList(to);
InternetAddress[] iaToList = new InternetAddress().parse(toList);
message.setRecipients(RecipientType.TO, iaToList); // 收件人
}
//抄送
if (cc != null) {
String toListcc = getMailList(cc);
InternetAddress[] iaToListcc = new InternetAddress().parse(toListcc);
message.setRecipients(RecipientType.CC, iaToListcc); // 抄送人
}
//密送
if (bcc != null) {
String toListbcc = getMailList(bcc);
InternetAddress[] iaToListbcc = new InternetAddress().parse(toListbcc);
message.setRecipients(RecipientType.BCC, iaToListbcc); // 密送人
}
message.setSentDate(new Date()); // 發送日期 該日期可以隨意寫,你可以寫上昨天的日期(效果很特別,親測,有興趣可以試試),或者抽象出來形成一個參數。
message.setSubject(subject); // 主題
message.setText(content); // 內容
//顯示以html格式的文本內容
messageBodyPart.setContent(content,"text/html;charset=utf-8");
multipart.addBodyPart(messageBodyPart);
//保存多個附件
if(fileList!=null){
addTach(fileList, multipart);
}
message.setContent(multipart);
// 發送郵件
Transport.send(message);
}

public void setTo(String[] to) {
this.to = to;
}

public void setCc(String[] cc) {
this.cc = cc;
}

public void setBcc(String[] bcc) {
this.bcc = bcc;
}

public void setSubject(String subject) {
this.subject = subject;
}

public void setContent(String content) {
this.content = content;
}

public void setFileList(String[] fileList) {
this.fileList = fileList;
}

private String getMailList(String[] mailArray) {
StringBuffer toList = new StringBuffer();
int length = mailArray.length;
if (mailArray != null && length < 2) {
toList.append(mailArray[0]);
} else {
for (int i = 0; i < length; i++) {
toList.append(mailArray[i]);
if (i != (length - 1)) {
toList.append(",");
}
}
}
return toList.toString();
}

//添加多個附件
public void addTach(String fileList[], Multipart multipart) throws Exception {
for (int index = 0; index < fileList.length; index++) {
MimeBodyPart mailArchieve = new MimeBodyPart();
FileDataSource fds = new FileDataSource(fileList[index]);
mailArchieve.setDataHandler(new DataHandler(fds));
mailArchieve.setFileName(MimeUtility.encodeText(fds.getName(),"UTF-8","B"));
multipart.addBodyPart(mailArchieve);
}
}

//以下是演示demo
public static void main(String args[]) {
MailTest mail = new MailTest();
mail.setSubject("java郵件");
mail.setContent("你好 這是第一個java 程序發送郵件");
//收件人 可以發給其他郵箱(163等) 下同
mail.setTo(new String[] {"[email protected]"});
//抄送
// mail.setCc(new String[] {"[email protected]","[email protected]"});
//密送
//mail.setBcc(new String[] {"[email protected]","[email protected]"});
//發送附件列表 可以寫絕對路徑 也可以寫相對路徑(起點是項目根目錄)
// mail.setFileList(new String[] {"D:\\aa.txt"});
//發送郵件
try {
mail.sendMessage();
System.out.println("發送郵件成功!");
} catch (Exception e) {
System.out.println("發送郵件失敗!");
e.printStackTrace();
}
}
}

Ⅳ java接收郵件問題

不清楚你要的是做伺服器還是要做客戶端
這個是客戶端,採用socket接收郵件
class POP3Demo {
private static String POP3Server = "pop3伺服器";
private static String USERNAME = "****";//實際應用中改成真實的用戶名
private static String PASSWORD = "****";//實際應用中改成真實的密碼
public static void main(String[] args) {
int POP3Port = 110;
Socket client = null;
try {
// 向POP3服務程序建立一個套接字連接。
client = new Socket(POP3Demo.POP3Server, POP3Port);
// 創建一個BufferedReader對象,以便從套接字讀取輸出。
InputStream is = client.getInputStream();
BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
// 創建一個PrintWriter對象,以便向套接字寫入內容。
OutputStream os = client.getOutputStream();
PrintWriter sockout = new PrintWriter(os, true);
// 顯示同SMTP服務程序的握手過程。
System.out.println("S:" + sockin.readLine());
sockout.println("user " + POP3Demo.USERNAME);
System.out.println("S:" + sockin.readLine());
sockout.println("pass " + POP3Demo.PASSWORD);
System.out.println("S:" + sockin.readLine());
sockout.println("stat");
String temp[] = sockin.readLine().split(" ");
int count = Integer.parseInt(temp[1]);//得到信箱中共有多少封郵件
for (int i = 1; i < count + 1; i++) {//依次列印出郵件的內容
sockout.println("retr " + i);
System.out.println("以下為第" + i + "封郵件的內容");
while (true) {
String reply = sockin.readLine();
System.out.println(reply);
if (reply.toLowerCase().equals(".")) {
break;
}
}
}

} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
if (client != null) {
client.close();
}
} catch (IOException e) {}
}
}
}

Ⅳ JavaMail中如何獲取所有新郵件

1.先說協議。pop3是不支持讀取新郵件的,flag也只能用delete,只能自己手動實現。 
2.想使用flag判斷是否是新郵件回,需答要使用imap協議:Store store = session.getStore("imap"); 
3.folder需要讀寫,不知道read-only是不是也可以,沒有驗證,folder.open(Folder.READ_WRITE);

Ⅵ 用JAVA如何判斷一個郵箱未讀和已讀的郵件呢請教請教 Java相關

:無法判斷,各公司的郵件伺服器都不同。-.-!!不會吧販紡敲碤q郵箱或者163的怎麼判斷呢販

Ⅶ 關於POP3協議取最新郵件ID的問題

//首先LZ要明白這是什麼編碼,這是base64編碼!
//編碼的格式是什麼?拿第1行來說=?GB2312?B?1Nq0y8rkyOvTyrz+1vfM4g==?= ,正文部分為"1Nq0y8rkyOvTyrz+1vfM4g==",其它部分僅僅是告訴之編碼格式是什麼,正文從哪開始什麼的!
//知道這些後,可以用字元串處理把正文部分取出,而後用TIdDecoderMime對其解碼即可!
//如:
Showmessage(idcdrm1.DecodeString('1Nq0y8rkyOvTyrz+1vfM4g=='));//idcdrm1為TIdDecoderMime的實例
//顯示結果為
在此輸入郵件主題

Ⅷ 用javamail怎樣監聽新郵件

folder = store.getDefaultFolder();//獲取默認文件
if (folder == null) throw new Exception("No default folder");
folder = folder.getFolder("INBOX");//鏈接收件箱
if (folder == null) throw new Exception("No POP3 INBOX");
folder.open(Folder.READ_ONLY);//使用只讀方式打開收件箱
Message[] msgs = folder.getMessages();//得到文件夾信息,獲取郵件列表

Ⅸ java 如何實現登錄139郵箱 並判斷是否登錄成功

如果你是用socket傳輸指令法師登陸郵箱的話,那麼有專門的命令stat來查看你的登陸是否成功的

一個例子
public static void main(String[] args){
if(args.length!=3){
System.out.println("USE: java POP3Demo mailhost user password");
}
new POP3Demo().receive(args[0],args[1],args[2]);
}
/**
*<br>方法說明:接收郵件
*<br>輸入參數:String popServer 伺服器地址
*<br>輸入參數:String popUser 郵箱用戶名
*<br>輸入參數:String popPassword 郵箱密碼
*<br>返回類型:
*/
public static void receive (String popServer, String popUser, String popPassword)
{
String POP3Server = popServer;
int POP3Port = 110;
Socket client = null;
try
{
// 創建一個連接到POP3服務程序的套接字。
client = new Socket (POP3Server, POP3Port);
//創建一個BufferedReader對象,以便從套接字讀取輸出。
InputStream is = client.getInputStream ();
BufferedReader sockin;
sockin = new BufferedReader (new InputStreamReader (is));
//創建一個PrintWriter對象,以便向套接字寫入內容。
OutputStream os = client.getOutputStream ();
PrintWriter sockout;
sockout = new PrintWriter (os, true); // true for auto-flush
// 顯示POP3握手信息。
System.out.println ("S:" + sockin.readLine ());

/*-- 與POP3伺服器握手過程 --*/
System.out.print ("C:");
String cmd = "user "+popUser;
// 將用戶名發送到POP3服務程序。
System.out.println (cmd);
sockout.println (cmd);
// 讀取POP3服務程序的回應消息。
String reply = sockin.readLine ();
System.out.println ("S:" + reply);

System.out.print ("C:");
cmd = "pass ";
// 將密碼發送到POP3服務程序。
System.out.println(cmd+"*********");
sockout.println (cmd+popPassword);
// 讀取POP3服務程序的回應消息。
reply = sockin.readLine ();
System.out.println ("S:" + reply);

System.out.print ("C:");
cmd = "stat";
// 獲取郵件數據。
System.out.println(cmd);
sockout.println (cmd);
// 讀取POP3服務程序的回應消息。
reply = sockin.readLine ();
System.out.println ("S:" + reply);
if(reply==null) return;
System.out.print ("C:");
cmd = "retr 1";
// 將接收第一豐郵件命令發送到POP3服務程序。
System.out.println(cmd);
sockout.println (cmd);

// 輸入了RETR命令並且返回了成功的回應碼,持續從套接字讀取輸出,
// 直到遇到<CRLF>.<CRLF>。這時從套接字讀出的輸出就是郵件的內容。
if (cmd.toLowerCase ().startsWith ("retr") &&
reply.charAt (0) == '+')
do
{
reply = sockin.readLine ();
System.out.println ("S:" + reply);
if (reply != null && reply.length () > 0)
if (reply.charAt (0) == '.')
break;
}
while (true);
cmd = "quit";
// 將命令發送到POP3服務程序。
System.out.print (cmd);
sockout.println (cmd);
}
catch (IOException e)
{
System.out.println (e.toString ());
}
finally
{
try
{ if (client != null)
client.close ();
}
catch (IOException e)
{
}
}
}
}

Ⅹ java mail pop3 獲取新郵件

UID和日期 。。。。。。。。。。。。。第1次,全部是新的,記錄UID,查詢的時候,分日期,,,

閱讀全文

與pop3java進行判斷新郵件相關的資料

熱點內容
qq群里的機器人買武器 瀏覽:428
捕魚達人歷史版本 瀏覽:73
mp4視頻文件解密軟體 瀏覽:62
多軸編程哪個軟體最方便 瀏覽:27
老平板哪個是顯示屏數據線插座 瀏覽:849
5sing上傳音頻文件格式 瀏覽:171
win10輸入文件滑鼠右鍵異常 瀏覽:634
聽幼兒故事用什麼app 瀏覽:514
iphone修改音頻文件名 瀏覽:53
國家氣象站點數據在哪裡下載 瀏覽:342
網路設置的網站 瀏覽:914
手機測量放樣怎麼導數據和線型 瀏覽:648
企業展示型網站源碼 瀏覽:781
易花花app哪裡下載 瀏覽:323
外國程序員職業生涯長 瀏覽:709
看理想app怎麼注銷賬號 瀏覽:545
數控銑床加工手工編程的步驟有哪些 瀏覽:411
uc瀏覽器為什麼很多網站進不了 瀏覽:513
西部數據移動硬碟怎麼 瀏覽:645
批處理修改子目錄文件名命令 瀏覽:405

友情鏈接