`
孔雀王子
  • 浏览: 42009 次
  • 性别: Icon_minigender_1
  • 来自: 河北
文章分类
社区版块
存档分类
最新评论
阅读更多

JavaMail的发送
一、邮件发送API的体系结构
1、从Session对象中或地实现了某种邮件发送协议的Transport对象。
2、使用Session对象创建Message对象,并调用Message对象的方法封装邮件数据。
3、连接指定的SMTP服务器,并调用Transport对象中的邮件发送方法发送Message对象中封装的邮件数据。
二、邮件发送常用类介绍
Session类:javax.mail.Session类用于定义整个JavaMail应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接受协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。下面是一些常用的方法。
getInstance与getDefaultInstance方法:
静态方法,都可用于获得Session类的实例对象。由于Session类的构造函数是私有的,所以应用程序必须调用getInstance方法或getDefaultInstance方法获得Session类的实例对象。
Transport类:javax.mail.Transport 类继承了javax.mail.Server类,用于连接SMTP服务器,并把包含在Message对象中的邮件数据发送的SMTP服务器。
Connect方法:用于建立与邮件服务器之间的连接。
Public void connect();
Public void connect(String host,String user,String password)
Public void connect(String host,int port,String user,String password)
sendMessage方法:向指定的邮件地址发送邮件。格式如下:
public abstract void sendMessage(Message msg,Address[] address)
这是一个非静态方法,必须得到Transport实例对象后才能被调用,sendMessage方法在发送邮件前不会调用自动调用Message.saveChanges()方法,JavaMail程序必须在调用这个方法前,潜泳代表被发送邮件的Message对象的saveChanges()方法。
Close方法:用于断开与服务器之间的连接。格式如下:
Public void close();
Send方法:提供了一种发送邮件的简便方式,它是Transport类中的静态方法。格式如下:
Public static void send(Message msg)
Public static void send(Message msg,Address [] address)
应用程序可以直接调用Transport.send 方法发送邮件。Send方法执行邮件发送任务时,他首先从参数Message对象中获得Session对象(创建MimeMessage对象时要伟器构造方法传入一个Session对象),然后调用Session.getTransport方法获得用于发送邮件的Transport实例对象,接着再使用保存在Session对象中的与网络连接相关的JavaMail属性,调用Transport对象的sendMessage方法发送邮件,最后调用close方法,断开与服务器的连接。可见,send方法内部一次调用了getTransport,connect,sendMessage和close方法,它可用作发送邮件的一种简单方法。
好了,我们简单的介绍了一些方法,那么我们再来看一个邮件发送程序的实例。
首先,我们要了解使用JavaMail API发送程序要执行如下三个步骤:
1、创建包含邮件服务器的网络连接信息的Session对象。
2、创建代表邮件内容Message对象。
3、从Session对象中获得Transport对象,并调用它的方法发送Message对象。
三、案例
SendMail.java代码清单如下:

package cn.csdn.sendmail; 
import java.util.Properties; 
import javax.activation.DataHandler; 
import javax.activation.FileDataSource; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
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; 
public class SendMail { 
public static void main(String[] args) throws MessagingException { 
Properties props = new Properties(); 
props.setProperty("mail.host", "smtp.163.com"); 
props.setProperty("mail.transport.protocol", "smtp"); 
props.setProperty("mail.smtp.auth", "true"); 
Session session = Session.getDefaultInstance(props); 
Message msg = createMessage(session); 
Transport tt = session.getTransport(); 
System.out.println("正在连接中...."); 
tt.connect("dyzh.yysg", "system797836"); 
System.out.println("连接完毕!"); 
System.out.println("正在发送中...."); 
tt.sendMessage(msg, msg.getAllRecipients()); 
System.out.println("发送完毕!"); 
System.out.println("正在关闭...."); 
tt.close(); 
System.out.println("完成!"); 
} 
public static Message createMessage(Session session) { 
MimeMessage message = new MimeMessage(session); 
try { 
message.setFrom(new InternetAddress("dyzh.yysg@163.com")); 
message.setRecipient(Message.RecipientType.TO, new InternetAddress( 
"605880319@qq.com")); 
message.setSubject("来自JavaMail开发者!"); 
MimeBodyPart text = new MimeBodyPart(); 
text 
.setContent( 
"尊敬的用户,您好!我们正在做JavaMail测试....<br/><img src='cid:201103.jpg'>", 
"text/html;charset=utf-8"); 
MimeBodyPart image = new MimeBodyPart(); 
image.setDataHandler(new DataHandler(new FileDataSource( 
"src\\201103.jpg"))); 
image.setContentID("201103.jpg"); 
MimeMultipart mm = new MimeMultipart(); 
mm.addBodyPart(text); 
mm.addBodyPart(image); 
mm.setSubType("related"); 
message.setContent(mm); 
message.saveChanges(); 
} catch (AddressException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (MessagingException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
return message; 
} 
} 

 

于2011年3月3日

 

分享到:
评论

相关推荐

    JavaMail发送邮件(文本、html、附件)

    这个标题"JavaMail发送邮件(文本、html、附件)"涵盖了使用JavaMail API发送不同格式邮件的核心功能。下面将详细介绍如何利用JavaMail发送文本、HTML和包含附件的邮件,以及在实际应用中需要注意的配置步骤。 1. *...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    ### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...

    javamail发送邮件.zip

    这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    在使用JavaMail发送邮件前,你需要在项目中引入相关的依赖包。在描述中提到的"javamail"可能是指JavaMail的jar包,这是进行邮件操作的基础。确保你的项目已包含以下两个关键的JavaMail库: 1. `javax.mail-api.jar`...

    用javaMail发送邮件

    下面是一个简单的JavaMail发送邮件的步骤: 1. **导入必要的库**:首先,在项目中导入`mail.jar`和`activation.jar`,确保编译和运行时能够访问到这些库。 2. **配置邮件会话**:创建一个`Properties`对象,设置...

    用Java类实现JavaMail发送邮件的例子

    在这个例子中,我们将详细探讨如何使用JavaMail发送邮件,包括SMTP认证、添加附件以及发送HTML内容的邮件。 首先,为了使用JavaMail API,我们需要引入相应的库。在这个例子中,`javamail`和`JAF`(JavaBeans ...

    利用JavaMail发送邮件的实例,可以直接运行

    8. **使用JavaMail发送HTML邮件**:通过设置`MimeMessage`的`setContent()`方法,可以发送包含HTML的邮件。 ```java message.setContent("&lt;h1&gt;HTML邮件标题&lt;/h1&gt;&lt;p&gt;这是HTML邮件正文。&lt;/p&gt;", "text/html;charset=...

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    javamail发送邮件实例

    JavaMail 是一个强大的开源库,用于在Java应用程序中发送...以上就是使用JavaMail发送邮件的详细过程,以及与文本编辑器KindEditor的集成方式。在开发过程中,记得根据具体需求调整和优化代码,以满足不同的业务场景。

    javamail发送html邮件

    JavaMail API 是一个用于发送、接收电子邮件的标准接口集合,它支持多种协议(如 SMTP、IMAP 和 POP3),使得 Java 应用程序能够轻松地发送和接收电子邮件。 #### 二、发送 HTML 格式的邮件 在实际应用中,经常需要...

    javamail发送、接收邮件

    通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件功能。 ### javamail发送、接收邮件 JavaMail API是由Sun Microsystems开发...

    javamail发送邮件小程序,类以及写好,只要放包,下载一个就可以

    JavaMail 是一个开源的 Java 库,用于在 Java 应用程序中实现电子邮件的发送和接收。这个小程序可能包含了一套完整的类,可以帮助开发者快速构建邮件发送功能,无需从头开始编写所有必需的代码。 JavaMail 提供了对...

    javamail 发送邮件 实例

    下面,我们将深入探讨使用JavaMail发送邮件的实例。 首先,确保你的项目中已经包含了JavaMail的相关依赖。通常,这可以通过在Maven或Gradle的构建文件中添加对应的依赖完成。例如,对于Maven,可以在pom.xml文件中...

    javaMail发送邮件依赖的jar包源码整理

    这个“javaMail发送邮件依赖的jar包源码整理”提供了关于如何使用 JavaMail 发送邮件以及相关库的源代码,这对于理解其工作原理和自定义功能非常有帮助。 在JavaMail中,主要涉及以下几个核心组件: 1. **JavaMail...

    完整的javamail发送邮件源码

    这个“完整的javamail发送邮件源码”提供了一种直接可用的解决方案,帮助开发者快速集成邮件发送功能到他们的项目中。以下是对JavaMail核心知识点的详细解析: 1. JavaMail API:JavaMail API 是一组用于处理邮件的...

    javaMail发送邮件的jar包

    使用JavaMail发送邮件的基本步骤如下: 1. **导入依赖**: 首先,你需要将上述提到的JAR文件添加到项目的类路径中,确保Java程序可以访问这些库。 2. **配置属性**: 创建一个`Properties`对象,设置邮件服务器的...

    JavaMail发送给多人,添加多个附件

    javaMail

    利用JavaMail发送邮件示例

    这个示例将详细介绍如何在Java应用程序中使用JavaMail发送邮件。 首先,我们需要引入JavaMail相关的依赖。如果你使用的是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.sun.mail&lt;/groupId&gt; ...

    javamail发送邮件的简单实例

    javamail发送邮件的简单实例

Global site tag (gtag.js) - Google Analytics