javaweb网页实现邮箱发送

Posted 乘凉者 栽树人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaweb网页实现邮箱发送相关的知识,希望对你有一定的参考价值。

网页邮件传输

邮箱的传输原理

导入相关依赖

<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.4.7</version>
</dependency>

获取QQ的授权码

点击进入QQ邮箱

点击设置,往下拉,直到看见pop3等各种服务,开启pop3/STMP服务

文本邮件的发送

  • 我们需要封装传输的对象
Properties prop=new Properties();
        prop.setProperty("mail.host","smtp.qq.com");///设置QQ邮件服务器
        prop.setProperty("mail.transport.protocol","smtp");///邮件发送协议
        prop.setProperty("mail.smtp.auth","true");//需要验证用户密码
        //QQ邮箱需要设置SSL加密
        MailSSLSocketFactory sf=new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.enable","true");
        prop.put("mail.smtp.ssl.socketFactory",sf);
  • 发送邮箱的5个步骤
  1. 创建session对象
//1.创建定义整个应用程序所需要的环境信息的session对象
Session session=Session.getDefaultInstance(prop, new Authenticator() 
    @Override
    protected PasswordAuthentication getPasswordAuthentication() 
        return new PasswordAuthentication("XXXX@qq.com","授权码");
    
);
//开启session的debug模式,这样可以查看到程序发送Email的运行状态
session.setDebug(true);
  1. 通过session得到transport对象
Transport ts=session.getTransport();
  1. 通过用户名和授权码连接邮箱
ts.connect("smtp.qq.com","XXXX@qq.com","授权码");
  1. 创建邮箱
//注意需要传递session
MimeMessage message=new MimeMessage(session);
//指明邮件的发件人
message.setFrom(new InternetAddress("XXXX@qq.com"));
//指明邮件的收件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("XXXX@qq.com"));
//邮件标题
message.setSubject("发送的标题");
//邮件的文本内容
message.setContent("内容","text/html;charset=UTF-8");
  1. 发送邮箱
ts.sendMessage(message,message.getAllRecipients());
//关闭连接
ts.close();

邮箱发送图片

只需要更改创建邮箱的文本内容,设置成为图片等资源可以发送的模式

MimeBodyPart image=new MimeBodyPart();
        //图片需要经过数据化的处理
        DataHandler dh=new DataHandler(new FileDataSource("D:\\\\Bert\\\\1594126632(1).jpg"));
        //在part中放入这个处理过图片的数据
        image.setDataHandler(dh);
        //给这个part设置一个ID名字
        image.setContentID("bz.jpg");

        //准备正文的数据
        MimeBodyPart text=new MimeBodyPart();
        text.setContent("这是一张正文<img src='cid:bz.jpg'>","text/html;charset=UTF-8");

        //描述数据关系
        MimeMultipart mm=new MimeMultipart();
        mm.addBodyPart(text);
        mm.addBodyPart(image);
        mm.setSubType("related");

        //设置到消息中,保存修改
        message.setContent(mm);
        message.saveChanges();

邮箱发送附件

在邮箱发送图片的地方多增加一个发送附件的方法

 MimeBodyPart body1= new MimeBodyPart();
        body1.setDataHandler(new DataHandler(new FileDataSource("D:\\\\Bert\\\\cmd.txt")));
        body1.setFileName("1.txt");

        //描述数据关系
        MimeMultipart mm=new MimeMultipart();
        mm.addBodyPart(body1);
        mm.addBodyPart(text);

以上是关于javaweb网页实现邮箱发送的主要内容,如果未能解决你的问题,请参考以下文章

javaweb网页实现邮箱发送

JavaWeb--简单邮件发送实现

JavaWeb--邮件发送原理

javaWeb之邮箱发送(邮箱客户端配置)

JavaWeb网上图书商城完整项目--发送邮件

JavaWeb学习总结(五十一)——邮件的发送与接收原理