文档库 最新最全的文档下载
当前位置:文档库 › JAVAMAIL使用[1]

JAVAMAIL使用[1]

JAVAMAIL使用[1]
JAVAMAIL使用[1]

JavaMail使用

在Web应用程序的开发中,经常会有处理邮件的需求,在J2EE中提供了邮件处理的API,使用这些API,可以非常方便地接收和发送邮件。

1、邮件协议简介

SMTP(Simple Mial Transfer Protocol)即简单邮件传输协议,它提供了一种可靠而且有效的电子邮件传输协议,SMTP主要用于系统之间传递邮件信息,而且还可以提供来信有关的通知服务。在发送电子邮件的时候,可以选择这个协议,在JavaMail中提供了对SMTP协议的支持。

POP(Post Office Protocol)即邮局协议,而POP3则是POP协议的第三个版本,这个协议规定了用户连接到邮件服务器和接收邮件的规则,是Internet电子邮件的第一个离线协议标准。简单说POP3就是在接收电子邮件的简单通信协议,用户在接收邮件的时候可以选择使用这个协议,在JavaMail中同样支持这个电子邮件协议。

2、开发环境的配置

拷贝相关jar包到lib目录下,或配置在classpath中即可

3、一个简单的例子

为了方便程序的演示,提供了一个测试邮箱,邮箱的地址为jjqibmbld@https://www.wendangku.net/doc/4b1301230.html,,密码为123。这个邮箱的SMTP服务器地址为https://www.wendangku.net/doc/4b1301230.html,,POP3服务器地址为https://www.wendangku.net/doc/4b1301230.html,。以下程序演示的是用上面的邮箱向jjq@https://www.wendangku.net/doc/4b1301230.html,发送邮件的例子(TestJavaMail.java) package com.fendou;

import java.util.Properties;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

class MyAuthenticator extends Authenticator{

String name;

String password;

public MyAuthenticator(String name,String password){

https://www.wendangku.net/doc/4b1301230.html,=name;

this.password=password;

this.getPasswordAuthentication();

}

@Override

protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(name,password);

}

}

public class TestJavaMail{

public static void main(String[]args)throws Exception{ //发送邮箱的用户名和密码

String name="jjqibmbld";

String password="123456";

Properties props=System.getProperties();

//设置smtp主机

props.put("mail.smtp.host","https://www.wendangku.net/doc/4b1301230.html,");

//设置smtp验证属性

props.put("mail.smtp.auth","true");

MyAuthenticator auth=new MyAuthenticator(name,password);

//获得邮件会话对象

Session session=Session.getDefaultInstance(props,auth);

//创建MIME邮件对象

MimeMessage message=new MimeMessage(session);

//设置邮件发送人

message.setFrom(new InternetAddress("jjqibmbld@https://www.wendangku.net/doc/4b1301230.html,"));

//设置邮件收件人

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("jjq@https://www.wendangku.net/doc/4b1301230.html,"));

//设置邮件主题

message.setSubject("我的第一封测试邮件");

//设置邮件正文

message.setText("我的邮件内容");

//创建SMTP邮件协议发送对象

Transport transport=session.getTransport("smtp");

//取得与邮件服务器的连接

transport.connect((String)props.get("mail.smtp.host"),name, password);

//通过邮件服务器发送邮件

transport.sendMessage(message,

message.getRecipients(Message.RecipientType.TO));

transport.close();

}

}

那么如何发送带有附件的E-mail呢,如下例子(TestJavaMailAttachment.java) package com.fendou1;

import java.util.Properties;

//创建MIME邮件对象

MimeMessage message=new MimeMessage(session);

//设置邮件发送人

message.setFrom(new InternetAddress("jjqibmbld@https://www.wendangku.net/doc/4b1301230.html,"));

//设置邮件收件人

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("jjq@https://www.wendangku.net/doc/4b1301230.html,"));

//设置邮件主题

message.setSubject("我的第一封测试邮件");

///////////////////////////////////

//以下是改动内容

//设置邮件正文

//message.setText("我的邮件内容");

//设置上传的正文

BodyPart bpContent=new MimeBodyPart();

bpContent.setText("jjq");

//设置上传的文件

BodyPart bpAttachment=new MimeBodyPart();

FileDataSource fileds=new FileDataSource("c:\\1.jpeg");

bpAttachment.setDataHandler(new DataHandler(fileds));

bpAttachment.setFileName("1.jpeg");

MimeMultipart mp=new MimeMultipart();

mp.addBodyPart(bpContent);

mp.addBodyPart(bpAttachment);

message.setContent(mp);

message.saveChanges();

///////////////////////////

//创建SMTP邮件协议发送对象

Transport transport=session.getTransport("smtp");

//取得与邮件服务器的连接

transport.connect((String)props.get("mail.smtp.host"),name, password);

//通过邮件服务器发送邮件

transport.sendMessage(message,

message.getRecipients(Message.RecipientType.TO));

transport.close();

}

}

4、结合web项目,制作一个发送文本邮件的例子(主要对上述代码进行封装)

此程序,用户可以在jsp页面上输入要发送邮件的内容和地址,通过表单把邮件的内容提交给一个Servlet处理,这个Servlet调用一个JavaBean进行邮件发送。为了方便演示,默认发送邮件的地址为jjqibmbld@https://www.wendangku.net/doc/4b1301230.html,

JSP代码如下(SendTextMail.jsp)

<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>

JavaMail发送文本邮件

使用JavaMail发送文本邮件示例:

收信人:

发信人:

value="jspwebdev@https://www.wendangku.net/doc/4b1301230.html,"/>

主题:  

name="subject"/>

内容:  

Servlet代码如下(SendTextMail.java)

package servlets;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import beans.TextMail;

