导航:首页 > 编程语言 > 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进行判断新邮件相关的资料

热点内容
安卓如何给苹果发视频文件 浏览:894
qq拼音的完成字符串 浏览:558
js正则表达式取反 浏览:312
java如何判断字符是否为空 浏览:76
编程课需要什么书 浏览:509
禁用应用程序 浏览:452
大数据时代下的 浏览:181
快手抖音直播跳舞平台需要哪些文件 浏览:459
网络意思是什么污 浏览:431
stl文件是什么绘图软件 浏览:767
ps如何将文件拖到合适窗口处 浏览:356
查看本机opengl版本 浏览:31
java子类克隆 浏览:916
小程序如何取代app 浏览:805
linuxso库文件 浏览:501
贵阳大数据城 浏览:98
wififtedu密码是多少 浏览:50
原版win10专业版 浏览:442
魔兽争霸3配置文件 浏览:494
yy录音文件夹在哪里 浏览:895