java fromterm 使用_springboot邮件发送与接收读取(真实使用)

发送邮件

org.springframework.boot

spring-boot-starter-freemarker

org.springframework.boot

spring-boot-starter-mail

org.springframework.boot

spring-boot-starter-web

spring:

mail:

port:25username: ****

password: ****

protocol: smtp

default-encoding: utf-8host: smtp.partner.outlook.cn

properties:

mail:

smtp:

auth: true

starttls:

enable: true

required: true

邮件模板

消息通知

table{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;

}td, th{font-size:1em;border:1px solid #5B4A42;padding:3px 7px 2px 7px;

}th{font-size:1.1em;text-align:center;padding-top:5px;padding-bottom:4px;background-color:#24A9E1;color:#ffffff;

}

邮件消息通知

MessageCodeMessageStatusCause${(params.messageCode)!""}${(params.messageStatus)!""}${(params.cause)!""}

模板实体类

public classMailMessage {privateString messageCode;privateString messageStatus;privateString cause;publicString getMessageCode() {returnmessageCode;

}public voidsetMessageCode(String messageCode) {this.messageCode =messageCode;

}publicString getMessageStatus() {returnmessageStatus;

}public voidsetMessageStatus(String messageStatus) {this.messageStatus =messageStatus;

}publicString getCause() {returncause;

}public voidsetCause(String cause) {this.cause =cause;

}

}

importjava.time.LocalDate;importjava.time.LocalTime;importjava.util.HashMap;importjava.util.Map;importjavax.mail.MessagingException;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.mail.javamail.JavaMailSender;importorg.springframework.mail.javamail.MimeMessageHelper;importorg.springframework.stereotype.Service;importorg.springframework.ui.freemarker.FreeMarkerTemplateUtils;importorg.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;importfreemarker.template.Template;

@Servicepublic classMailService {//邮件的发送者

@Value("${spring.mail.username}")privateString from;//注入MailSender

@AutowiredprivateJavaMailSender mailSender;//发送邮件的模板引擎

@AutowiredprivateFreeMarkerConfigurer configurer;/***@paramparams 发送邮件的主题对象 object

*@paramtitle 邮件标题

*@paramtemplateName 模板名称

*@paramto 收件人地址

*@paramreceipt 是否需要回执

*@throwsMessagingException

*@throwsException*/

public void sendMessageMail(Object params, String title, String templateName, String to, boolean receipt) throwsException{

MimeMessage mimeMessage=mailSender.createMimeMessage();if(receipt) {

mimeMessage.setHeader("Disposition-Notification-To", "1");

}

mimeMessage.setContentID(System.currentTimeMillis()+"");

MimeMessageHelper helper= new MimeMessageHelper(mimeMessage, true);

helper.setFrom(from);

helper.setTo(InternetAddress.parse(to));

helper.setSubject("【" + title + "-" + LocalDate.now() + " " + LocalTime.now().withNano(0) + "】");//邮件标题

Map model = new HashMap<>();

model.put("params", params);

Template template=configurer.getConfiguration().getTemplate(templateName);

String text=FreeMarkerTemplateUtils.processTemplateIntoString(template, model);

helper.setText(text,true);

System.out.println(mimeMessage.getContentID());

mailSender.send(mimeMessage);

}

}

测试发送

@RequestMapping(value = "/sendMessage", method =RequestMethod.GET)public voidsendMailMessage() {

MailMessage message= newMailMessage();

message.setMessageCode("MissingParameter");

message.setMessageStatus("Failed");

message.setCause("缺少参数,请确认");try{

mailService.sendMessageMail(message,"测试消息通知", "message.ftl", "aaaaa@qq.com", true);

}catch(Exception e) {

e.printStackTrace();

}

}

读取邮件

importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.util.Properties;importjavax.mail.Folder;importjavax.mail.Message;importjavax.mail.Session;importjavax.mail.Store;importjavax.mail.internet.MimeUtility;importcom.sun.mail.imap.IMAPMessage;public classReciveIMAPmail {public static void main(String[] args) throwsException {//准备连接服务器的会话信息

Properties props = newProperties();

props.setProperty("mail.store.protocol", "imap");

props.setProperty("mail.imap.host", "imap.163.com");

props.setProperty("mail.imap.port", "143");//创建Session实例对象

Session session =Session.getInstance(props);//创建IMAP协议的Store对象

Store store = session.getStore("imap");//连接邮件服务器

store.connect("username***", "password***");//获得收件箱

Folder folder = store.getFolder("INBOX");//以读写模式打开收件箱

folder.open(Folder.READ_WRITE);//获得收件箱的邮件列表

Message[] messages =folder.getMessages();//打印不同状态的邮件数量

System.out.println("收件箱中共" + messages.length + "封邮件!");

System.out.println("收件箱中共" + folder.getUnreadMessageCount() + "封未读邮件!");

System.out.println("收件箱中共" + folder.getNewMessageCount() + "封新邮件!");

System.out.println("收件箱中共" + folder.getDeletedMessageCount() + "封已删除邮件!");

System.out.println("------------------------开始解析邮件----------------------------------");int total =folder.getMessageCount();

System.out.println("-----------------您的邮箱共有邮件:" + total + " 封--------------");//得到收件箱文件夹信息,获取邮件列表

Message[] msgs =folder.getMessages();

System.out.println("\t收件箱的总邮件数:" +msgs.length);for (int i = 0; i < total; i++) {

Message a=msgs[i];//获取邮箱邮件名字及时间

System.out.println(a.getReplyTo());

System.out.println("==============");//System.out.println(a.getSubject() + " 接收时间:" + a.getReceivedDate().toLocaleString()+" contentType()" +a.getContentType());

}

System.out.println("\t未读邮件数:" +folder.getUnreadMessageCount());

System.out.println("\t新邮件数:" +folder.getNewMessageCount());

System.out.println("----------------End------------------");//关闭资源

folder.close(false);

store.close();

}

}