public class SendTextMail extends HttpServlet{

public void doPost(HttpServletRequest request,HttpServletResponse

response)

throws IOException,ServletException{

//设置是新浪邮箱的SMTP地址

String host="https://www.wendangku.net/doc/4b1301230.html,";

//设置邮箱账户名称

String name="jjqibmbld";

//设置邮箱帐号密码

String password="123";

//设置邮件内容

TextMail mail=new TextMail(host,name,password);

mail.setFrom(request.getParameter("from"));

mail.setTo(request.getParameter("to"));

mail.setSubject(request.getParameter("subject"));

mail.setText(request.getParameter("content"));

response.setContentType("text/html");

response.setCharacterEncoding("gb2312");

PrintWriter out=response.getWriter();

//发送邮件

if(mail.send())

out.print("邮件发送成功!
");

else

out.print("邮件发送失败!
");

}

}

JavaBean的代码如下(TextMail.java)

package beans;

import java.util.Properties;

import javax.mail.BodyPart;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.NoSuchProviderException;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

/**

*功能:向指定的邮箱地址发送一封文本邮件

*/

public class TextMail{

private MimeMessage message;

private Properties props;

private Session session;

private String name="";

private String password="";

/**

*完成发送邮件的初始化工作

*@param host

*/

public TextMail(String host,String name,String password) {

https://www.wendangku.net/doc/4b1301230.html,=name;

this.password=password;

props=System.getProperties();

//设置SMTP主机

props.put("mail.smtp.host",host);

//设置SMTP验证属性

props.put("mail.smtp.auth","true");

//获得邮件会话对象

MyAuthenticator auth=new MyAuthenticator(name,password); session=Session.getDefaultInstance(props,auth);

//创建MIME邮件对象

message=new MimeMessage(session);

}

/**

*设置邮件发送人

*@param from

*/

public void setFrom(String from)

{

try{

message.setFrom(new InternetAddress(from));

}catch(AddressException e){

e.printStackTrace();

}catch(MessagingException e){

e.printStackTrace();

}

}

/**

*设置邮件收件人

*@param to

*/

public void setTo(String to)

{

try{

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));

}catch(AddressException e){

e.printStackTrace();

}catch(MessagingException e){

e.printStackTrace();

}

}

/**

*设置邮件主题

*@param subject

*/

public void setSubject(String subject)

{

try{

message.setSubject(subject);

}catch(Exception e){

e.printStackTrace();

}

}

/**

*设置邮件正文

*@param text

*/

public void setText(String text){

try{

message.setText(text);

}catch(MessagingException e){

e.printStackTrace();

}

}

/**

*发送邮件

*@return

*/

public boolean send(){

try{

//创建SMTP邮件协议发送对象

Transport transport=session.getTransport("smtp");

//取得与邮件服务器的连接

transport.connect((String)props.get("mail.smtp.host"), name,password);

//通过邮件服务器发送邮件

transport.sendMessage(message,

message.getRecipients(Message.RecipientType.TO));

transport.close();

return true;

}catch(NoSuchProviderException e){

e.printStackTrace();

return false;

}catch(MessagingException e){

e.printStackTrace();

return false;

}

}

}

其中servlet的配置如下

SendTextMail

servlets.SendTextMail

SendTextMail

/SendTextMail

5、发送HTML邮件(主要区别不大,主要是在设置正文的时候有所区别)

JSP页面(SendHtmlMail.jsp)

<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>

JavaMail发送HTML邮件

使用JavaMail发送HTML邮件示例:

收信人:

发信人:

value="jspwebdev@https://www.wendangku.net/doc/4b1301230.html,"/>

主题:  

name="subject"/>

内容(HTML):

String host="https://www.wendangku.net/doc/4b1301230.html,";

//设置邮箱账户名称

String name="ncu_jjq";

//设置邮箱帐号密码

String password="jijiaqi0914";

//设置邮件内容

HTMLSender mail=new HTMLSender(host,name,password);

mail.setFrom(request.getParameter("from"));

mail.setTo(request.getParameter("to"));

mail.setSubject(request.getParameter("subject"));

mail.setContent(request.getParameter("content"));

response.setContentType("text/html");

response.setCharacterEncoding("gb2312");

PrintWriter out=response.getWriter();

//发送邮件

if(mail.send())

out.print("邮件发送成功!
");

else

out.print("邮件发送失败!
");

}

}

private MimeMultipart mp;

private String name="";

private String password="";

/**

*完成发送邮件的初始化工作

*@param host

*/

public HTMLSender(String host,String name,String password) {

https://www.wendangku.net/doc/4b1301230.html,=name;

this.password=password;

props=System.getProperties();

//设置SMTP主机

props.put("mail.smtp.host",host);

//设置SMTP验证属性

props.put("mail.smtp.auth","true");

//获得邮件会话对象

MyAuthenticator auth=new MyAuthenticator(name,password); session=Session.getDefaultInstance(props,auth);

//创建MIME邮件对象

message=new MimeMessage(session);

}

/**

*设置邮件发送人

*@param from

*/

public void setFrom(String from)

{

try{

message.setFrom(new InternetAddress(from));

}catch(AddressException e){

e.printStackTrace();

}catch(MessagingException e){

e.printStackTrace();

}

}

/**

*设置邮件收件人

*@param to

*/

public void setTo(String to)

{

try{

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));

}catch(AddressException e){

e.printStackTrace();

}catch(MessagingException e){

e.printStackTrace();

}

}

/**

*设置邮件主题

*@param subject

*/

public void setSubject(String subject)

{

try{

message.setSubject(subject);

}catch(Exception e){

e.printStackTrace();

}

}

/**

*设置邮件正文

*@param text

*/

public void setContent(String content){

try{

message.setContent(content,"text/html");

message.saveChanges();

}catch(Exception e){

e.printStackTrace();

}

}

/**

*发送邮件

*@return

*/

