大周一的,上班没带耳机
pom文件依赖
<!--mail--> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>smtp</artifactId> <version>1.5.2</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>mailapi</artifactId> <version>1.5.2</version> <type>jar</type> <scope>compile</scope> </dependency>
package com.ssm.boot.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
/**
* Created by my on 2018/5/14.
*/
public class MailService {
private static String defaultSenderName = "########";// 默认的发件人用户名,defaultEntity用得到
private static String defaultSenderPass = "########";// 默认的发件人密码,defaultEntity用得到
private static String defaultSmtpHost = "smtp.163.com";// 默认的邮件服务器地址,defaultEntity用得到
private String smtpHost; // 邮件服务器地址
private String sendUserName; // 发件人的用户名
private String sendUserPass; // 发件人密码
private MimeMessage mimeMsg; // 邮件对象
private Session session;
private Properties props;
private Multipart mp;// 附件添加的组件
private List<FileDataSource> files = new LinkedList<FileDataSource>();// 存放附件文件
private void init() {
if (props == null) {
props = System.getProperties();
}
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.auth", "true"); // 需要身份验证
session = Session.getDefaultInstance(props, null);
// 置true可以在控制台(console)上看到发送邮件的过程
session.setDebug(true);
// 用session对象来创建并初始化邮件对象
mimeMsg = new MimeMessage(session);
// 生成附件组件的实例
mp = new MimeMultipart();
}
private MailService(String smtpHost, String sendUserName, String sendUserPass, String to, String cc, String mailSubject, String mailBody,List<String> attachments) {
this.smtpHost = smtpHost;
this.sendUserName = sendUserName;
this.sendUserPass = sendUserPass;
init();
setFrom(sendUserName);
setTo(to);
setCC(cc);
setBody(mailBody);
setSubject(mailSubject);
if (attachments != null) {
for (String attachment : attachments) {
addFileAffix(attachment);
}
}
}
/**
* 邮件实体
*
* @param smtpHost 邮件服务器地址
* @param sendUserName 发件邮件地址
* @param sendUserPass 发件邮箱密码
* @param to 收件人,多个邮箱地址以半角逗号分隔
* @param cc 抄送,多个邮箱地址以半角逗号分隔
* @param mailSubject 邮件主题
* @param mailBody 邮件正文
* @param attachments 附件路径
* @return
*/
public static MailService entity(String smtpHost, String sendUserName, String sendUserPass, String to, String cc, String mailSubject, String mailBody,List<String> attachments) {
return new MailService(smtpHost, sendUserName, sendUserPass, to, cc, mailSubject, mailBody, attachments);
}
/**
* 默认邮件实体,用了默认的发送帐号和邮件服务器
*
* @param to 收件人,多个邮箱地址以半角逗号分隔
* @param cc 抄送,多个邮箱地址以半角逗号分隔
* @param subject 邮件主题
* @param body 邮件正文
* 附件全路径
* @return
*/
public static MailService defaultEntity(String to, String cc, String subject, String body, List<String> attachments) {
return new MailService(defaultSmtpHost, defaultSenderName, defaultSenderPass, to, cc, subject, body, attachments);
}
/**
* 设置邮件主题
*
* @param mailSubject
* @return
*/
private boolean setSubject(String mailSubject) {
try {
mimeMsg.setSubject(mailSubject);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
*
* @param mailBody
* @return
*/
private boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>" + mailBody, "text/html;charset=UTF-8");
// 在组件上添加邮件文本
mp.addBodyPart(bp);
} catch (Exception e) {
System.err.println("设置邮件正文时发生错误!" + e);
return false;
}
return true;
}
/**
* 添加一个附件
*
* @param filename 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
* @return
*/
public boolean addFileAffix(String filename) {
try {
if (filename != null && filename.length() > 0) {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(MimeUtility.encodeText(fileds.getName(), "utf-8", null)); // 解决附件名称乱码
mp.addBodyPart(bp);// 添加附件
files.add(fileds);
}
} catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
return true;
}
/**
* 删除所有附件
*
* @return
*/
public boolean delFileAffix() {
try {
FileDataSource fileds = null;
for (Iterator<FileDataSource> it = files.iterator(); it.hasNext(); ) {
fileds = it.next();
if (fileds != null && fileds.getFile() != null) {
fileds.getFile().delete();
}
}
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置发件人地址
*
* @param from 发件人地址
* @return
*/
private boolean setFrom(String from) {
try {
mimeMsg.setFrom(new InternetAddress(from));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置收件人地址
*
* @return
*/
private boolean setTo(String to) {
if (to == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 设置抄送
*
* @param cc
* @return
*/
private boolean setCC(String cc) {
if (cc == null) {
return false;
}
try {
mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
} catch (Exception e) {
return false;
}
return true;
}
/**
* 发送邮件
*
* @return
*/
public boolean send() throws Exception {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
System.out.println("正在发送邮件....");
Transport transport = session.getTransport("smtp");
// 连接邮件服务器并进行身份验证
transport.connect(smtpHost, sendUserName, sendUserPass);
// 发送邮件
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
System.out.println("发送邮件成功!");
transport.close();
return true;
}
public static void main(String[] args) {
String userName = "##########"; // 发件人邮箱
String password = "##########"; // 发件人密码
String smtpHost = "smtp.163.com"; // 邮件服务器
String to = "########"; // 收件人,多个收件人以半角逗号分隔
String cc = "########,########"; // 抄送,多个抄送以半角逗号分隔
String subject = "这是邮件的主题"; // 主题
String body = "天上的星星参北斗啊"; // 正文,可以用html格式的哟
List<String> attachments = Arrays.asList("D:\\A.png", "D:\\A.png"); // 附件的路径,多个附件也不怕
MailService email = MailService.entity(smtpHost, userName, password, to, cc, subject, body, attachments);
try {
email.send(); // 发送!
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关推荐
java 发邮件工具类 多收件人 多抄送人 多附件 内有三个重载方法 使用方便
封装好了方法, 传入发送邮件的邮箱和收邮件的邮箱即可测试使用
JAVA_Mail_邮件_发送_接收_抄送_密送_附件 该资源是一个Java项目,可用Eclipse导入即可运行。 共4个类: 1:ReceiveMail.java -接收普通邮件 2:ReciveMailWithAttachMent.java --接收含有附件的邮件 3:SendMail....
通过以上步骤,你就可以利用 JavaMail 实现功能完备的邮件发送了,包括向多个人发送邮件、设置抄送和密送,以及添加多个附件。注意,实际使用时,你需要根据你的邮件服务提供商调整相应的配置参数,例如对于其他邮箱...
在这个主题中,我们将深入探讨如何使用Java Mail API来发送包含text、HTML正文以及多个附件的邮件,并且实现发送、抄送和密送给多个收件人。 首先,我们需要导入Java Mail所需的库。主要的依赖包括`javax.mail`和`...
接下来,我们可以创建一个`Message`对象,设置邮件的基本信息,如发件人、收件人、抄送人、主题和内容: ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); ...
Java Mail 是一个开源的Java库,它为Java应用程序提供了与各种邮件系统交互的能力。这个"mail-1.4.7.jar"是Java Mail的一个版本,主要用于处理电子邮件的发送和其他相关功能。版本号1.4.7表明这是一个较旧但稳定版本...
这包括添加多个收件人、抄送人和密送人,以及设置主题和正文内容。 2. **邮件接收**:使用POP3(Post Office Protocol version 3)或IMAP(Internet Message Access Protocol)协议,Java Mail 可以从邮件服务器...
这个"Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip"的资源包含两个核心类:EmailManager.java和AnnexMailService.java,它们提供了一个强大的邮件发送功能,支持单个或多个附件,以及添加抄送人。下面将详细...
Message.RecipientType.TO常量表示收件人类型是邮件接收者,Message.RecipientType.CC常量表示收件人类型是抄送者,Message.RecipientType.BCC常量表示收件人的类型是密送者。 在调用MimeMessage的setRecipients...
在实际工作中,有时我们需要通过 Excel 自动发送邮件,并且需要同时抄送给多个收件人。这可以通过编写 VBA 宏来实现。 #### 代码示例 ```vba Sub Send_Range() ' 选择工作表上的单元格范围 ActiveSheet.Range("G1...
邮箱outlook宏支持多人发送邮件增加抄送人功能,邮件中可发送图片文件等
4. **添加邮件头信息**:设置邮件的收件人、抄送人、主题等信息,这些可以通过`MimeMessage`的相应方法完成。 5. **创建MimeMultipart对象**:邮件可以包含多个部分,比如纯文本和附件。因此,创建一个`...
这个“java_mail 1.5.zip”压缩包包含的是JavaMail 1.5版本的源代码,对于理解其内部工作原理和自定义扩展功能非常有帮助。 JavaMail API的核心组件包括: 1. **JavaMail Session**: 是JavaMail的核心,负责配置...
要使用 Java Mail 发送邮件,需要首先创建一个 Mail 对象,然后设置邮件的主题、收件人、抄送人、密送人等信息。下面是一个简单的示例代码: ```java public class Mail { public static void main(String[] args)...
Java Mail API不仅支持发送邮件,还支持读取、管理、搜索邮件,以及处理附件、MIME(多用途互联网邮件扩展)等复杂格式。 二、Java Mail的工作原理 1. 创建Session:首先,我们需要创建一个`javax.mail.Session`...
在Java中,使用javax.mail库可以方便地实现邮件的发送功能,包括添加附件、设置抄送和密送等。 在描述中提到的"带sun的jar包",可能是指早期版本的Java Mail API,它曾包含在Sun Microsystems提供的Java ...
在电子邮件的使用中,"email附件发送、多人发送、抄送"是三个核心功能,尤其在企业通信中极为常见。本文将深入探讨这三个知识点,并结合Java编程语言来讲解如何实现这些功能。 首先,电子邮件附件发送是指在发送...
3. 创建Message:通过MimeMessage类实例化一个Message对象,填充邮件内容,如收件人、抄送人、密送人、主题、正文等。如果需要发送附件,可以使用MimeBodyPart和Multipart类。 4. 发送邮件:使用Transport对象的send...
Java Mail 是一个用于处理电子邮件的开源API,它允许开发者通过编程方式发送、接收和管理邮件。这个源码可能包含了一套完整的解决方案,可以与多种邮局(如Gmail, Yahoo, Hotmail等)进行交互,并且支持单个收件人和...