首页 > 编程语言 >javaMail笔记

javaMail笔记

时间:2022-12-19 11:34:08浏览次数:45  
标签:smtp 笔记 发送 javaMail new mail message 邮件


JavaMail

         javaMail是提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套表中开发类库,支持常用的邮件协议,如SMTP,POO3,IMAP,开发人员使用javaMail编写邮件程序时,无需考虑底层的通信细节(Socket)

邮件开发的相关协议

SMTP:simple message transfer protocol   发送协议,默认端口:25

POP:post office protocol

JavaMail 的使用:

导包:

         mail.jar

spring整合javaMail : spring-context-support jar

传统邮件开发:

 

       public void TestMail() throws Exception{

props = new Properties();

props.put("mail.smtp.host[a1] ", "localhost[a2] ");

props.put("mail.smtp.auth", "true");

//props.put("mail.debug","true");//显示应答信息

session = Session.getInstance(props)[a3]

//session.setDebug(true)[a4] ; //显示应答信息

//构造信息体

message = new MimeMessage(session);

//发送邮件地址

address = newInternetAddress("[email protected]");

message.setFrom(address);

//收件人地址

toAddress = new InternetAddress("[email protected]");

message.setRecipient(MimeMessage.RecipientType.TO, toAddress);

//主题

message.setSubject("Helloword");

message.setText("hei heihei");

message.saveChanges();

transport = session.getTransport("smtp");[a5]

transport.connect("localhost","[email protected]", "123");

transport.sendMessage(message, message.getAllRecipients());//发送

transport.close();[a6]

    }

 

核心类:

Session 设置服务器的参数

MimeMessage 构造信息体设置发件人收件人邮箱,以及要发送的内容

Transport 发送信息的类

 

可以把该类抽取成一个工具类

Spring整合javaMail

 

配置mail.properties

    [email protected]

mail.password=123

 

内容视情况配置

 

配置applicationContext-mail.xml

<!-- 加载properties文件 -->

<context:property-placeholder location="classpath:mail.properties"/>

<!-- 配置一个简单邮件对象 -->

<bean id="simpleMailMessage"class="org.springframework.mail.SimpleMailMessage[a7] ">

<property name="from"value="${mail.from}[a8] "></property>

</bean>

<!-- 邮件的发送对象 -->

<bean id="javaMailSenderImpl"class="org.springframework.mail.javamail.JavaMailSenderImpl">

<property name="username"value="${mail.username}"/>

<property name="password"value="${mail.password}"/>

<property name="host"value="${mail.host}"/>

<property name="defaultEncoding"value="${mail.encode}"/>

<!-- 邮件发送相关信息 -->

<property name="javaMailProperties">

<props>

<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>

<prop key="mail.debug">${mail.debug}</prop>

<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>

</props>

</property>

</bean>

 

Spring整合了javaMail所以有些方法不一样

 

普通邮件的发送:

   

SimpleMailMessage message = (SimpleMailMessage) context.getBean("simpleMailMessage");//加载邮件对象

JavaMailSenderImpl sender = (JavaMailSenderImpl) context.getBean("javaMailSenderImpl");//创建发送对象

//设置发送信息

message.setSubject("主题");

message.setText("内容");

message.setTo("收件人邮箱");

//发送邮件

sender.send(message);

 

 

复杂邮件的发送:

 

    //获取发送对象

sender = (JavaMailSenderImpl) context.getBean("javaMailSenderImpl");

//获取mimeMessage

message = sender.createMimeMessage();

helper = new MimeMessageHelper(message,true);

//通过工具类设置主题,内容,图片,附件

helper.setFrom("Admin@yan.");[a9]

helper.setTo("[email protected]");[a10]

helper.setSubject("主题");

helper.setText("<html><head></head><body><h1>显示图片</h1><img src=cid:image[a11] [a12] /></body></html>",true);

      

//发送图片