public boolean send(){

try{

//创建SMTP邮件协议发送对象

Transport transport=session.getTransport("smtp");

//取得与邮件服务器的连接

transport.connect((String)props.get("mail.smtp.host"), name,password);

//通过邮件服务器发送邮件

transport.sendMessage(message,

message.getRecipients(Message.RecipientType.TO));

transport.close();

return true;

}catch(NoSuchProviderException e){

e.printStackTrace();

return false;

}catch(MessagingException e){

e.printStackTrace();

return false;

}

}

}

其中配置文件如下

SendHTMLMail

servlets.SendHTMLMail

SendHTMLMail

/SendHTMLMail

6、发送带有附件的邮件

jsp页面(SendAttachment.jsp)

<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>

JavaMail发送带附件的邮件

使用JavaMail发送带附件的邮件示例:

ENCTYPE="multipart/form-data">

收信人:

发信人:

value="jspwebdev@https://www.wendangku.net/doc/4b1301230.html,"/>

主题:  

name="subject"/>

添加附件:

内容:  

String from="";

//收件人地址

String to="";

//邮件主题

String subject="";

//邮件内容

String content="";

//把附件内容上传到服务器

boolean isMultipart=

ServletFileUpload.isMultipartContent(request);

if(isMultipart){

FileItemFactory factory=new DiskFileItemFactory();

ServletFileUpload upload=new ServletFileUpload(factory);

Iterator items;

try{

items=upload.parseRequest(request).iterator();

while(items.hasNext()){

FileItem item=(FileItem)items.next();

if(!item.isFormField()){

//取出上传文件的文件名称

String name=item.getName();

String fileName=

name.substring(https://www.wendangku.net/doc/4b1301230.html,stIndexOf('\\')+1,name.length());

String path=request.getRealPath(fileName);

//上传文件

uploadedFile=new File(path);

item.write(uploadedFile);

}else if(item.isFormField())

{

//下面取出表单中各个输入域的值

if(item.getFieldName().equals("from"))

{

from=item.getString();

}else if(item.getFieldName().equals("to"))

{

to=item.getString();

}

else if(item.getFieldName().equals("subject"))

{

subject=item.getString();

}else if(item.getFieldName().equals("content"))

{

//content=item.getString();

content=new

String(item.getString().getBytes("iso-8859-1"));

System.out.println(new

String(content.getBytes("iso-8859-1")));

System.out.println(MimeUtility.encodeText(item.getString(),"gb231 2","B"));

}

}

}

}catch(Exception e){

e.printStackTrace();

}

}

//设置邮件信息

AttachmentSender sender=new

AttachmentSender(host,accountName,password);

sender.setFrom(from);

sender.setTo(to);

sender.setSubject(subject);

sender.setContent(content);

if(uploadedFile!=null)

{

String attachement=

request.getRealPath(uploadedFile.getName());

sender.addAttachMent(attachement);

}

//打印发送邮件结果

response.setContentType("text/html");

response.setCharacterEncoding("gb2312");

PrintWriter out=response.getWriter();

if(sender.send())

out.print("邮件发送成功!
");

else

out.print("邮件发送失败!
");

//发送邮件以后,删除上传文件

if(uploadedFile.exists())

uploadedFile.delete();

}

}

javaBean代码(AttachmentSender.java)

//获得邮件会话对象

MyAuthenticator auth=new MyAuthenticator(name,password);

session=Session.getDefaultInstance(props,auth);

//创建MIME邮件对象

message=new MimeMessage(session);

mp=new MimeMultipart();

}

/**

*设置邮件发送人

*@param from

*/

public void setFrom(String from)

{

try{

message.setFrom(new InternetAddress(from));

}catch(AddressException e){

e.printStackTrace();

}catch(MessagingException e){

e.printStackTrace();

}

}

/**

*设置邮件收件人

*@param to

*/

public void setTo(String to)

{

try{

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));

}catch(AddressException e){

e.printStackTrace();

}catch(MessagingException e){

e.printStackTrace();

}

}

/**

*设置邮件主题

*@param subject

*/

public void setSubject(String subject)

{

try{

message.setSubject(subject);

}catch(Exception e){

e.printStackTrace();

}

}

/**

*设置邮件正文

*@param text

*/

public void setContent(String content){

try{

System.out.println("dddd"+content);

BodyPart bp=new MimeBodyPart();

/*bp.setContent(

""

+content,"text/html;charset=GB2312");*/ bp.setContent(

""

+content,"text/html;charset=GB2312");

mp.addBodyPart(bp);

}catch(Exception e){

e.printStackTrace();

}

}

/**

*添加附件

*@param filename

*/

public void addAttachMent(String filename)

{

try{

BodyPart bp=new MimeBodyPart();

FileDataSource fileds=new FileDataSource(filename);

bp.setDataHandler(new DataHandler(fileds));

bp.setFileName(MimeUtility.encodeText(fileds.getName(),"gb2312"," B"));

mp.addBodyPart(bp);

}catch(Exception e){

e.printStackTrace();

}

}

