import java.util.Map;
import java.util.Properties;
/**
* 发送邮件需要使用的基本信息
*/
public class MailSenderInfo {
// 发送邮件的服务器的IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String toAddress;
// 登陆邮件发送服务器的用户名和密码
private String userName;
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名
private String[] attachFileNames;
//保存附件的文件名和地址
private Map<String, String> map;
//附件名称
private String affixName;
//附件地址
private String affixAddress;
public String getAffixName() {
return affixName;
}
public void setAffixName(String affixName) {
this.affixName = affixName;
}
public String getAffixAddress() {
return affixAddress;
}
public void setAffixAddress(String affixAddress) {
this.affixAddress = affixAddress;
}
public Map<String, String> getMap() {
return map;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
/**
* 获得邮件会话属性
*/
public Properties getProperties(){
Properties p = new Properties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", validate ? "true" : "false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort = mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] fileNames) {
this.attachFileNames = fileNames;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress = fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
}
2.
import javax.mail.*;
public class MyAuthenticator extends Authenticator{
String userName=null;
String password=null;
public MyAuthenticator(){
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName, password);
}
}
3.
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
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;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
* 简单邮件(不带附件的邮件)发送器
*/
public class SimpleMailSender {
/**
* 以文本格式发送邮件
* @param mailInfo 待发送的邮件的信息
*/
public boolean sendTextMail(MailSenderInfo mailInfo) {
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()) {
// 如果需要身份认证,则创建一个密码验证器
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = new InternetAddress(mailInfo.getToAddress());
mailMessage.setRecipient(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// 设置邮件消息的主要内容
String mailContent = mailInfo.getContent();
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
//添加附件
MimeBodyPart mbt1= new MimeBodyPart();
DataSource source = new FileDataSource(mailInfo.getAffixAddress());
//添加附件的内容
mbt1.setDataHandler(new DataHandler(source));
//添加附件的标题
//这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
mbt1.setFileName("=?GBK?B?"+enc.encode(mailInfo.getAffixName().getBytes())+"?=");
//放入邮件正文内容
MimeBodyPart mbt2= new MimeBodyPart();
mbt2.setText(mailContent);
multipart.addBodyPart(mbt2);
multipart.addBodyPart(mbt1);
//将multipart对象放到message中
mailMessage.setContent(multipart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
/**
* 以HTML格式发送邮件
* @param mailInfo 待发送的邮件信息
*/
public boolean sendHtmlMail(MailSenderInfo mailInfo){
// 判断是否需要身份认证
MyAuthenticator authenticator = null;
Properties pro = mailInfo.getProperties();
//如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()) {
authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
Message mailMessage = new MimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = new InternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = new InternetAddress(mailInfo.getToAddress());
// Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(new Date());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart multipart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
multipart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容
mailMessage.setContent(multipart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingException ex) {
ex.printStackTrace();
}
return false;
}
}
4.
public class SendEmailTest {
/**
* @param args
*/
public static void main(String[] args){
System.out.println("正在发送邮件...");
//这个类主要是设置邮件
MailSenderInfo mailInfo = new MailSenderInfo();
mailInfo.setMailServerHost("smtp.163.com");//smtp服务器
mailInfo.setMailServerPort("25");//服务器端口
mailInfo.setValidate(true);//需要验证
mailInfo.setUserName("yanqihubian@163.com");//用户名
mailInfo.setPassword("******");//您的邮箱密码
mailInfo.setFromAddress("yanqihubian@163.com");//发送人
mailInfo.setToAddress("yanqihubian@163.com");//收件人
mailInfo.setSubject("设置邮箱标题");//邮件标题
mailInfo.setContent("设置邮箱内容");//邮件内容
mailInfo.setAffixAddress("c:/yanqihubian.txt");//附件地址
mailInfo.setAffixName("中文标题123Xxx.txt");//附件名称
//这个类主要来发送邮件
SimpleMailSender sms = new SimpleMailSender();
boolean flag = sms.sendTextMail(mailInfo);//发送文体格式
// boolean flag = sms.sendHtmlMail(mailInfo);//发送HTML格式
if (flag)
System.out.println("发送邮件完毕!!!");
else
System.out.println("邮件发送失败!!!");
}
}
相关推荐
Java邮件发送是Java编程中一个常见的任务,主要利用JavaMail API来实现。以下是一些关于使用Java发送电子邮件的关键知识点: 1. **JavaMail API**: JavaMail API 是一套用于处理电子邮件的开源库,它允许Java开发者...
"javaemail发送邮件(带附件)" javaemail发送邮件(带附件)是使用Java技术实现的邮件发送功能,支持带附件的发送。下面是该功能的知识点总结: 1. 使用JavaMailSenderImpl类来发送邮件,需要设置SMTP服务器、用户名...
4. **创建Message对象**:`Message`对象代表邮件本身,使用`MimeMessage`类创建它,并设置发件人、收件人、主题和正文。例如: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new ...
Java Email 是一个强大的Java库,用于处理电子邮件的发送和接收。这个库允许开发者在Java应用程序中实现复杂的电子邮件功能,如创建、发送、读取和管理邮件。Java EMail 库通常依赖于两个核心组件,即 javax.mail-...
本篇文章将深入探讨如何使用Java编写程序来实现邮件的发送,包括发送纯文本邮件、带有附件的邮件、包含图片的邮件以及在邮件中显示图片。 首先,我们得知道JavaMail API是实现邮件发送功能的关键库。它提供了一系列...
2. **创建邮件消息(Message)**:接着,使用`MimeMessage`类创建一个邮件消息实例,设置发件人、收件人、主题和正文。 ```java MimeMessage message = new MimeMessage(session); message.setFrom(new Internet...
4. **构建Message**:使用MimeMessage类创建一个邮件消息实例,设置发件人、收件人、主题和邮件内容。邮件内容可以是纯文本、HTML或者带有附件。 ```java MimeMessage message = new MimeMessage(session); message...
创建`MimeMessage`对象并设置邮件信息,包括发件人、收件人、主题和正文: ```java MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress("your_email@example.com")); message....
3. **创建Message对象**:使用Session对象创建一个Message实例,设置邮件的基本信息,如发件人、收件人、主题和正文。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress...
【Java自动发邮件详解】 在Java中实现自动发送邮件的功能是一项常见的任务,尤其对于系统集成、通知服务等应用场景。这个示例中展示了一个基于Servlet的简单邮件发送系统,通过配置`web.xml`文件来初始化参数,并...
JavaEmail完整版是一个Java开发的电子邮件发送库,它允许开发者通过编程的方式发送电子邮件。这个源码包包含了完整的实现,提供了详细的示例和配置文件,使得开发者可以快速理解和使用。下面我们将详细探讨JavaEmail...
Java编程语言以其强大的功能和广泛的应用领域而闻名,其中之一就是能够通过编程方式发送电子邮件。在本文中,我们将深入探讨如何使用Java代码实现邮件发送,包括群发和添加附件的功能。 首先,要实现这个功能,我们...
以下是一个基于`commons-email-1.1`库的Java发邮件实例: 首先,确保你的项目已经正确地引入了`commons-email`库。这通常通过Maven或Gradle的依赖管理来完成。如果你使用的是Maven,可以在`pom.xml`文件中添加以下...
在Java编程语言中,发送电子邮件是一项常见的任务,尤其在自动化通知、系统消息传递或用户注册验证等场景下。本文将详细介绍如何使用Java实现发送邮件的实例,并提供所需的库和步骤。 首先,JavaMail API是Java中...
"java email邮件发送所需mail相关jar包"就是这样一个集合,它包含了执行邮件发送所需的类和方法。 邮件发送主要依赖于JavaMail API,这是一个开源的Java库,它提供了与邮件服务器交互的标准API。JavaMail API包括多...
Java邮件发送是一个常见的任务,尤其在企业级应用中,用于发送通知、验证码或者报告等。在Java中,我们可以使用JavaMail API来实现这个功能。JavaMail API是一个开源库,提供了丰富的接口和类来处理电子邮件的发送和...
3. `InternetAddress`:用于处理邮件地址,包括发件人、收件人、抄送人和密送人的地址。 4. `Transport`:负责实际的邮件发送,它使用`Session`创建并发送`Message`。 下面是一个简单的JavaMail邮件群发的步骤: ...
3. **创建Message对象**:`Message`是邮件内容的容器,可以设置主题、发件人、收件人、抄送人等信息,使用`MimeMessage`类实现。 4. **创建Transport对象**:`Transport`负责实际的邮件发送,通过`Session`获取`...
### 使用Java开发Email工具之发送邮件 在Java中开发电子邮件工具时,主要依赖于JavaMail API,这是一个功能强大的库,可以实现多种类型的邮件发送、接收等功能。本文将详细介绍如何使用JavaMail API来发送邮件,...