ssl方式读取邮件

importjava.security.Security;importjava.text.SimpleDateFormat;importjava.util.Properties;importjavax.mail.FetchProfile;importjavax.mail.Flags;importjavax.mail.Folder;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.Session;importjavax.mail.Store;importjavax.mail.URLName;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeUtility;importjavax.mail.search.FlagTerm;//查看收件箱邮件

public classReadMailUtil {public static voidmain(String[] args) {//设置SSL连接、邮件环境

Security.addProvider(newcom.sun.net.ssl.internal.ssl.Provider());final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

Properties props=System.getProperties();

props.setProperty("mail.imap.host", "imap.partner.outlook.cn");

props.setProperty("mail.imap.socketFactory.class", SSL_FACTORY);

props.setProperty("mail.imap.socketFactory.fallback", "false");

props.setProperty("mail.imap.port", "993");

props.setProperty("mail.imap.socketFactory.port", "993");

props.setProperty("mail.imap.auth", "true");//建立邮件会话

Session session = Session.getInstance(props, null);//设置连接邮件仓库的环境

URLName url = new URLName("imap", "imap.partner.outlook.cn", 993, null, "username", "password");

Store store= null;

Folder inbox= null;try{//得到邮件仓库并连接

store =session.getStore(url);

store.connect();//得到收件箱并抓取邮件

inbox = store.getFolder("INBOX");

inbox.open(Folder.READ_WRITE);

FetchProfile profile= newFetchProfile();

profile.add(FetchProfile.Item.ENVELOPE);//false代表未读,true代表已读

FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);//根据设置好的条件获取message

Message[] messages =inbox.search(ft);//Message[] messages = inbox.getMessages();

inbox.fetch(messages, profile);int length =messages.length;

System.out.println("收件箱的邮件数:" +length);

System.out.println("-------------------------------------------\n");

//遍历收件箱、垃圾箱等名称

Folder defaultFolder = store.getDefaultFolder();

Folder[] folders = defaultFolder.list();

for (int i = 0; i < folders.length; i++) {

System.out.println("名称:"+folders[i].getName());

}

for (int i = 0; i < length; i++) {

String from= MimeUtility.decodeText(messages[i].getFrom()[0].toString());

InternetAddress ia= newInternetAddress(from);

System.out.println("发件人:" + ia.getPersonal() + '(' + ia.getAddress() + ')');

System.out.println("主题:" +messages[i].getSubject());

System.out.println("邮件发送时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(messages[i].getSentDate()));

System.out.println("-------------------------------------------\n");

messages[i].setFlag(Flags.Flag.SEEN,true);

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{if(inbox != null) {

inbox.close(false);

}

}catch(MessagingException e) {

e.printStackTrace();

}try{if(store != null) {

store.close();

}

}catch(MessagingException e) {

e.printStackTrace();

}

}

}

}

/**

* Flag 类型列举如下

* Flags.Flag.ANSWERED 邮件回复标记,标识邮件是否已回复。

* Flags.Flag.DELETED 邮件删除标记,标识邮件是否需要删除。

* Flags.Flag.DRAFT 草稿邮件标记,标识邮件是否为草稿。

* Flags.Flag.FLAGGED 表示邮件是否为回收站中的邮件。

* Flags.Flag.RECENT 新邮件标记,表示邮件是否为新邮件。

* Flags.Flag.SEEN 邮件阅读标记,标识邮件是否已被阅读。

* Flags.Flag.USER 底层系统是否支持用户自定义标记,只读。

*/

camera_shade_message.ftl

监控通知

table{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;

}td, th{font-size:1em;border:1px solid #5B4A42;padding:3px 7px 2px 7px;

}th{font-size:1.1em;text-align:center;padding-top:5px;padding-bottom:4px;background-color:#24A9E1;color:#ffffff;

}

${userName!""},您好!

以下为${cusnames!""},${dataCycle!""} 明细:

车牌号设备号监控周期客户名称${item.carnum!""}${item.gpsno!""}${item.dataCycle!""}${item.cusname!""}

#list>

请查收

Map map = new HashMap<>();

map.put("datas", list);

map.put("controllerName", mailNoticeReq.getControllerName());mailService.sendMessageMail(map, mailNoticeDetail.getTitle(),"camera_shade_message.ftl", mailNoticeDetail.getReceiver(), true);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值