Java的网络功能非常强大,开发和使用也非常简单,难怪microsoft极力要争回程序语言的霸主地位。根据smtp协议使用javamail写了一个发送邮件的程序,
实现的原理非常简单,首先建立和邮件服务器的连接,然后进行和服务器握手,然后发送smtp指令,并封装邮件体,然后发送即可。实例如下:
首先写一个类,用于得到与服务器连接的方式以及发件人收件人和邮件内容的信息:
package demo;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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 sun.misc.BASE64Encoder;
public class MailSender{
public void sendMail() throws Exception{
Properties props = new Properties();
props.put("mail.smtp.host", getHost());
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
session.setDebug(true);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(getFromAddr()));
message.addRecipient(Message.RecipientType.TO,new InternetAddress(getToAddr()));
message.setSubject(getTitle());
Multipart multipart = new MimeMultipart();
BodyPart contentPart = new MimeBodyPart();
contentPart.setText("这是我用Java程序发送的第一封邮件!呵呵!!!");//这里就是要发出去的邮件内容啦!
multipart. addBodyPart(contentPart);
if(getAttachPath() != null && getAttachName() != null){
BodyPart attachmentPart= new MimeBodyPart();
DataSource source = new FileDataSource(getAttachPath());
attachmentPart.setDataHandler(new DataHandler(source));
BASE64Encoder enc = new BASE64Encoder();
attachmentPart.setFileName("=?GBK?B?"+enc.encode(getAttachName().getBytes())+"?=");
multipart.addBodyPart(attachmentPart);
}
message.setContent(multipart);
message.saveChanges();
Transport transport = session.getTransport("smtp");
transport.connect(host,getUsername(),getPassword());
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
private String host = null;
private String fromAddr = null;
private String toAddr = null;
private String username = null;
private String password = null;
private String title = null;
private String attachPath = null;
private String attachName = null;
public String getHost(){
return host;
}
public void setHost(String host){
this.host = host;
}
public String getFromAddr(){
return fromAddr;
}
public void setFromAddr(String fromAddr){
this.fromAddr = fromAddr;
}
public String getToAddr(){
return toAddr;
}
public void setToAddr(String toAddr){
this.toAddr = toAddr;
}
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public String getPassword(){
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getTitle(){
return title;
}
public void setTitle(String title){
this.title = title;
}
public String getAttachPath(){
return attachPath;
}
public void setAttachPath(String attachPath){
this.attachPath = attachPath;
}
public String getAttachName(){
return attachName;
}
public void setAttachName(String attachName){
this.attachName = attachName;
}
}
好了,基本上可以实现连接邮件服务器并发送了,接下来该写测试类来测试是否能够正确发送邮件,写个测试类:
package demo;
public class MailTest {
public static void main(String[] args){
MailSender sender = new MailSender();
sender.setHost("smtp.163.com");
sender.setFromAddr("FromAddr@163.com");//发件人的邮箱地址
sender.setToAddr("ToAddr@163.com");//收件人的邮箱地址
sender.setUsername("邮箱用户名");
sender.setPassword("邮箱密码");
sender.setTitle("The first mail");//邮件的标题
try {
sender.sendMail();
} catch (Exception e){
e.printStackTrace();
}
}
}
那么也就实现发送邮件的功能了!!!
分享到:
相关推荐
在这个"java发送邮件完整程序"中,我们将会探讨如何使用Java语言来构建一个邮件发送功能,包括所需的库、步骤以及关键代码片段。 首先,Java Mail API是实现邮件发送的核心库,它提供了丰富的接口和类来处理邮件的...
java发送邮件工具类,用于java程序实现邮件的发送功能
本篇文章将深入探讨如何使用Java编写程序来实现邮件的发送,包括发送纯文本邮件、带有附件的邮件、包含图片的邮件以及在邮件中显示图片。 首先,我们得知道JavaMail API是实现邮件发送功能的关键库。它提供了一系列...
Java发送电子邮件是一个常见的任务,尤其在自动化通知、报表发送或者用户验证等场景中。下面将详细解释如何使用Java来发送邮件,并提供相关的知识点。 首先,Java通过JavaMail API提供了发送邮件的功能。JavaMail ...
Java发送邮件小程序是一种常见的开发任务,它允许程序员通过编程方式发送电子邮件。在Java中,这一功能主要通过JavaMail API来实现。以下是对标题和描述中涉及的知识点的详细解释: 1. **JavaMail API**: JavaMail ...
Java邮件发送程序是一种使用Java编程语言实现的软件应用,它允许开发者通过代码向指定的电子邮箱地址发送邮件。在Java中,我们主要依赖JavaMail API来实现这一功能。JavaMail API是一个开源库,提供了丰富的接口和类...
Java 实现邮件发送功能是许多开发者在开发过程中需要用到的基础技术之一。邮件发送功能不仅可以用于邮箱验证,例如在用户注册时确认邮箱的有效性,还可以用于发送系统通知、定期报告或者客户服务等场景。本教程将...
在Java编程环境中,Exchange协议是用于与Microsoft Exchange服务器交互的一种技术,主要用来发送、接收以及查询电子邮件。本文将深入探讨如何使用Java通过Exchange协议来实现这些功能,以及涉及的关键技术和库。 ...
"javaemail发送邮件(带附件)" javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名...
在提供的"TestMail"文件中,可能包含了一个测试邮件的示例代码或者配置文件,可以用来参考和学习如何在Java程序中实现邮件发送功能。通过分析和运行这个示例,开发者可以更好地理解和掌握JavaMail API的使用。 总之...
JavaMail是Java平台上的一个开源库,它提供了邮件发送和接收的功能。在JavaMail中,`javax.mail`和`javax.mail.internet`包是核心部分,包含了处理邮件的相关类和接口。 1. **配置JavaMail**: 在项目中,你需要配置...
在Java编程语言中,发送邮件是一项常见的任务,尤其在企业级应用中,它用于通知、报表或者客户服务等。本文将详细讲解如何使用Java发送邮件,并着重...通过熟练掌握这些知识点,你可以编写出高效、可靠的邮件发送程序。
Java SMTP 发送邮件是Java开发中常见的功能,用于在应用程序中实现邮件的自动化发送。SMTP(Simple Mail Transfer Protocol)是一种互联网标准,用于从一个邮件服务器向另一个邮件服务器发送电子邮件。以下将详细...
本篇文章将详细介绍如何使用Java语言编写一个简单的邮件发送程序。通过这个示例,读者可以学习到如何利用Java进行网络编程,尤其是如何与SMTP服务器交互来发送邮件。 #### 二、项目背景与目的 本项目来源于《编程...
JavaMail 是一个开源库,它提供了在Java应用程序中发送和接收电子邮件的能力。这个"java实现发送邮件jar文件"是JavaMail的一个实现,封装了SMTP(简单邮件传输协议)和其他相关协议,使得开发者能够轻松地集成邮件...
Spring框架提供了一种优雅的方式来处理这个任务,它整合了JavaMailSender接口和JavaMail API,使得在Java应用程序中发送邮件变得更加简单。让我们深入探讨这个主题。 首先,JavaMail API是Java用来处理邮件收发的...
### Java实现发送邮件知识点详解 #### 一、引言 电子邮件是互联网中最为常见的通信方式之一,被广泛应用于用户激活、密码重置、营销推广等多个场景。为了满足自动化的需求,通常采用程序化的方式进行邮件的发送。...
【邮件发送小程序(JAVA版)】是一个基于Java编程语言实现的工具,主要用于发送电子邮件。这个小程序可以帮助用户方便快捷地通过代码来发送邮件,是学习Java邮件API和进行自动化邮件发送任务的良好实例。以下是对该...