img = new FileSystemResource(new File("C:/Users/admin/Pictures/SavedPictures/b.jpg"));

helper.addInline("image[a13] ", img);

//发送附件

zipResource = new FileSystemResource(new File("C:/Users/admin/Pictures/SavedPictures/b.jpg"));

helper.addAttachment("b.zip", zipResource);

sender.send(message);

注意:配置文件要灵活应用,很多属性可配可不配或者在java类中设置

Userservice层实现向新用户发送邮件:

新创建一个线程用来发送邮件,这样访问数据库的程序和发送邮件的程序互不影响(发送邮件的业务执行的较慢)



[a1]协议名称 也可以写成: mail.host



[a2]服务器地址,发送邮箱的smtp 如136:smtp.136.com



[a3]创建一个session(应答)



[a4]显示应答应答信息



[a5]创建运输机,用来发送信息



[a6]释放资源



[a7]Spring还提供了发送复杂邮件的类:MimeMailMessage.class 这个类是有javaMailSenderImpl创建的所以此处不需要配置MimeMailMessage.class



[a8]代表properties属性中的mail.from的值

这个格式是spell,spring的一个标签



[a9]发件人邮件邮箱



[a10]收件人邮箱



[a11]cid的固定的,Image是自定义的,



[a12]要加空格,因为html中地址后就有空格,不加空格html标签不对



[a13]给自定义名称image赋值

标签:smtp,笔记,发送,javaMail,new,mail,message,邮件
From: https://blog.51cto.com/u_10176086/5951828

相关文章

  • 数据结构与算法学习笔记
    本文是王争老师的《算法与数据结构之美》的学习笔记,详细内容请看王争的专栏 。有不懂的地方指出来,我做修改。数据结构与算法思维导图数据结构指的是“一组数据的存储结构”......
  • Jenkins使用笔记
    jenkins搭建部署分为三个步骤;第一步,jenkins安装第二步,插件安装和配置第三步,PushSSH第四步,部署项目准备环境:​​JDK:1.8:安装​​maven3.5‘安装Jenkins:2.83Centos:7.......
  • 基恩士SR710测试笔记 (同时获取两个条码)
    1,条码1配置入库  2,条码2配置入库  3,设置读取数量  4,分隔符设置  5,设置传送:下载至控制器  6,终端测试 ......
  • 刷题笔记——2774.计算三角形面积
    题目2774.计算三角形面积代码importmathX1,Y1,X2,Y2,X3,Y3=map(float,input().strip().split())l1=math.sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2))l2=math.sqrt......
  • 网关Zuul+route+Filter+Fallback+Retry笔记20221202
    一、ek20141、pom.xml<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter......
  • OI 笔记:D - 数据结构
    一些技巧与思想也会归类于数据结构。D-数据结构序列结构树状数组\(\mathrm{lowbit}(x)\)函数:表示\(x\)的二进制表示中,最低位的\(1\)的数值大小,lowbit(x)=x&......
  • OI 笔记:A - 基础算法
    A-基础算法语言基础语言基础编译指令:-std=c++11:c++11标准。-O2:O2优化。-Wl,--stack=1280000000:开栈。-Wall:显示所有警告。-Wextra:检测可疑代码并生成警告。......
  • OI 笔记:C - 数学知识
    C-数学知识数学分析参考教材:数学分析教材,常庚哲/史济怀编著,中国科学技术大学出版社出版。3.1:导数的定义定义3.1.1:若函数\(f\)在点\(x_0\)的近旁有定义,且极......
  • delphi D11编程语言手册 学习笔记(P424-477) 泛型
      这本书可以在Delphi研习社②群256456744的群文件里找到.书名:Delphi11AlexandriaEdition.pdf 泛型在C++中叫做类型模板(templateclasses),单从字面上理......
  • [常用工具] shell脚本快速入门笔记
    Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell脚本(shellscript),是一种为shell编写的脚本程序。业界所说的shell通常都是指shell脚本,但要知道,sh......