`
2277259257
  • 浏览: 515465 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

邮件---发送一封简单邮件

 
阅读更多

 JavaMail是SUN提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API。使用JavaMail,我们可以实现类似OutLook、FoxMail的软件。虽然JavaMail(仅支持JDK4及以上)也是Java的API之一,但是却没有直接加入到JDK中,所以我们需要另行下载。另外,JavaMail依赖JAF(JavaBeans Activation Framework),JAF在Java6之后已经合并到JDK中,而JDK5之前需要另外下载JAF的类库。下载地址如下:

JavaMail:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.5-oth-JPR

JavaMail spec:http://www.oracle.com/technetwork/java/javamail-1-149769.pdf

JAF:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jaf-1.1.1-fcs-oth-JPR

JavaMail下载好后,我们来看一下其主要内容:

README.txt:整体介绍JavaMail,需要看一下
docs/javadocs:The JavaMail API javadocs,需要看一下
mail.jar:包括JavaMail API和所有service providers,大部分用户只需要该jar包
lib/mailapi.jar	:只有JavaMail API
lib/imap.jar:The IMAP service provider
lib/smtp.jar:The SMTP service provider
lib/pop3.jar:The POP3 service provider
lib/dsn.jar:multipart/report DSN message support
demo:demo示例,简单了解,有需要再看

JavaMail包含两部分内容,一部分是JavaMail API,定义了一组平台无关、独立于通讯协议的邮件程序框架,该部分称为应用级接口,也就是供我们调用的部分,另一部分是service provider,该部分使用特定的协议语言来实现第一部分定义的抽象类和接口,这些协议包括:SMTP、NNTP、POP3、IMAP,如果让JavaMail与邮件服务器通信,就需要相应的协议支持,该部分称为服务提供者接口,也就是JavaMail自身需要的协议支持。在使用JavaMail时,通常我们只需将mail.jar放在classpath下使用,它包含了JavaMail API部分和SUN自己实现的service provider部分。可能也有特殊的时候,我们应用程序中需要自己实现service provider部分,那我们只需要mailapi.jar。下面通过几个类来简单认识下JavaMail API:

javax.mail.Session:上下文环境信息,如服务器的主机名、端口号、协议名称等
javax.mail.Message:邮件模型,发送邮件和接收邮件的媒介,封装了邮件的信息,如发件人、收件人、邮件标题、邮件内容等
javax.mail.Transport:连接邮件SMTP服务器,发送邮件
javax.mail.Store:连接邮件POP3、IMAP服务器,收取邮件

通过这些类,最终就可以实现收发邮件,一个发送邮件的简单示例:

public class JavaMailTest1 {
	public static void main(String[] args) throws MessagingException {
		Properties props = new Properties();
		// 开启debug调试
		props.setProperty("mail.debug", "true");
		// 发送服务器需要身份验证
		props.setProperty("mail.smtp.auth", "true");
		// 设置邮件服务器主机名
		props.setProperty("mail.host", "smtp.163.com");
		// 发送邮件协议名称
		props.setProperty("mail.transport.protocol", "smtp");
		
		// 设置环境信息
		Session session = Session.getInstance(props);
		
		// 创建邮件对象
		Message msg = new MimeMessage(session);
		msg.setSubject("JavaMail测试");
		// 设置邮件内容
		msg.setText("这是一封由JavaMail发送的邮件!");
		// 设置发件人
		msg.setFrom(new InternetAddress("java_mail_001@163.com"));
		
		Transport transport = session.getTransport();
		// 连接邮件服务器
		transport.connect("java_mail_001", "javamail");
		// 发送邮件
		transport.sendMessage(msg, new Address[] {new InternetAddress("java_mail_002@163.com")});
		// 关闭连接
		transport.close();
	}
}

最终运行后,邮件发送成功。由于我们开启了debug调试,在控制台可以看到JavaMail和服务器之间的交互信息记录,可以发现,和Java Mail(一):telnet实现发送收取邮件中telnet下的命令及服务器反馈信息基本一致。
创建Session对象时可能需要的属性详细信息如下:

Name Type Description
mail.debug boolean The initial debug mode. Default is false.
mail.from String The return email address of the current user, used by the InternetAddress methodgetLocalAddress.
mail.mime.address.strict boolean The MimeMessage class uses the InternetAddress method parseHeader to parse headers in messages. This property controls the strict flag passed to theparseHeader method. The default is true.
mail.host String The default host name of the mail server for both Stores and Transports. Used if themail.protocol.host property isn't set.
mail.store.protocol String Specifies the default message access protocol. The Session methodgetStore() returns a Store object that implements this protocol. By default the first Store provider in the configuration files is returned.
mail.transport.protocol String Specifies the default message transport protocol. The Session methodgetTransport() returns a Transport object that implements this protocol. By default the first Transport provider in the configuration files is returned.
mail.user String The default user name to use when connecting to the mail server. Used if the mail.protocol.user property isn't set.
mail.protocol.class String Specifies the fully qualified class name of the provider for the specified protocol. Used in cases where more than one provider for a given protocol exists; this property can be used to specify which provider to use by default. The provider must still be listed in a configuration file.
mail.protocol.host String The host name of the mail server for the specified protocol. Overrides the mail.host property.
mail.protocol.port int The port number of the mail server for the specified protocol. If not specified the protocol's default port number is used.
mail.protocol.user String The user name to use when connecting to mail servers using the specified protocol. Overrides themail.user property.

更新于2014.01.06

分享到:
评论

相关推荐

    java简单--邮件发送.txt

    下面是一个简单的示例代码片段,演示如何发送一封邮件: ```java import com.jzscce.ccliu.mail.SendMail; public class SimpleMailSender { public static void main(String[] args) { try { // 发送邮件 ...

    Java发送邮件 --- Apache Commns email

    总之,Apache Commons Email是一个强大的邮件发送工具,它的API简洁易用,覆盖了邮件发送的各种需求。通过这个库,开发者可以轻松地在Java应用程序中实现邮件功能,而无需深入理解底层的邮件协议细节。

    一个简单的邮件发送程序

    一封电子邮件通常包含头部信息(如发件人、收件人、主题等)和邮件正文。在C++程序中,这些信息会被组织成符合SMTP要求的格式,然后通过网络发送出去。 【邮件验证与安全】 为了确保邮件的安全性,邮件发送程序...

    简单Java邮件发送 Java实现邮件发送

    下面是一个简单的Java邮件发送示例,展示如何使用JavaMail API发送邮件: ```java import javax.mail.*; import javax.mail.internet.*; public class SimpleJavaMail { public static void main(String[] args)...

    spring-boot-mail邮件发送服务 v1.0.zip

    以下是一个简单的示例,展示如何发送一封纯文本邮件: ```java @Service public class MailService { @Autowired private JavaMailSender javaMailSender; public void sendSimpleMail(String to, String ...

    ASP-邮件发送

    接着,我们遍历查询结果,为每个用户创建并发送一封个性化的欢迎邮件。 总结来说,ASP邮件发送结合SQL数据库的应用,能够高效地处理批量发送邮件的需求,例如向订阅者发送新闻简报或向新用户发送注册确认邮件。通过...

    SAP 发送邮件 详细步骤

    - **发送邮件测试**:配置完成后,可以通过事务代码`SBWP`发送一封测试邮件至有效的外部邮箱地址。此时,邮件会被放入发送队列,等待后台作业触发发送。 - **常见错误代码及其含义**: - `718`:邮件发送成功。 - ...

    发送和接收邮件实例

    一个简易的用JSP实现邮件的接收与发送的程序,主要使用JavaMail组件,(1)创建一封邮件。(2)创建一个Session对象,以进行用户鉴别,控制对邮箱的存取,发送操作。(3)向一个收件箱列表中的邮箱发送邮件。(4)从...

    Python-使用GmailAPI和Python发送多个自定义电子邮件

    `create_message`函数构建了一个符合Gmail API要求的邮件对象,而`send_emails`函数则遍历邮件列表并发送每封邮件。 在实际应用中,你可以根据需要扩展这个功能,例如从数据库或CSV文件读取邮件数据,或者添加错误...

    使用Apache-commons-email发送邮件

    在`SendMail.java`这个示例文件中,我们很可能会看到如何使用这个库来创建并发送一封电子邮件。 首先,要使用Apache Commons Email,我们需要在项目中引入其依赖。如果是Maven项目,可以在pom.xml文件中添加如下...

    简易java邮件发送工具

    3. **Message**: 这个接口代表一封邮件,包含邮件的所有内容,如发件人、收件人、主题、正文、附件等。你可以使用`MimeMessage`类来创建和操作Message对象。 4. **Transport**: 这个接口用于实际发送邮件,通过`...

    邮件发送机. 一次可以发送1000个邮件很方便

    在IT行业中,邮件发送机是一种自动化工具,它能够批量发送电子邮件,极大地提高了工作效率,尤其适合于需要进行大规模通知、营销活动或数据交流的情况。标题提到的“邮件发送机”着重强调了其一次可发送1000个邮件的...

    信鸽邮件群发 - 基于HTTP和谈发送,成功率更高

    基于HTTP和谈发送,成功率更高 ...还可在发送是软件随机选择信纸,让宣布去的每一封信都不一样,如许不单美化了邮件内容,还彻底防止了因为很多发送一样内容的信,而被收信方邮件效劳器判别为渣滓邮件的能够。

    java邮件发送组件

    邮件发送组件通常包括SMTP(简单邮件传输协议)服务的集成,用于将邮件发送到指定的邮件服务器。 Java Mail API的基本概念包括Session、Message、Address和Store等。Session是整个邮件操作的上下文,用于管理邮件...

    C#下通过TLS发送邮件

    1. 引用库:在C#项目中,首先需要引用`System.Net.Mail`命名空间,这是处理邮件发送的基础。 2. 创建SmtpClient对象:`SmtpClient`类是C#用来与SMTP服务器交互的接口,你可以设置服务器地址、端口、凭据等信息。 3. ...

    简单电子邮件客户端的实现

    - `Message`:表示一封邮件。 - `Transport`:负责发送邮件。 - `Store`:代表邮件存储。 - `Folder`:表示邮件文件夹。 - **发送邮件流程**: - 创建`Session`对象。 - 构建`Message`对象。 - 获取`...

    VC简单邮件发送代码

    【VC简单邮件发送代码】是基于Visual C++ 6.0开发的一个小型应用程序,它主要用于实现基础的电子邮件发送功能。这个程序的核心在于利用SMTP(Simple Mail Transfer Protocol)协议,这是一种互联网标准,用于从一个...

    commos-email邮件发送类

    email.setText("这是一封测试邮件"); email.setHtmlText("这是HTML格式的测试邮件</p>"); MailSenderInfo senderInfo = new MailSenderInfo(); senderInfo.setHost("smtp.example.com"); senderInfo.setPort(587); ...

    linux邮件自动发送

    BODY="这是一封由Linux脚本自动发送的测试邮件。" # 使用mailx发送邮件 echo -e "$BODY" | mail -s "$SUBJECT" "$RECIPIENT" ``` 在这个脚本中,`echo -e` 用于输出包含特殊字符(如换行符)的字符串,`mail` 命令...

    网站用户注册成功后自动发送邮件

    在用户注册成功后,通常会发送一封欢迎邮件,这封邮件可能包含用户注册时的用户名、密码(如果未加密存储)或重置密码链接。这种做法既向用户确认了注册成功,也提供了必要信息以便他们访问和管理自己的账户。 为了...

Global site tag (gtag.js) - Google Analytics