- 浏览: 21386 次
文章分类
- 全部博客 (32)
- JDK配置 (1)
- eclipse/myeclipse配置内存 (1)
- windows操作 (1)
- 测试方式 (1)
- 正则表达式小结 (1)
- JTable 使用细讲,好爽 (1)
- JButton的设置 (1)
- Apache和PHP的配置 (1)
- ant的介绍与使用 (1)
- MyEclipse 快捷键 (1)
- oracle (5)
- eclipse/myeclipse (2)
- tomcat (1)
- 异常 (1)
- java (4)
- ajax (1)
- 文件上传 (1)
- XMLHttpRequest (1)
- plsql (1)
- http协议 (1)
- java开发 (3)
- 开发软件操作 (1)
- eclipse/myeclipse 项目导入问题 (1)
- mysql (3)
- MSSQL (1)
- 项目部署 (0)
- 二维码 (1)
- svn (1)
最新评论
package sliver.utils;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.mail.internet.InternetAddress;
/**
* 邮件类
* @author cjy
* */
public class Mail {
String to = ""; // 收件人 xx@163.com
String from = ""; // 发件人 :yyyy@sina.com
String host = ""; // smtp主机 如163为:smtp.163.com
String username = ""; // 发信人的用户名
String password = ""; // 发信人的密码
String subject = ""; // 邮件主题
String content = ""; // 邮件正文
// 邮件附件的文件名
private String[] fileNames;
public Mail() {
}
public Mail(String to, String from, String host, String username,
String password, String subject, String content,String[] fileNames) {
this.to = to;
this.from = from;
this.host = host;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
this.fileNames = fileNames;
}
/**
* 把主题转换为中文
* @param strText
* @return String
*/
public String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),
"UTF-8"), "UTF-8", "B"); //GB2312
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}
/**
* 发送邮件
*
* @return 成功返回true,失败返回false
*/
public boolean toSend() {
// 构造mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", host); //指定连接的邮件服务器主机名
props.put("mail.smtp.auth", "true"); //指定客户端是否想邮件服务器提交认证
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
/* Authenticator类是抽象类,传递给getInstance方法的Authenticator对象只能是其子类的实例对象。
Authenticator对定义的该方法的返回值为null,
因此其子类必须覆盖该方法,由邮件开发人来实现。*/
try {
// 构造MimeMessage并设定基本的值,创建消息对象
MimeMessage msg = new MimeMessage(session);
// 设置消息内容
msg.setFrom(new InternetAddress(from));
System.out.println(from);
// 把邮件地址映射到Internet地址上
InternetAddress[] address = { new InternetAddress(to) };
/**
* setRecipient(Message.RecipientType type, Address
* address),用于设置邮件的接收者。<br>
* 有两个参数,第一个参数是接收者的类型,第二个参数是接收者。<br>
* 接收者类型可以是Message.RecipientType .TO,Message
* .RecipientType.CC和Message.RecipientType.BCC,TO表示主要接收人,CC表示抄送人
* ,BCC表示秘密抄送人。接收者与发送者一样,通常使用InternetAddress的对象。
*/
msg.setRecipients(Message.RecipientType.TO, address);
// 设置邮件的标题
subject = transferChinese(subject);
msg.setSubject(subject);
// 构造Multipart
Multipart mp = new MimeMultipart();
// 向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
// 设置邮件内容(纯文本格式)
// mbpContent.setText(content);
// 设置邮件内容(HTML格式)
mbpContent.setContent(content, "text/html;charset=utf-8");
// 向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
//附件
if(fileNames!=null && fileNames.length>0){
for(int i=0;i<fileNames.length;i++){
if(!Utils.isEmpty(fileNames[i])){
BodyPart fileContent = new MimeBodyPart();
DataSource source = new FileDataSource(fileNames[i]);
fileContent.setDataHandler(new DataHandler(source));
String fileName=fileNames[i].substring(fileNames[i].lastIndexOf("\\")+1,fileNames[i].length());
fileContent.setFileName(MimeUtility.encodeText(fileName,"UTF-8",null));
mp.addBodyPart(fileContent);
}
}
}
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* 发送邮件
*
* @param toMail
* 收件人地址
* @param fromMail
* 发送人地址,即发送者的用户名
* @param fromMailPassWord
* 发送者的邮箱密码
* @param subject 邮件主题
* @param content 邮件内容
* @return boolean 发送成功与否,true 成功
* */
public static boolean sendMail(String toMail, String fromMail,
String fromMailPassWord, String subject, String content,String[] fileNames) {
// 创建邮件
Mail mail = new Mail();
mail.setTo(toMail);
mail.setFrom(fromMail);// 你的邮箱
String host="hwimap.exmail.qq.com";
mail.setHost(host);// 发送者的邮箱主机 "smtp.sina.com"
mail.setUsername(fromMail);// 发件用户
mail.setPassword(fromMailPassWord);// 发件人密码
mail.setSubject(subject);
mail.setContent(content);
mail.setFileNames(fileNames);
boolean send=mail.toSend();
if (send) {
System.out.println("您的申请已提交成功,请查看您邮箱:" + toMail);
} else {
System.out.println("操作失败,轻稍后重新尝试!");
}
return send;
}
public static void main(String[] args) {
String[] str={"C:\\Program Files\\菜品.txt","C:\\Program Files\\支付宝扫码开票方案-2.0版.pdf"};
Mail.sendMail("735115975@qq.com", "cjy@blibao.cn", "Winbox473JY", "徐远方", "请到二楼办公室!",str);
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
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 getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String[] getFileNames() {
return fileNames;
}
public void setFileNames(String[] fileNames) {
this.fileNames = fileNames;
}
}
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import javax.mail.internet.InternetAddress;
/**
* 邮件类
* @author cjy
* */
public class Mail {
String to = ""; // 收件人 xx@163.com
String from = ""; // 发件人 :yyyy@sina.com
String host = ""; // smtp主机 如163为:smtp.163.com
String username = ""; // 发信人的用户名
String password = ""; // 发信人的密码
String subject = ""; // 邮件主题
String content = ""; // 邮件正文
// 邮件附件的文件名
private String[] fileNames;
public Mail() {
}
public Mail(String to, String from, String host, String username,
String password, String subject, String content,String[] fileNames) {
this.to = to;
this.from = from;
this.host = host;
this.username = username;
this.password = password;
this.subject = subject;
this.content = content;
this.fileNames = fileNames;
}
/**
* 把主题转换为中文
* @param strText
* @return String
*/
public String transferChinese(String strText) {
try {
strText = MimeUtility.encodeText(new String(strText.getBytes(),
"UTF-8"), "UTF-8", "B"); //GB2312
} catch (Exception e) {
e.printStackTrace();
}
return strText;
}
/**
* 发送邮件
*
* @return 成功返回true,失败返回false
*/
public boolean toSend() {
// 构造mail session
Properties props = System.getProperties();
props.put("mail.smtp.host", host); //指定连接的邮件服务器主机名
props.put("mail.smtp.auth", "true"); //指定客户端是否想邮件服务器提交认证
Session session = Session.getDefaultInstance(props,
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
/* Authenticator类是抽象类,传递给getInstance方法的Authenticator对象只能是其子类的实例对象。
Authenticator对定义的该方法的返回值为null,
因此其子类必须覆盖该方法,由邮件开发人来实现。*/
try {
// 构造MimeMessage并设定基本的值,创建消息对象
MimeMessage msg = new MimeMessage(session);
// 设置消息内容
msg.setFrom(new InternetAddress(from));
System.out.println(from);
// 把邮件地址映射到Internet地址上
InternetAddress[] address = { new InternetAddress(to) };
/**
* setRecipient(Message.RecipientType type, Address
* address),用于设置邮件的接收者。<br>
* 有两个参数,第一个参数是接收者的类型,第二个参数是接收者。<br>
* 接收者类型可以是Message.RecipientType .TO,Message
* .RecipientType.CC和Message.RecipientType.BCC,TO表示主要接收人,CC表示抄送人
* ,BCC表示秘密抄送人。接收者与发送者一样,通常使用InternetAddress的对象。
*/
msg.setRecipients(Message.RecipientType.TO, address);
// 设置邮件的标题
subject = transferChinese(subject);
msg.setSubject(subject);
// 构造Multipart
Multipart mp = new MimeMultipart();
// 向Multipart添加正文
MimeBodyPart mbpContent = new MimeBodyPart();
// 设置邮件内容(纯文本格式)
// mbpContent.setText(content);
// 设置邮件内容(HTML格式)
mbpContent.setContent(content, "text/html;charset=utf-8");
// 向MimeMessage添加(Multipart代表正文)
mp.addBodyPart(mbpContent);
//附件
if(fileNames!=null && fileNames.length>0){
for(int i=0;i<fileNames.length;i++){
if(!Utils.isEmpty(fileNames[i])){
BodyPart fileContent = new MimeBodyPart();
DataSource source = new FileDataSource(fileNames[i]);
fileContent.setDataHandler(new DataHandler(source));
String fileName=fileNames[i].substring(fileNames[i].lastIndexOf("\\")+1,fileNames[i].length());
fileContent.setFileName(MimeUtility.encodeText(fileName,"UTF-8",null));
mp.addBodyPart(fileContent);
}
}
}
msg.setContent(mp);
msg.setSentDate(new Date());
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* 发送邮件
*
* @param toMail
* 收件人地址
* @param fromMail
* 发送人地址,即发送者的用户名
* @param fromMailPassWord
* 发送者的邮箱密码
* @param subject 邮件主题
* @param content 邮件内容
* @return boolean 发送成功与否,true 成功
* */
public static boolean sendMail(String toMail, String fromMail,
String fromMailPassWord, String subject, String content,String[] fileNames) {
// 创建邮件
Mail mail = new Mail();
mail.setTo(toMail);
mail.setFrom(fromMail);// 你的邮箱
String host="hwimap.exmail.qq.com";
mail.setHost(host);// 发送者的邮箱主机 "smtp.sina.com"
mail.setUsername(fromMail);// 发件用户
mail.setPassword(fromMailPassWord);// 发件人密码
mail.setSubject(subject);
mail.setContent(content);
mail.setFileNames(fileNames);
boolean send=mail.toSend();
if (send) {
System.out.println("您的申请已提交成功,请查看您邮箱:" + toMail);
} else {
System.out.println("操作失败,轻稍后重新尝试!");
}
return send;
}
public static void main(String[] args) {
String[] str={"C:\\Program Files\\菜品.txt","C:\\Program Files\\支付宝扫码开票方案-2.0版.pdf"};
Mail.sendMail("735115975@qq.com", "cjy@blibao.cn", "Winbox473JY", "徐远方", "请到二楼办公室!",str);
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
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 getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String[] getFileNames() {
return fileNames;
}
public void setFileNames(String[] fileNames) {
this.fileNames = fileNames;
}
}
发表评论
-
图片问题
2018-02-26 15:18 401一、用Thumbnails工具类实现 二、文件流实现 图片尺寸 ... -
java工程转变为web工程
2017-08-10 11:43 423有时候将web工程导入eclipse中,会变为一般的java工 ... -
java操作Excel
2017-07-29 14:04 576JAVA EXCEL API:是一开放源 ... -
拦截器与过滤器
2017-06-01 09:05 568过滤器,是在java web中,你传入的request,res ... -
ajax上传文件 与下载
2016-03-01 17:10 626ajax上传 后台处理 import java.io.Buf ...
相关推荐
Java邮件发送组件是Java开发中用于发送电子邮件的工具,它使得开发者能够轻松地在应用程序中实现邮件功能。Java Mail API是实现这一功能的核心库,它提供了丰富的接口和类,允许程序进行邮件的创建、发送以及处理。...
此外,如果发送大量邮件,记得考虑邮件发送频率和并发控制,避免被邮件服务器视为垃圾邮件。 通过学习和理解这些知识点,你将能够利用Java实现在各种场景下发送带模板的邮件功能,为你的应用程序添加更丰富的通信...
在本文中,我们将深入探讨如何利用Java实现邮件发送,涉及的关键知识点包括SMTP协议、JavaMail API以及相关的源码示例。 首先,我们需要理解SMTP(Simple Mail Transfer Protocol)协议,它是互联网上用于传输电子...
如果你有`Java发邮箱(带附件).docx`文档,可以参考其中的示例代码进行学习,同时,`MailSendBean`可能是封装邮件发送逻辑的Java Bean类,包含了上述步骤的各个部分,便于代码组织和重用。 总的来说,理解Java ...
在Java中,我们主要依赖JavaMail API来实现SMTP邮件发送功能。JavaMail API提供了一组接口和类,使得开发者能够方便地在Java应用中创建和发送邮件。 1. **引入依赖** 要使用JavaMail API,我们需要在项目中引入`...
为了快速掌握邮件业务类的核心逻辑和企业邮件的日常服务,我们需要了解相关的邮件协议和Java 提供的邮件发送API。 首先,了解 SMTP 协议是非常必要的。SMTP 全称为 Simple Mail Transfer Protocol(简单邮件传输...
总之,“多线程发邮件”利用了Java的多线程和并发特性,通过ExecutorService和Callable接口实现了邮件发送的并行化,提高了效率。同时,使用线程池可以更好地管理资源,避免频繁的线程创建和销毁,从而优化系统性能...
Java邮件发送包`mail.jar`是Java开发中用于实现电子邮件发送功能的重要库文件。这个包主要基于JavaMail API,它提供了全面的接口和类,帮助开发者处理SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息...
总的来说,"Java邮件系统-javaweb项目"是一个涵盖了Java Web开发全栈的实践案例,涉及了服务器端编程、前端页面开发、数据库操作、邮件处理和安全控制等多个方面。无论是对于初学者还是经验丰富的开发者,都能从中...
本文将详细介绍如何使用Java不依赖额外的jar包,如JavaMail API,来实现邮件发送功能,并避免出现字符编码问题。 首先,Java提供了一个内置的`java.net.Socket`类,通过连接SMTP(Simple Mail Transfer Protocol)...
本教程将向你展示如何使用Java超简单地实现邮件发送功能,并且能够动态控制发送邮件的人数。 首先,JavaMail API是Java中用于发送邮件的核心库。它提供了一系列接口和类,如`Session`、`Message`、`Multipart`和`...
在实际开发中,推荐使用JavaMail API或者Apache Commons Email库,它们提供了更加稳定且易于使用的邮件发送接口,能够处理复杂的邮件格式和认证机制,同时提供了更好的异常处理和兼容性。然而,直接使用Socket连接...
Java发送邮件是开发过程中常见的一项任务,特别是在自动化通知、数据报告或者用户互动方面。要实现这个功能,开发者通常需要引入一些...正确理解和运用这些知识点,可以让你在Java环境中实现高效、可靠的邮件发送功能。
SMTP(Simple Mail Transfer Protocol)是电子邮件发送的标准协议,而授权码是QQ邮箱为了安全考虑提供的代替密码的认证方式。 4. **邮件服务器配置**: 配置JavaMailSender时,需要填写QQ邮箱的SMTP服务器地址(如...
Java发送邮件及邮件附件是...虽然这提供了一种自定义和控制邮件发送过程的方法,但在实际开发中,更常见的是使用JavaMail API或Apache Commons Email库,它们提供了更高级别的抽象和错误处理,使邮件发送变得更加便捷。
Java Socket电子邮件发送与接收是基于Java网络编程技术实现的一种通信方式,主要涉及到Java的Socket类以及Email相关的API。本项目是一个课程项目,开发者通过几天的努力完成了一个具备图形用户界面(GUI)的邮件系统...
综上所述,Java开发的邮件代理服务器是一个集成了多种Java技术的复杂系统,它涉及网络编程、数据库操作、邮件协议处理、安全加密、并发控制等多个领域,体现了Java作为企业级开发语言的强大能力。开发者在构建这样的...
Java邮件管理模块是一个用于处理电子邮件发送、接收和管理的软件组件,特别适合初学者学习JSP(JavaServer Pages)技术。这个模块可以帮助开发者构建Web应用中的邮件功能,例如注册确认邮件、密码重置请求或者日常...