java html 打包发送_发送HTML内容的邮件

该博客展示了如何使用JavaMail API发送包含HTML内容的邮件和附件。首先配置邮件服务器属性,然后创建session并建立连接。接着,创建MimeMessage对象,设置发件人、收件人、主题和发送日期。通过MimeMultipart将HTML内容和附件添加到邮件中,最后发送邮件并关闭连接。
摘要由CSDN通过智能技术生成

发送HTML内容的邮件

package com.xxxx.mail;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.MessagingException;

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 java.util.Date;

import java.util.Properties;

/**

* 发送HTML内容的邮件

*/

public class MailTest02 {

public static void main(String[] args) throws Exception {

// 定义邮箱服务器配置

Properties prop = new Properties();

// 设置邮件服务器主机名 (163 邮件服务器地址:"mail.smtp.host"  "smtp.163.com")

prop.setProperty("mail.smtp.host", "smtp.163.com");

// 设置邮件服务器的端口

prop.setProperty("mail.smtp.port", "25");

// 设置邮件服务器认证属性 (设置为true表示发送服务器需要身份验证)

prop.setProperty("mail.smtp.auth", "true");

// 使用JavaMail发送邮件的5个步骤

// 1. 创建session

Session session = Session.getInstance(prop);

// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态

session.setDebug(true);

// 2. 通过session得到transport对象

Transport ts = session.getTransport();

// 3. 使用邮箱的用户名和密码连上邮件服务器(用户名只需写@前面的即可,密码是指授权码)

ts.connect("smtp.163.com", "用户名", "密码");

// 4. 创建邮件

// 发送HTML内容的邮件

Message message = createHtmlMail(session);

// 5. 发送邮件

ts.sendMessage(message, message.getAllRecipients());

// 关闭transport对象

ts.close();

}

/**

* HTML内容邮件

*      创建一封包含html内容的邮件

*/

public static MimeMessage createHtmlMail(Session session) throws Exception {

// 创建邮件对象

MimeMessage message = new MimeMessage(session);

// 设置邮件的发件人的邮箱地址

message.setFrom(new InternetAddress("发件人的邮箱地址"));

// 设置邮件的收件人的邮箱地址 (现在发件人和收件人是一样的,那就是自己给自己发)

message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人的邮箱地址"));

// 邮件的主题

message.setSubject("测试HTML邮件");

// 设置发送日期

message.setSentDate(new Date());

// 准备邮件数据

/**

* Message表示一个邮件,messgaes.getContent()返回一个Multipart对象。

* 一个Multipart对象包含一个或多个BodyPart对象,来组成邮件的正文部分(包括附件)。

*/

// 创建多媒体对象

MimeMultipart multipart = new MimeMultipart();

// 创建邮件体对象

MimeBodyPart bodyPart = new MimeBodyPart();

// 设置HTML内容

StringBuffer sb = new StringBuffer();

sb.append("

百度一下");

bodyPart.setContent(sb.toString(), "text/html;charset=UTF-8");

// 将bodyPart对象设置到multipart对象中

multipart.addBodyPart(bodyPart);

// 将multipart对象设置到message对象中 (setContent():)

message.setContent(multipart);

// 返回创建好的邮件对象

return message;

}

}

效果如下:

发送包含附件的邮件

package com.xxxx.mail;

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.MessagingException;

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 java.util.Date;

import java.util.Properties;

/**

* 发送包含附件的邮件

*/

public class MailTest03 {

public static void main(String[] args) throws Exception {

// 定义邮箱服务器配置

Properties prop = new Properties();

// 设置邮件服务器主机名 (163 邮件服务器地址:"mail.smtp.host"  "smtp.163.com")

prop.setProperty("mail.smtp.host", "smtp.163.com");

// 设置邮件服务器的端口

prop.setProperty("mail.smtp.port", "25");

// 设置邮件服务器认证属性 (设置为true表示发送服务器需要身份验证)

prop.setProperty("mail.smtp.auth", "true");

// 使用JavaMail发送邮件的5个步骤

// 1. 创建session

Session session = Session.getInstance(prop);

// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态

session.setDebug(true);

// 2. 通过session得到transport对象

Transport ts = session.getTransport();

// 3. 使用邮箱的用户名和密码连上邮件服务器(用户名只需写@前面的即可,密码是指授权码)

ts.connect("smtp.163.com", "用户名", "密码");

// 4. 创建邮件

// 发送包含附件的邮件

Message message = createAttachMail(session);

// 5. 发送邮件

ts.sendMessage(message, message.getAllRecipients());

// 关闭transport对象

ts.close();

}

/**

* 包含附件的邮件

*      创建一封包含附件的邮件

* @param session

* @return

* @throws MessagingException

*/

public static MimeMessage createAttachMail(Session session) throws MessagingException {

// 创建邮件对象

MimeMessage message = new MimeMessage(session);

// 设置邮件的发件人的邮箱地址

message.setFrom(new InternetAddress("发件人的邮箱地址"));

// 设置邮件的收件人的邮箱地址 (现在发件人和收件人是一样的,那就是自己给自己发)

message.setRecipient(Message.RecipientType.TO, new InternetAddress("收件人的邮箱地址"));

// 邮件的主题

message.setSubject("测试包含附件的邮件");

// 设置发送日期

message.setSentDate(new Date());

// 创建邮件正文

MimeBodyPart bodyPart = new MimeBodyPart();

bodyPart.setContent("使用JavaMail创建的带附件的邮件", "text/html;charset=UTF-8");

// 创建附件

MimeBodyPart attachPart = new MimeBodyPart();

// 本地文件

DataHandler dh = new DataHandler(new FileDataSource("C:\\work\\邮件附件.txt"));

attachPart.setDataHandler(dh);

// 附件名

attachPart.setFileName(dh.getName());

// 创建容器描述数据关系

MimeMultipart multipart = new MimeMultipart();

// 添加正文

multipart.addBodyPart(bodyPart);

// 添加附件

multipart.addBodyPart(attachPart);

// 如果在邮件中要添加附件,设置为mixed;。

multipart.setSubType("mixed");

// 设置邮件的内容

message.setContent(multipart);

// 返回创建好的邮件对象

return message;

}

}

效果如下:

Java Mail 邮件发送封装

创建邮件发送信息类

package com.xxxx.mail;

import java.util.List;

/**

* 邮件发送信息类

*   定义发送邮件时 邮件服务器 端口 发送方用户名 密码等字段

*/

public class MailSendInfo {

private String serverHost; // 服务器主机

private String serverPort; // 服务器端口

private String fromAddress;// 发送方邮箱地址

private List toAddress; // 接收方邮箱地址

private String userName; // 邮件服务器用户名

private String userPwd; // 邮件服务器密码(授权密码)

private String subject; // 邮件主题

private String content; // 邮件内容

private Boolean flag = true; // 是否需要身份认证

private List attachFileNames; // 附件文件名

public Boolean getFlag() {

return flag;

}

public void setFlag(Boolean flag) {

this.flag = flag;

}

public String getServerHost() {

return serverHost;

}

public void setServerHost(String serverHost) {

this.serverHost = serverHost;

}

public String getServerPort() {

return serverPort;

}

public void setServerPort(String serverPort) {

this.serverPort = serverPort;

}

public String getFromAddress() {

return fromAddress;

}

public void setFromAddress(String fromAddress) {

this.fromAddress = fromAddress;

}

public List getToAddress() {

return toAddress;

}

public void setToAddress(List toAddress) {

this.toAddress = toAddress;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getUserPwd() {

return userPwd;

}

public void setUserPwd(String userPwd) {

this.userPwd = userPwd;

}

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 List getAttachFileNames() {

return attachFileNames;

}

public void setAttachFileNames(List attachFileNames) {

this.attachFileNames = attachFileNames;

}

}

创建认证类

package com.xxxx.mail;

import javax.mail.Authenticator;

import javax.mail.PasswordAuthentication;

/**

* 认证类

*/

public class MyAuthenticator extends Authenticator {

private String userName; // 邮箱

private String userPwd; // 密码(授权码)

public MyAuthenticator(String userName, String userPwd) {

this.userName = userName;

this.userPwd = userPwd;

}

/**

* 邮件服务器发送邮件时,进行身份验证

* @return

*/

@Override

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(userName, userPwd);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值