1.普通邮件的发送功能
这里的这个普通邮件的发送功能是指普通的标题正文的形式的邮箱,比较简单,代码如下:
package com.tdhc.common.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;
/**
* 发送邮件,仅限String类型的正文内容,不支持附件发送
*/
public class SendMail {
public static void sendMail(String sender,String receiver,String content) {
MailAccount account = new MailAccount();
account.setHost("smtp.163.com");//网易邮箱服务器
account.setPort(25);//默认端口
account.setAuth(true);
account.setFrom("xxxxxxxxxx@163.com");//发送邮件的邮箱
account.setUser(sender);//发送人
account.setPass("GKZOKNHYTAVUWAG"); //发送邮件的邮箱的授权码,每个账户不一样
MailUtil.send(account, CollUtil.newArrayList(receiver), "询价单信息", content, false);
}
}
备注:
Host:邮箱服务器,QQ是stmp.qq.com,网易是stmp.163.com;
port:默认端口
Auth:默认true
from:发送邮件的邮箱
user:发送人
pass:授权码
send方法:
第一个参数:MailAccount对象
第二个参数:接收邮件的邮箱,可以是一个,也可以是多个邮箱的集合
第三个参数:邮件Title-标题
第四个参数:文章内容
第五个参数:默认false即可
2.带有附件的邮件发送功能
这里的功能是发送带有附件的邮件
package com.tdhc.common.util;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.util.ByteArrayDataSource;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Properties;
/**
* 发送邮件,这里没有做标题正文形式的发送,主要是用作excel.xlsx等形式的附件右键发送
*/
public class SendAttachment {
public static void sendEmail(String to, ByteArrayOutputStream baos) {
// 发件人电子邮箱
String from = "xxxxxxxx@qq.com";
// 获取系统属性
Properties properties = System.getProperties();
// 设置邮件服务器 ->QQ邮箱服务器
properties.setProperty("mail.smtp.host", "smtp.qq.com");
properties.put("mail.smtp.auth", "true");
// 获取默认session对象
Session session = Session.getDefaultInstance(properties, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("xxxxxxxxx@qq.com", "wojdadhskojhadi");
//发件人邮件用户名、授权码
}
});
try {
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// Set From: 头部头字段
message.setFrom(new InternetAddress(from));
// Set To: 头部头字段
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
// Set Subject: 头部头字段
message.setSubject("询价单信息");
/*添加附件*/
Multipart multipart = new MimeMultipart();
if (baos != null) {
MimeBodyPart fileBody = new MimeBodyPart();
DataSource source = new ByteArrayDataSource(baos.toByteArray(), "application/msexcel");
fileBody.setDataHandler(new DataHandler(source));
// 中文乱码问题,设置附件名称
fileBody.setFileName(MimeUtility.encodeText("询价单.xlsx"));
multipart.addBodyPart(fileBody);
}
message.setContent(multipart);
// 发送消息
Transport.send(message);
} catch (MessagingException mex) {
mex.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
备注:
由于在后期测试时不停的发送邮件,所以我的网易邮箱开启了保护,认为我的邮箱中毒了,所以在发送附件功能这里就用的是QQ邮箱,注意区分。
本文详细介绍使用Java发送普通邮件及带附件邮件的方法,包括配置邮箱服务器、设置邮件内容及附件,适用于企业级应用中自动邮件通知场景。
2008

被折叠的 条评论
为什么被折叠?