/**

JavaMail API简介

javamail:JavaMail API简介 疯狂代码 https://www.wendangku.net/doc/4b1301230.html,/ ?:http:/https://www.wendangku.net/doc/4b1301230.html,/Java/Article7029.html 转载自:https://www.wendangku.net/doc/4b1301230.html, JavaMailAPI是种可选、能用于读取、编写和发送电子消息包(标准扩展)您可使用这种包创建邮件用户代理(MailUserAgentMUA)类型它类似于Eudora、Pine及MicrosoftOutlook这些邮件其主要目不是像发送邮件或其他邮件传输代理(MailTransferAgentMTA)类型那样用于传输、发送和转发消息换句话说用户可以和MUA类型交互以阅读和撰写电子邮件MUA依靠MTA处理实际发送任务 JavaMailAPI设计是为收发信息提供和协议无关访问方式是把该API划分成两个部分: ?该API第个部分是本课程重点基本上是如何发送和接收独立于提供/协议消息 ?第 2个部分则使用特定协议语言如:SMTP、POP、IMAP和NNTP如果要让JavaMailAPI和服务器通信就需要为的提供协议由于Sun公司对特定协议提供有充分介绍用户可以免费获取所以本课程没有介绍创建特定协议提供内容 复习相关协议 在学习JavaMailAPI深层知识的前让我们回过头来看看在该API中使用协议,本质上有4种人们常用协议: ?SMTP ?POP ?IMAP ?MIME 您还需要了解NNTP及其他些协议理解这些协议基本原理有助于您理解如何使用JavaMailAPI而该API设计要和协议无关所以不能克服这些基础协议限制如果选用协议不支持某种功能那么JavaMailAPI也无法在其上添加这种功能(正如您会儿就会看到在操作POP协议时常常会碰到这种问题) SMTP 简单邮件传输协议(SMTP)是用于传送电子邮件机制在JavaMailAPI环境中您基于JavaMail将和您公司或Internet服务提供商(ISP)SMTP服务器通信该SMTP服务器将会把消息转发给用作接收消息SMTP服务器最后用户可通过POP或IMAP协议获取该消息由于支持身份验证所以不需要SMTP服务器是种开放转发器但需要确保SMTP服务器配置正确JavaMailAPI中没有集成用于处理诸如配置服务器以转发消息或添加/删除电子邮件帐户这类任务功能 POP POP含义是邮局协议当前版本为3也称作POP3该协议是在RFC1939中定义POP是Internet上大多数人用来接收邮件机制它为每个用户每个邮箱定义支持这是它所做全部工作也是大多数问题根源在使用POP协议时人们熟悉很多功能如查看收到了多少新邮件消息功能POP根本不支持这些功能都内置到诸如Eudora或MicrosoftOutlook的类邮件中能为您记住接收上封邮件以及计算有多少新邮件这类信息因此使用JavaMailAPI时如果想获取这类信息将需要由自己进行计算 IMAP

基于Javamail的邮件收取类(可直接使用)

package com.neusoft.mail; import javax.mail.*; import java.io.*; import java.text.*; import java.util.*; import java.util.Enumeration; public class GetMail { String POP3Host=""; //POP3服?器 String mailServerPort="110";//POP3服?器端口号String user=""; //登?POP3服?器的?号 String password=""; //登?POP3服?器的密? boolean validate = true;//是否需要身??? Session session = null; Folder folder = null; Store store = null; //无参数的?造函数 public GetMail() {} public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPOP3Host() { return POP3Host; } public void setPOP3Host(String host) { POP3Host = host;

} public String mailServerPort() { return mailServerPort; } public void mailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public String getUser() { return user; } public void setUser(String user) { https://www.wendangku.net/doc/4b1301230.html,er = user; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } //?接?件服?器 public void connect() throws Exception{ //?建一个授????象 POP3Auth auth = new POP3Auth(); auth.setAccount(user,password); //取得一个Session?象 Properties prop=new Properties(); prop.put("mail.pop3.host",POP3Host); prop.put("mail.pop3.port", this.mailServerPort); prop.put("mail.pop3.auth", validate ? "true" : "false"); session = Session.getDefaultInstance(prop,auth); //取得一个Store?象

JavaMail

package com.mail.tool; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.text.DateFormat; import java.util.Date; import java.util.Properties; import java.util.StringTokenizer; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.BodyPart; import javax.mail.Flags; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Part; 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.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import com.mail.bean.MailBean; import https://www.wendangku.net/doc/4b1301230.html,erBean; import com.mail.dao.ReceiveDao; import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; public class MailManager { public int getUnreadCount(UserBean user){//读取未读邮件的个数,POP3没有此功能int count=0; try{ Properties props=new Properties();//创建一个空的配置 Session mailSession = Session.getInstance(props);//获取一个Session的实例

基于Javamail的邮件收发系统-使用说明

基于Javamail的邮件收发系统使用说明书 基于Javamail的邮件收发系统是一款简单、方便、快捷的邮件系统。它能实现邮件的接收与发送,并能完成附件的传输,具有较好的人机交互性,易于使用。 开发环境:JDK1.6 + Windows平台 开发技术:Javamail 开发工具:Eclipse3.4 运行环境:PC上需安装JDK1.6,且正确配置环境变量。 系统基本功能如下: (1) 收取并显示POP3邮件服务器上指定邮箱的邮件; (2) 使用SMTP邮件服务器发送邮件; (3) 邮件附件的发送与接受; (4) 删除邮件; 具体操作步骤如下: 1、打开javamailsystem文件夹,找到javamail.jar可执行文件,双击该执行文件,即可打开 Javamail邮件收发系统客户端软件。进入该系统后,首先选择“POP3/SMTP设置”按钮,对收发邮件所需的邮件服务器主机、收发邮件账号及密码信息进行设置。 图1-1邮件客户端主界面 设置举例如下:

POP3属性 POP3服务器:https://www.wendangku.net/doc/4b1301230.html,(或https://www.wendangku.net/doc/4b1301230.html,或https://www.wendangku.net/doc/4b1301230.html,) Email地址:shinning191@https://www.wendangku.net/doc/4b1301230.html,(ceshi2009ok@https://www.wendangku.net/doc/4b1301230.html,、qiufeng006@https://www.wendangku.net/doc/4b1301230.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) SMTP属性 SMTP服务器:https://www.wendangku.net/doc/4b1301230.html,(或https://www.wendangku.net/doc/4b1301230.html,或https://www.wendangku.net/doc/4b1301230.html,) Email地址:shinning191@https://www.wendangku.net/doc/4b1301230.html,(ceshi2009ok@https://www.wendangku.net/doc/4b1301230.html,\qiufeng006@https://www.wendangku.net/doc/4b1301230.html,) 账户名:shinning191(ceshi2009ok、qiufeng006) 密码:6857191(123456、28912786) 在对SMTP/POP3进行设置的时候,由于系统的缺陷,需要先对POP3进行属性设置,然后确定关闭该对话框;重新打开属性设置对话框,对SMTP进行属性设置,确定。这样便可以正确设置完邮件服务器的属性。 此系统对上述设置的信息具有存储功能,在这里,我们采用属性文件的形式存储SMT P 和POP3邮件服务器属性设置。相关属性值分别保存在pop3.properties和smtp.properties文

基于javamail的电子邮件收发系统-学位论文

目录 第1章概述 ............................................. 错误!未定义书签。 1.1研究目的和意义 ......................................................................... 错误!未定义书签。 1.2国内外发展趋势和现状 (2) 1.3 系统特点 .................................................................................... 错误!未定义书签。第2章相关技术和工具简介 (6) 2.1 Swing简介 (6) 2.2 Java Mail简介 (6) 2.3 Java平台简介 (7) 2.4 Eclipse简介 (7) 第3章系统需求分析和总体设计 (9) 3.1用户对电子邮件系统的需求 (9) 3.2产品可行性分析 (10) 3.3系统总体设计...................................... 错误!未定义书签。 3.3.1电子邮件系统的功能 (12) 3.3.2电子邮件收发过程 (13) 3.3.3服务器参数的设置 (14) 第4章详细设计 (15) 4.1 登录功能的设计 ............................................................................... 错误!未定义书签。 4.2发送邮件的设计 ......................................................................... 错误!未定义书签。 4.3接收邮件的设计 ......................................................................... 错误!未定义书签。 4.4邮件管理的设计 ......................................................................... 错误!未定义书签。第5章系统功能的编码实现 .............................. 错误!未定义书签。 5.1用户登录界面的实现 ................................................................. 错误!未定义书签。 5.2主界面的实现 (19) 5.3 邮件配置界面的实现 (20) 5.4 发送邮件界面的实现 (21)

Java邮件开发

第二章邮件传输协议 SMTP协议:简单邮件传输协议,它定义了邮件客户端于SMTP服务器之间,以及两台SMTP服务器之间的通信规则。SMTP协议的通信双方采用一问一答的命令/响应形式进行对话。 命令: Ehlo Auth Mailfrom: Rcptto: Data Quit 我们来看一个例子: 因为我们的用户名和密码,是需要加密的,所以我们先把用户名和密码加密,程序如下:import java.io.*; import sun.misc.BASE64Encoder; public class Base64Util { public static void main(String [] args) throws IOException{ System.out.print("请输入用户名:"); 更多的内容https://www.wendangku.net/doc/4b1301230.html,/en/ BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String username=in.readLine(); System.out.print("请输入密码:"); String password=in.readLine(); BASE64Encoder encoder=new BASE64Encoder(); System.out.println("编码后的用户名:"+encoder.encode(username.getBytes())); System.out.println("编码后的密码为:"+encoder.encode(password.getBytes())); } } 输入用户名和密码以后,会把加密后的用户名和密码给出来,然后我们打开命令提示符: 这个指令的意思,就是连接到https://www.wendangku.net/doc/4b1301230.html, 25是段口号。 返回220,表示成功连接。

基于Javamail的邮件收发系统-任务书

信息科学与工程学院 09 届本科生毕业设计(论文)任务书 学院信息科学与工程 学院 专业 计算机科学与技术 (师范) 班级 学号学生姓名指导教师 一、论文题目 基于Javamail的邮件收发系统 二、内容和要求 1.总体目标及性能(参数)要求 (1)系统功能基本完善。 (2)系统具有良好的用户界面。 (3)系统具有较好的人机交互性、易于使用。 (4)系统可靠、稳定,具有一定的应用价值。 2.研究内容及拟采用的技术路线 ●研究内容: (1)邮件服务器的工作原理。 (2)DNS服务器的工作原理。 (3)SMTP、POP3、MIME协议。 (4)设计并实现基于Javamail的邮件收发系统,要求系统具有邮件接收、发送等基本功能。 ●采用的技术路线: (1)开发工具采用Java+JavaMail API。 (2)数据库采用MySQL或SQL Server。

3.参考文献(10篇以上) [1] Java邮件开发详解。张孝祥。电子工业出版社,2007。 [2] Java高级程序设计。王路群主编。中国水利水电出版社, 2006 。 [3] Java课程设计。黄明, 梁旭, 周绍斌编著。电子工业出版社, 2006。 [4] Java开发与应用教程。王吴迪, 赵枫朝等编著。电子工业出版社, 2006。 [5] Java程序设计大学教程。刘艺等编著。机械工业出版社, 2006。 [6] Java数据库高级编程宝典。陈天河编著。电子工业出版社, 2005。 [7] Java程序设计与应用开发。於东军等编著。清华大学出版社, 2005。 [8] Java语言程序设计实训。赵海廷主编。武汉大学出版社, 2005。 [9] Java program design。Cohoon, James P.,Davidson, Jack W。McGraw-Hill Higher Education, 2004。 [10] Thinking in Java。Eckel, Bruce。Prentice Hall, c2000。 [11] Learning Java。Niemeyer, Patrick.,Knudsen, Jonathan。O'Reilly, 2000。

如何用javamail定时发送邮件

如何用javamail定时发送邮件 例如:我想在3天后的中午12:00发送给别人邮件 还有就是每天的中午12点给别人发送邮件,而且这些个邮件地址是从一个jsp传来的 例如今天给a@https://www.wendangku.net/doc/4b1301230.html,发,当执行过jsp后,jsp输入的是b@https://www.wendangku.net/doc/4b1301230.html,,以后就给b@https://www.wendangku.net/doc/4b1301230.html,发 而且jsp传过来的邮件地址数目是多个的,每天需要给多人在固定一时间内发邮件 定时触发器 有许多开源项目 Timer + 多线程 我在这里使用的Java计时器框架是由Java开发人员Tom White构建的一个简单通用的计划框架,以用于执行任意复杂的计划任务,他使我们实现灵活的计划策略成为可能。Java计时器框架的本身在这里不作过多的介绍,详细信息在IBM developerWorks中国网站。 我们主要讨论如何利用Java计时器框架在Solaris平台来实现邮件的定时发送、JavaMail发送邮件的实现以及在Solaris平台上如何以后台方式运行整个邮件定时发送的应用。 下载本文的源代码,参考具体实现。 1.1 形成schedule.jar包 schedule.jar包中的目录结构如下: 我们将数据库的连接、日志、邮件和计划框架的通用类形成一个与具体应用要求无关的schedule.jar包。利用javac将编译生成的目标class文件存在当前目录的classes文件夹下,然后通过jar -cvf schedule.jar ./*命令生成schedule.jar包。 1.1.1 Oracle数据库连接的建立 位于db目录下,通过thin方式建立与Oracle的数据库连接,具体的实现参见《J2EE应用中与Oracle数据库的连接》一文。 1.1.2 日志 以后台方式定时运行的应用应特别注意日志的功能,因为只有通过分析详细的日志信息才能准确掌握应用的执行情况。在logs目录下为Logs.java文件,代码如下: package com.j2ee.logs; import java.io.*; import java.util.*; import java.text.SimpleDateFormat;

JavaMail发送邮件实例-给多人发送、抄送

JavaMail,顾名思义,提供给开发者处理电子邮件相关的编程接口。它是Sun 发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序。 虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail 文件。 JavaMail包中用于处理电子邮件的核心类是: Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一个基本的邮件会话,它需要从Properties中读取类似于邮件服务器,用户名和密码等信息。 关键技术: 1、MimeMessage的setRecipients方法设置邮件的收件人,其中 Message.RecipientType.TO常量表示收件人类型是邮件接收者, https://www.wendangku.net/doc/4b1301230.html,常量表示收件人类型是抄送者, Message.RecipientType.BCC常量表示收件人的类型是密送着。 2、在调用MimeMessage的setRecipients方法时,除了可以指定收件人的类型外,还可以传入一个数组,指定多个收件人的地址。 SourceCode: import javax.mail.Address; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart;

基于javaMail电子邮件系统的设计(含源文件)

课程设计I报告题目:电子邮件系统设计 专业软件工程 学生姓名 ****** 班级学号 ********** 指导教师******** 指导单位计算机学院软件工程系日期2009.6.10——2008.6.22

1、课题名称 电子邮件系统设计 2、课题内容 设计一个电子邮件系统,包括客户端和服务器端的设计、邮件处理过程建模和具体功能的实现等。 3、系统分析 电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到 ISP 的邮件服务器,并放在其中的收信人邮箱中,收信人可随时上网到ISP 的邮件服务器进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。 现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。 本系统分析中给出了电子邮件服务器和电子邮件客户端的简介,同时给出了本次试验中客户端的主要功能和总体框图。 邮件服务器按照提供的服务类型,可以分为发送邮件服务器(简称发送服务器)和接收邮件服务器(简称接收服务器)。 发送邮件服务器使用邮件发送协议,现在常用的是SMTP,所以通常发送邮件服务器也称为SMTP服务器; 接收邮件服务器使用接收邮件协议,常用的有POP3协议和IMAP协议,所以通常接收邮件服务器也称为POP3服务器或IMAP服务器。 SMTP(Simple Mail Transfer Protocol),即简单邮件传输协议,是Internet传送E-mail的基本协议,也是TCP/IP协议组的成员。 SMTP协议解决邮件系统如何通过一条链路,把邮件从一台机器传送到另一台机器上的问题。 SMTP协议的特点是具有良好的可伸缩性,这也是它成功的关键。它既适用于广域网,也适用于局域网。 SMTP协议由于非常简单,使得它得到了广泛的运用,在Internet上能够发送邮件的

JavaMail技术

JavaMail技术 1.JavaMail介绍 现如今,使用email发送邮件非常普遍和常见,平时公司内部交流,网站上信息通知,注册时激活验证等地方都在使用邮件,Java也有关于发送和接收邮件技术封装。Java中提供的技术即就是要给大家介绍的JavaMail技术。 2.邮件协议 2.1.邮件服务器简介 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器和接收邮件的服务器。 发送邮件的服务器使用发送协议,现在常用的是SMTP协议。所以,通常发邮件的服务器也称为SMTP服务器。 接收邮件的服务器使用接收协议,现在常用的是POP3协议或IMAP协议,所以通常也被称为POP3或IMAP服务器。 目前经常见到的服务器为SMTP和POP3服务器。 例如:在注册了126的邮箱之后,它的发邮件服务器为https://www.wendangku.net/doc/4b1301230.html,:25,而收邮件服务器则为https://www.wendangku.net/doc/4b1301230.html,:110.(冒号后面的为端口号)。 当然,发邮件服务器和收邮件服务器也可能是同一台主机,但端口号一定不相同。默认发邮件服务器的端口为25,收邮件的端口为110。 2.2.邮件收/发协议 SMTP协议-发邮件协议 全称为Simple Mail Transfer Protocol(简单邮件传输协议),它定义了邮件客户端软件与SMTP 服务器之间、以及两台SMTP服务器之间的通讯规则。端口一般为25. POP3协议-收邮件协议

全称为Post Office Protocol(邮局协议),它定义了邮件客户端软件与POP3服务器的通讯规则。端口一般为110. IMAP协议-对POP3的扩展 全称为Internet Message Access Protocal(Internet消息访问协议),它是对POP3协议的一种扩展,定义了邮件客户端软件与IMAP服务器的通讯规则。 3.Apache的JavaMail使用 邮件客户端的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件。Sun公司制定了一套API,它封装了邮件通信的各种协议。为Java开发者提供了收发电子邮件的公共接口。但是由于Sun公司提供的那些接口比较麻烦,Apache对sun公司的技术进行了封装,使用Apache的mail技术,可以简单方便的发送邮件。 3.1.下载javamail的jar包 下载地址:https://www.wendangku.net/doc/4b1301230.html,/proper/commons-email/download_email.cgi 解压jar包,在项目中导入jar包。

基于JavaMailAPI的Web邮件系统开发

第28卷 第6期 2006年6月武 汉 理 工 大 学 学 报JOURNAL OF WUHAN UNIVERSITY OF TECHNOLOGY Vol.28 No.6 Jun.2006 基于JavaMail API 的Web 邮件系统开发 钟 珞,刘 玲,夏红霞 (武汉理工大学计算机科学与技术学院,武汉430070) 摘 要: E mail 通信在Java 服务器编程中占有非常重要的地位。阐述了Web 邮件系统所涉及的几个协议,对J2EE JavaM ail A PI 的结构框架和核心类进行了介绍,描述了系统架构,并给出了其中发送邮件功能的详细设计过程。Java M ail 结合JSP 的结构化特性,易于实现灵活高效、方便移植的Web 邮件应用程序。 关键词: JavaM ail AP I; 电子邮件; 邮件发送 中图分类号: T N 915.04文献标志码: A 文章编号:1671 4431(2006)06 0084 03 Development Research of Web Mail System Based on JavaMail API Z H ON G L uo ,LI U L ing,XIA H ong x ia (School o f Computer Science and T echnology ,Wuhan U niv ersity of T echno logy,Wuhan 430070,China) Abstract: E mail is the most important and ex tensive applicat ion of I nternet,it stands a v er y important position in Java server pr ogramming.T his paper first ex patiated on some protocols come down to the Web mail system,and then introduced the architecture and core classes of J2EE JavaM ail A PI.After that,the article presented the system framew ork and t he detailed de sign pr ocess of mail sending.In co nclusion,it can easily implement flexible,high effective and transplantable W eb mail applica tions with JavaM ail and structured JSP. Key words: JavaM ail API ; E mail; mail sending 收稿日期:2006 03 23. 基金项目:教育部高校行动计划智能科学与技术(2004XD 03).作者简介:钟 珞(1957 ),男,教授,博士生导师.E mail:liuling com 随着互联网的发展,人们使用最多的服务之一就是电子邮件,用户最初只能通过Outlook 、Foxm ail 等客户端软件来收发自己的邮件。随着Web 邮箱的面世,其快捷、方便的优点吸引了众多的网络用户。 对一般的电子邮件使用者来说,E mail 非常简单地执行邮件传输,但是对于编程人员来讲E mail 的打包、传输、发送和接收是很复杂的。这要涉及到很多协议,主要有发送电子邮件的SMT P 协议、用来接收电子邮件的POP3协议和Internet 邮件访问协议IMAP 以及多用途Internet 邮件扩充协议M IM E 。JavaM ail 就是Sun 发布的用来处理这些问题的统一的API,JavaMail 是J2EE 的核心部分,它定义一组抽象类和接口,通过Java 应用程序支持邮件系统。它封装了电子邮件的基本协议,编程人员可以不用自己去处理那些复杂的协议了。JavaMail API 可以使用在客户端也可以使用在服务器端。 1 相关邮件协议 简单邮件传输协议(SMT P)是为了保证电子邮件的可靠和高效传送,它通过TCP/IP 网络把消息从一个邮件服务器移动到其它邮件服务器(见图1)。SM TP 是Internet 电子邮件服务的基础,在TCP 上,它使用端口25进行传输,但是个简单的子协议,除传输邮件外不能完成诸如差错检测等其它功能,这些功能由POP 和IMAP 等高级邮件协议负责完成。邮局协议(POP)是个地位牢固的开放邮件标准。它依靠SMTP

基于JavaMail的邮件客户端程序的设计与实现

网络通讯与安全 电脑知识与技术 电脑知识与技术 1引言 一个完整的邮件系统由邮件客户端程序和邮件服务器程序组成,实现邮件系统所使用的邮件协议为MIME、SMTP、POP3和IMAP4协议,其中MIME协议用于定义邮件格式,SMTP协议用于传输邮件,POP3和IMAP4协议用于从邮件服务器接收邮件。 邮件客户端程序主要实现用户和邮件服务器的交互,用户使用它可以创建、发送、阅读、管理自己的邮件。目前流行的邮件客户端程序很多,比如大家熟悉OutLookExpress等。本文将介绍一种基于JavaMail的邮件客户端程序的设计与实现方法。 2JavaMail JavaMail是sun公司提供的用来开发邮件系统的软件包,它属于标准扩展API,仅包含在JDK1.4以上的版本和J2EE以上的 版本中 。JavaMail的体系结构如图1所示。 JavaMailAPI封装在mail.jar包中,其核心由抽象类层与Internet邮件类层两个部分组成(见图1)。其 中,抽象类层定义了与平台、底层协议无关的Email操作界面,其相关的类与接口定义在javax.mail包中;而Internet邮件类层则用于支持InternetMIME(RFC822)的标准,相关的类与接口被封装在javax.mail. internet包中。 此外,为了支持MIME标准,实现对多种媒体邮件格式的支持,JavaMailAPI中使用了JavaBeans的技术,需要Java激活框架的支持,因此,进行邮件系统开发时还需要用到JAFAPI,该API封装在activation.jar包中,相关的类与接口定义在javax.acti-vation包中。 3系统设计 JavaMailAPI使邮件的发送与接收得到大大的简化。本文所开发的邮件客户端程序是在JBuilder9环境下实现的,JBuilder9自带JDK1.4.1版本,不需额外下载mail.jar邮件开发包和activa-tion.jar激活框架包。主要实现如下基本功能: (1)收取并显示POP3邮件服务器上指定邮箱的邮件;(2)使用SMTP邮件服务器发送邮件;(3)邮件附件的发送与接收;(4)删除邮件。 邮件客户端程序的功能界面如图2所示。 图2邮件客户端程序的功能界面4系统技术实现 3.1环境配置和界面搭建 在JBuilder9中,创建工程后,首先为工程添加JavaMail和JavaBeansActivationFrameWork开发包,然后使用swing图形工具包搭建各个程序界面,并在使用JavaMailAPI的类文件中导入相关的API包,即在程序的开头添加下面的语句: importjavax.mail.*;importjavax.internet.*;importjavax.activation.*; 3.2设置邮件服务器参数的实现 用户在收发邮件时,需要设置邮件服务器主机、 收发邮件帐户及密码等信息。因此系统提供对上述信息的设置与存储的功能,这里,我们采用属性文件的形式存储SMTP和POP3邮件服务器属性设置。其文件名为smtpPop3.properties,位于工程的根目录下,可使用java.uitl.Properties类的setProperty()方法和getProperty()方法对属性文件中的属性内容进行存取。本系统smtpPop3.properties文件的内容格式如下: smtpPop3.pop3host=pop3邮件服务器地址(如pop3.sina.com.cn)smtpPop3.smtphost=smtp邮件服务器地址(如smtp.sina.com.cn)smtpPop3.address=收发邮件帐户(如xyz@sina.com)smtpPop3.username=用户名(如xyz)smtpPop3.password=密码(如797989)3.3创建与发送邮件功能的实现 发送邮件的基本过程为:点击主界面中的【创建邮件】 按钮后,弹出新邮件编辑窗体,在该窗体中编辑新邮件,选择邮件附件 收稿日期:2006-04-04 作者简介:杨淑萍(1963-),女,山西怀仁人,讲师,硕士,研究方向,电子商务技术;聂哲(1970-),男,湖南益阳人,副教授,硕士,研究方向,电子商务技术。 基于JavaMail的邮件客户端程序的设计与实现 杨淑萍,聂哲 (深圳职业技术学院软件工程系,广东深圳518055) 摘要:本文简述了JavaMail及其结构,详细阐述了使用JavaMail开发邮件客户端程序的方法,并给出了主要的实现代码,为邮件应用程序的进一步开发提供了基础。 关键词:JavaMail;邮件客户端程序;SMTP;POP3中图分类号:TP311文献标识码:A文章编号:1009-3044(2006)20-0106-03 DesignandImplementationofMailClientProgramBasedonJavaMail YANGShu-ping,NIEZhe (DepartmentofComputerSoftware,ShenzhenPolytechnic,Shenzhen518055,China) Abstract:ThispaperintroducesJavaMailandexpoundsthedevelopingmethodofmailclientprogramwithJavaMailindetail,Italsogivesoutthemainimplementcodesofmailclientprogrameandprovidesbaseofdevelopingmailapplication. Keywords:avaMail;mailclientprogram;SMPT;POP3 图1JavaMial体系结构106

基于Javamail的邮件收发系统论文

基于JavaMail的邮件收发系统 摘要 电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用它的人数势必会继续增加。本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP协议和POP协议从底层进行开发,利用JavaMail API为收发邮件提供与协议无关的访问。SMTP(简单邮件传输协议)是专门用来发送邮件的。POP (邮局协议)是专门用于接收邮件的。JavaMail API是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。 本文主要可分为四个部分。第一部分介绍了Javamail邮件系统的意义和现状。第二部分具体介绍了几种相关协议和Javamail API。第三部分主要介绍了系统的开发工具JA V A语言、Eclipse及其安装过程与配置方法。第四部分详细阐述了Javamail邮件收发系统的实现过程。 关键词:SMTP,POP,JA V AMAIL,邮件收发

MAIL SYSTEM BASED ON JAVAMAIL ABSTRACT E-Mail play a very important role in modern times. More and more people are using it, and the number of it will larger and larger. This paper introduced the javamail system's development background, analyzed and compared some existing maturity Email system at home and abroad , summarized their advantages and disadvantages, studied deeply with the javamail technology , proposed and designed out the mail system based on javamail. This system used POP protocol and SMTP protocol to develop from the bottom, used JavaMail API to provide the visit which has nothing to do with the agreement for send and receive email. SMTP (Simple Mail Transfer Protocol) is designed to send a message. POP (Post Office Protocol) is designed to receive mail. JavaMail API is an standard expansion package which is optional, can be used to read, write and send electronic messages. This paper can be divided into four parts. The first part introduced javamail email system's significance and status. The second part introduced several related agreements and JavaMail API. The third part mainly introduced system's development tools JA V A language , Eclipse and their installation process and configuration method. The fourth part detailed javamail email system's realization process. Keywords:SMTP, POP, JA V AMAIL, Email to send and receive

java收取和发送邮件 ssl

Java 收取和发送邮件+SSL 这里使用Gmail 邮箱测试1. 收取邮件 [java] view plaincopypackage lius.javamail.ssl; import java.io.UnsupportedEncodingException; import java.security.*; import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeUtility; /** * 用于收 取Gmail邮件* @author Winter Lau */ public class GmailFetch { public static void main(String argv[]) throws Exception { Security.addProvider(new https://www.wendangku.net/doc/4b1301230.html,.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "https://www.wendangku.net/doc/4b1301230.html,.ssl.SSLSocketFactory"; // Get a Properties object Properties props = System.getProperties(); props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY); props.setProperty("mail.pop3.socketFactory.fallback", "false"); props.setProperty("mail.pop3.port", "995"); props.setProperty("mail.pop3.socketFactory.port", "995"); //以下步骤跟一般的JavaMail操作相同Session session = Session.getDefaultInstance(props,null); //

相关文档