- /*
- * 邮件发送类
- */
- public class MailSenderUtil{
- /**
- * 以HTML格式发送邮件,可带附件,本方法可作为对外接口提供。
- * @param mailInfo 待发送的邮件信息
- * @throws MessagingException
- * @throws AddressException
- * @throws UnsupportedEncodingException
- */
- public static void sendHtmlMailWithLocalAttach(MailSenderInfo mailInfo) throws AddressException, MessagingException, UnsupportedEncodingException {
- // 判断是否需要身份认证
- MyAuthenticator authenticator = null;
- // 如果需要身份认证,则创建一个密码验证器
- if (mailInfo.isValidate()) {
- authenticator = new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
- }
- // 根据邮件会话属性和密码验证器构造一个发送邮件的session
- Properties pro = mailInfo.getProperties();
- Session sendMailSession = Session.getDefaultInstance(pro, authenticator);
- // 根据session创建一个邮件消息
- Message mailMessage = new MimeMessage(sendMailSession);
- // 设置发送人
- mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));
- // 设置收件人
- String[] toAddress = mailInfo.getToAddress();
- if(toAddress == null || toAddress.length < 1){
- throw new RuntimeException("收件人不得为空!");
- }
- for (int i = 0; i < toAddress.length; i++) {
- mailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toAddress[i]));
- }
- //设置抄送人
- String[] ccAddress = mailInfo.getCcAddress();
- if(ccAddress != null && ccAddress.length > 0){
- for (int i = 0; i < ccAddress.length; i++) {
- mailMessage.addRecipient(Message.RecipientType.CC, new InternetAddress(ccAddress[i]));
- }
- }
- // 设置邮件消息的主题
- mailMessage.setSubject(mailInfo.getTitle());
- // 设置邮件消息发送的时间
- mailMessage.setSentDate(new Date());
- // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
- Multipart mainPart = new MimeMultipart();
- // 创建一个包含HTML内容的MimeBodyPart
- BodyPart html = new MimeBodyPart();
- // 设置HTML内容
- html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
- mainPart.addBodyPart(html);
- // 添加附件
- addAttachment(mailInfo, mainPart);
- // 将MiniMultipart对象设置为邮件内容
- mailMessage.setContent(mainPart);
- // 发送邮件
- Transport.send(mailMessage);
- }
- /*
- * 添加邮件附件,用本地的文件作为附件
- */
- private static void addAttachment(MailSenderInfo mailInfo,Multipart mainPart) throws MessagingException, UnsupportedEncodingException{
- String[] attachFileNames = mailInfo.getAttachFileNames();
- if(attachFileNames != null && attachFileNames.length > 0){
- for (int i = 0; i < attachFileNames.length; i++) {
- MimeBodyPart mdp = new MimeBodyPart();
- // FileDataSource/DataHandler 会用到
- // activation-1.1.jar,jdk6中已经包含了该jar中内容,不再需要单独下载
- // activation-1.1.jar
- FileDataSource fds = new FileDataSource(attachFileNames[i]);
- DataHandler dh = new DataHandler(fds);
- mdp.setDataHandler(dh);
- // 保持附件名称与原文件名称一致的写法,MimeUtility.encodeText()可以解决中文附件乱码。
- mdp.setFileName(MimeUtility.encodeText(fds.getName()));
- mainPart.addBodyPart(mdp);
- }
- }
- }
- }
- /**
- * MyAuthenticator bean
- */
- 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);
- }
- }
- /**
- * MailSenderInfo bean
- */
- class MailSenderInfo {
- // 发送邮件的服务器的IP和端口
- private String mailServerHost;
- private String mailServerPort;;
- // 邮件发送者的地址
- private String fromAddress;
- //接收人地址
- private String[] toAddress;
- //抄送人地址
- private String[] ccAddress;
- // 登陆邮件发送服务器的用户名和密码
- private String userName;
- private String password;
- // 是否需要身份验证
- private boolean validate = false;
- // 邮件主题
- private String title;
- // 邮件的文本内容
- private String content;
- // 邮件附件的文件名,含磁盘物理路径,如D:\\Desktop\\index.html
- private String[] attachFileNames;
- /**
- * 获得邮件会话属性
- * @return Properties
- */
- 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[] getCcAddress() {
- return ccAddress;
- }
- public void setCcAddress(String[] ccAddress) {
- this.ccAddress = ccAddress;
- }
- 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 getTitle() {
- return title;
- }
- public void setTitle(String title) {
- this.title = title;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String textContent) {
- this.content = textContent;
- }
- }
使用
- public static void main(String[] args) throws AddressException, UnsupportedEncodingException, MessagingException {
- MailSenderInfo mail = new MailSenderInfo();
- //设置附件
- mail.setAttachFileNames(new String[]{
- "D:\\Desktop\\首页.jpg",
- "D:\\Desktop\\测试账户.java"
- });
- //设置抄送人
- mail.setCcAddress(new String[]{"1@1.com","2@2.com"});
- //设置正文
- mail.setContent("<h3>http://www.baidu.com</h3>");
- //设置发件邮箱
- mail.setFromAddress("33@33.com");
- //设置发件邮箱密码
- mail.setPassword("123456");
- //设置邮件服务器
- mail.setMailServerHost("mail.XX.com");
- mail.setMailServerPort("25");
- //设置邮件主题
- mail.setTitle("我是主题");
- //设置收件人
- mail.setToAddress(new String[]{"44@44.com"});
- //设置用户名
- mail.setUserName("33");
- mail.setValidate(true);
- MailSenderUtil.sendHtmlMailWithLocalAttach(mail);
- }
有些邮件服务器中,username需要写全称(即包含@及之后的数据,如33@163.com),否则会报错:
javax.mail.AuthenticationFailedException: 535 5.7.0 Error: authentication failed: authentication failure
相关推荐
使用 JavaMail 库可以轻松地在 Java 应用程序中发送电子邮件。JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 ...
这个库支持多种邮件协议,如 SMTP(简单邮件传输协议)用于发送邮件,POP3(邮局协议)和 IMAP(因特网消息访问协议)用于接收邮件。在这个资源中,我们将探讨如何使用 JavaMail 实现邮件的发送、接收、查看邮件数量...
JavaMail 是一个开源的 Java 库,用于处理电子邮件的发送和接收。它提供了一组 API,使得开发者可以方便地在 Java 应用程序中集成邮件功能。本示例将介绍如何使用 JavaMail 实现发送邮件的功能。 首先,我们需要...
- JavaMail API提供了一系列接口和类,允许开发者通过SMTP(Simple Mail Transfer Protocol)协议发送邮件。 - 主要涉及的接口和类包括:`Session`(邮件会话)、`Message`(邮件对象)、`Transport`(传输服务)...
不过,需要注意的是,使用JavaMail发送邮件时,必须确保你的SMTP服务器允许第三方应用程序进行授权,并且可能需要开启“不够安全的应用”的权限(对于Gmail而言)。 在提供的压缩包文件`Mail`中,可能包含了一些...
Java SMTP 发送邮件是Java开发中常见的功能,用于在应用程序中...总的来说,Java SMTP发送邮件涉及JavaMail API的使用,SMTP服务器的配置,以及邮件内容的构建。理解这些知识点,就能轻松地在Java项目中实现邮件功能。
JavaMail是一种在Java环境中发送和接收电子邮件的标准API,它提供了丰富的功能来处理复杂的邮件操作。在Struts2框架中集成JavaMail服务,可以方便地在Web应用中实现邮件的发送功能。下面我们将深入探讨JavaMail的...
JavaMail 是一个强大的Java库,它允许开发人员在Java应用程序中实现邮件的发送、接收以及管理功能。这个项目不仅提供了SMTP、POP3和IMAP协议的支持,还包含了丰富的API,可以方便地处理邮件的MIME编码、附件、HTML...
### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...
JavaMail 是一个强大的开源库,用于在 Java 应用程序中发送和接收电子邮件。要实现定时发送邮件,我们可以结合 JavaMail 和 Java 计时器框架(如文中提到的 Java Timer)。以下是一个详细的步骤来实现这个功能: 1....
JavaMail 是一个强大的开源库,专门用于在Java应用程序中实现电子邮件的发送和接收。它支持多种邮件协议,如SMTP(简单邮件传输协议)用于发送邮件,IMAP(因特网消息访问协议)和POP3(邮局协议)用于接收邮件。在...
JavaMail 是一个强大的开源库,专门用于在Java应用程序中发送和接收电子邮件。它提供了丰富的API,使得开发者可以方便地处理SMTP、POP3和IMAP等邮件协议。在JavaMail中,我们可以实现各种复杂的邮件功能,如添加附件...
在IT行业中,发送电子邮件是一项常见的任务,而JavaMail是一个广泛使用的API,用于处理与电子邮件相关的各种操作。在尝试使用JavaMail发送邮件时,如果邮件服务器要求使用SSL(Secure Socket Layer)或TLS...
### JavaMail JSP 发送邮件的关键知识点 #### 一、JavaMail 概述与应用场景 - **JavaMail API**:是 Java 平台上用于发送、接收、读取和管理电子邮件的标准 API。它允许应用程序发送和接收多种类型的邮件,包括纯...
JavaMail是Java编程环境中用于处理电子邮件的一套API,它提供了丰富的功能,允许开发者发送、接收、存储和管理邮件。在JavaMail API详解的资源中,我们可以深入理解这一强大的工具。 首先,JavaMail API简介部分会...
JavaMail 是一个强大的开源库,用于在Java应用程序中发送和接收电子邮件。这个功能通常涉及到SMTP(简单邮件传输协议)和其他相关的互联网邮件协议。在JavaMail中,`mail.jar` 和 `activation.jar` 是两个关键的库...
JavaMail 是一个开源的 Java API,它允许开发者在 Java 应用程序中实现电子邮件的发送和接收。这个API遵循了互联网标准,如SMTP(简单邮件传输协议), POP3(邮局协议)以及 IMAP(因特网消息访问协议)。在JavaMail...
它支持多种协议,包括POP3、IMAP和SMTP,这些协议分别用于接收、检索和发送邮件。在使用JavaMail时,了解如何进行加密和非加密通信对于确保数据安全至关重要。 1. **POP3(Post Office Protocol version 3)**: -...
本示例将重点介绍如何使用JavaMail库来实现163邮箱向腾讯邮件发送邮件的流程。 首先,确保你的项目中已经包含了JavaMail所需的依赖。通常,这可以通过在Maven或Gradle的构建文件中添加对应的依赖完成。例如,如果你...