广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何使用java来发送邮件
  • 451
分享到

如何使用java来发送邮件

2024-04-02 19:04:59 451人浏览 八月长安
摘要

这篇文章主要介绍了如何使用java来发送邮件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用java来发送邮件文章都会有所收获,下面我们一起来看看吧。 首先看一下实现的

这篇文章主要介绍了如何使用java来发送邮件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用java来发送邮件文章都会有所收获,下面我们一起来看看吧。

首先看一下实现的步骤,然后在讲讲有可能遇到的问题

1.引入javax.mail依赖,我用的是SpringBoot,所以依赖是这样引的

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

没用springboot框架的,自己去找一下

2.构建邮件基本信息类

package com.example.demo.comment.sendemail;

import java.util.Properties;


public class MailSenderInfo {
    
    private String mailServerHost;
    private String mailServerPort = "25";
    
    private String fromAddress;
    
    private String toAddress;
    
    private String userName;
    private String passWord;
    
    private boolean validate = false;
    
    private String subject;
    
    private String content;
    
    private String[] attachFileNames;

    
    public Properties getProperties() {
        Properties p = new Properties();
        p.put("mail.smtp.host", this.mailServerHost);
        p.put("mail.smtp.port", this.mailServerPort);
        p.put("mail.smtp.auth", validate ? "true" : "false");
        return p;
    }

    public String getMailServerHost() {
        return mailServerHost;
    }

    public void setMailServerHost(String mailServerHost) {
        this.mailServerHost = mailServerHost;
    }

    public String getMailServerPort() {
        return mailServerPort;
    }

    public void setMailServerPort(String mailServerPort) {
        this.mailServerPort = mailServerPort;
    }

    public boolean isValidate() {
        return validate;
    }

    public void setValidate(boolean validate) {
        this.validate = validate;
    }

    public String[] getAttachFileNames() {
        return attachFileNames;
    }

    public void setAttachFileNames(String[] fileNames) {
        this.attachFileNames = fileNames;
    }

    public String getFromAddress() {
        return fromAddress;
    }

    public void setFromAddress(String fromAddress) {
        this.fromAddress = fromAddress;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getToAddress() {
        return toAddress;
    }

    public void setToAddress(String toAddress) {
        this.toAddress = toAddress;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String textContent) {
        this.content = textContent;
    }
}

3.构建邮件发送器

package com.example.demo.comment.sendemail;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
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;


public class SimpleMailSender  {
    
    public static boolean sendTextMail(MailSenderInfo mailInfo) {
        // 判断是否需要身份认证
        MyAuthenticator authenticator = null;
        Properties pro = mailInfo.getProperties();
        if (mailInfo.isValidate()) {
            // 如果需要身份认证,则创建一个密码验证器
            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
        }
        // 根据邮件会话属性和密码验证器构造一个发送邮件的session
        Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
        try {
            // 根据session创建一个邮件消息
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址
            Address from = new InternetAddress(mailInfo.getFromAddress());
            // 设置邮件消息的发送者
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address to = new InternetAddress(mailInfo.getToAddress());
            mailMessage.setRecipient(Message.RecipientType.TO,to);
            // 设置邮件消息的主题
            mailMessage.setSubject(mailInfo.getSubject());
            // 设置邮件消息发送的时间
            mailMessage.setSentDate(new Date());
            // 设置邮件消息的主要内容
            String mailContent = mailInfo.getContent();
            mailMessage.setText(mailContent);
            // 发送邮件
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    
    public static boolean sendhtmlMail(MailSenderInfo mailInfo){
        // 判断是否需要身份认证
        MyAuthenticator authenticator = null;
        Properties pro = mailInfo.getProperties();
        //如果需要身份认证,则创建一个密码验证器
        if (mailInfo.isValidate()) {
            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
        }
        // 根据邮件会话属性和密码验证器构造一个发送邮件的session
        Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
        try {
            // 根据session创建一个邮件消息
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址
            Address from = new InternetAddress(mailInfo.getFromAddress());
            // 设置邮件消息的发送者
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address to = new InternetAddress(mailInfo.getToAddress());
            // Message.RecipientType.TO属性表示接收者的类型为TO
            mailMessage.setRecipient(Message.RecipientType.TO,to);
            // 设置邮件消息的主题
            mailMessage.setSubject(mailInfo.getSubject());
            // 设置邮件消息发送的时间
            mailMessage.setSentDate(new Date());
            // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
            Multipart mainPart = new MimeMultipart();
            // 创建一个包含HTML内容的MimeBodyPart
            BodyPart html = new MimeBodyPart();
            // 设置HTML内容
            html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
            mainPart.addBodyPart(html);
            // 将MiniMultipart对象设置为邮件内容
            mailMessage.setContent(mainPart);
            // 发送邮件
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }
}

4.构建密码验证器

package com.example.demo.comment.sendemail;
import javax.mail.*;


public class MyAuthenticator extends Authenticator{
    String userName=null;
    String password=null;

    public MyAuthenticator(){
    }
    public MyAuthenticator(String username, String password) {
        this.userName = username;
        this.password = password;
    }

    @Override
    protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(userName, password);
    }
}

至此准备工作都完成了,下面看一下如何调用吧

5.调用Demo

package com.example.demo.comment.sendemail;

public class SendEmailDemo {
    public static void main(String[] args){
        //这个类主要是设置邮件
        MailSenderInfo mailInfo = new MailSenderInfo();
        mailInfo.setMailServerHost("smtp.163.com");
        mailInfo.setMailServerPort("25");
        mailInfo.setValidate(true);
        // 发送方邮箱
        mailInfo.setUserName("xxxxxxxx@163.com");
        // 发送方邮箱密码
        mailInfo.setPassword("xxxxxxxx");
        // 发送方邮箱
        mailInfo.setFromAddress("xxxxxxxx@163.com");
        // 接收方邮箱
        mailInfo.setToAddress("xxxxxxxx@qq.com");
        // 邮件标题
        mailInfo.setSubject("测试用邮箱发送邮件");
        // 邮件内容
        mailInfo.setContent("<h2>邮件内容非常丰富<h2>");

        //发送文体格式
        SimpleMailSender.sendTextMail(mailInfo);
        //发送html格式
        SimpleMailSender.sendHtmlMail(mailInfo);
    }
}

这里有两种邮件发送格式

如何使用java来发送邮件

如何使用java来发送邮件

问题与总结

如果不出意外的话应该成功发送出两封邮件了,但是凡事都有万一,下面分析一下哪些问题会导致失败呢?

1.mailInfo.setMailServerHost("smtp.163.com");与mailInfo.setFromAddress("xxxxxxxx@163.com");这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。

2.不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用“smtp.163.com”。因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的

3.qq邮箱作为发送方是有可能需要授权验证的。

授权如下:
在设置里面找到账户,往下拉找到并按照提示开启授权,然后将得到的授权码作为邮箱密码,即可成功发送邮件
如何使用java来发送邮件

如何使用java来发送邮件

最后顺便附上常用邮箱:

常用的邮箱服务器(SMTP、POP3)地址、端口

sina.com:
POP3服务器地址:pop3.sina.com.cn(端口:110) SMTP服务器地址:smtp.sina.com.cn(端口:25)
sinaVIP:
POP3服务器:pop3.vip.sina.com (端口:110) SMTP服务器:smtp.vip.sina.com (端口:25)
sohu.com:
POP3服务器地址:pop3.sohu.com(端口:110) SMTP服务器地址:smtp.sohu.com(端口:25)
126邮箱:
POP3服务器地址:pop.126.com(端口:110) SMTP服务器地址:smtp.126.com(端口:25)
139邮箱:
POP3服务器地址:POP.139.com(端口:110) SMTP服务器地址:SMTP.139.com(端口:25)
163.com:
POP3服务器地址:pop.163.com(端口:110) SMTP服务器地址:smtp.163.com(端口:25)
QQ邮箱
POP3服务器地址:pop.qq.com(端口:110)
SMTP服务器地址:smtp.qq.com (端口:25)
QQ企业邮箱
POP3服务器地址:pop.exmail.qq.com (SSL启用 端口:995) SMTP服务器地址:smtp.exmail.qq.com(SSL启用 端口:587/465)
yahoo.com:
POP3服务器地址:pop.mail.yahoo.com SMTP服务器地址:smtp.mail.yahoo.com
yahoo.com.cn:
POP3服务器地址:pop.mail.yahoo.com.cn(端口:995) SMTP服务器地址:smtp.mail.yahoo.com.cn(端口:587

HotMail
POP3服务器地址:pop3.live.com (端口:995) SMTP服务器地址:smtp.live.com (端口:587)
gmail(Google.com)
POP3服务器地址:pop.gmail.com(SSL启用 端口:995) SMTP服务器地址:smtp.gmail.com(SSL启用 端口:587)
263.net:
POP3服务器地址:pop3.263.net(端口:110) SMTP服务器地址:smtp.263.net(端口:25)
263.net.cn:
POP3服务器地址:pop.263.net.cn(端口:110) SMTP服务器地址:smtp.263.net.cn(端口:25)
x263.net:
POP3服务器地址:pop.x263.net(端口:110) SMTP服务器地址:smtp.x263.net(端口:25)
21cn.com:
POP3服务器地址:pop.21cn.com(端口:110) SMTP服务器地址:smtp.21cn.com(端口:25)
Foxmail:
POP3服务器地址:POP.foxmail.com(端口:110) SMTP服务器地址:SMTP.foxmail.com(端口:25)
china.com:
POP3服务器地址:pop.china.com(端口:110) SMTP服务器地址:smtp.china.com(端口:25)
tom.com:
POP3服务器地址:pop.tom.com(端口:110) SMTP服务器地址:smtp.tom.com(端口:25)
etang.com:
POP3服务器地址:pop.etang.com SMTP服务器地址:smtp.etang.com

关于“如何使用java来发送邮件”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何使用java来发送邮件”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网html频道。

--结束END--

本文标题: 如何使用java来发送邮件

本文链接: https://www.lsjlt.com/news/91408.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用java来发送邮件
    这篇文章主要介绍了如何使用java来发送邮件的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用java来发送邮件文章都会有所收获,下面我们一起来看看吧。 首先看一下实现的...
    99+
    2022-10-19
  • PHP使用PHPMailer来发送邮件
    文章目录 前言安裝与实现步骤1:下载PHPMailer步骤2:包含PHPMailer文件步骤3:设置SMTP服务器和端口号步骤4:设置发件人和收件人步骤5:设置邮件主题和内容步骤6:添加附件(...
    99+
    2023-10-04
    php 开发语言 PHP发邮件 PHPMailer
  • Java Email邮件发送如何实现
    今天小编给大家分享一下Java Email邮件发送如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、邮件协...
    99+
    2023-07-04
  • 如何使用node发送qq邮件
    这篇文章主要介绍如何使用node发送qq邮件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用nodemailer包let transporter = ...
    99+
    2022-10-19
  • PHP使用laravel邮件服务发送邮件
    目录配置生成 Mailables编写 Mailables配置发件人配置 Laravel 的邮件服务可以通过 config/mail.php 配置文件进行配置。 邮件中的每一项都在配置...
    99+
    2023-03-06
    PHP laravel发送邮件 PHP发送邮件 PHP邮件服务
  • win10邮件如何发送
    本篇内容主要讲解“win10邮件如何发送”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win10邮件如何发送”吧!win10邮件发送方法:点击“开始”打开“邮件” 点击“新邮件” 填写“收件人、...
    99+
    2023-07-01
  • wpsvba如何发送邮件
    本篇内容主要讲解“wpsvba如何发送邮件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“wpsvba如何发送邮件”吧!wpsvba发送邮件的方法:首先将WPS中创建一个邮件地址,不同的名称也可以...
    99+
    2023-07-04
  • 如何使用nodejs自动发送邮件
    这篇文章主要介绍“如何使用nodejs自动发送邮件”,在日常操作中,相信很多人在如何使用nodejs自动发送邮件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用node...
    99+
    2022-10-19
  • Python中如何使用SMTP发送邮件
    本篇文章为大家展示了Python中如何使用SMTP发送邮件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python创建 SMTP 对象语法import smtplib smtp...
    99+
    2023-06-02
  • 如何使用PHP进行邮件发送
    要使用PHP发送电子邮件,可以使用PHP内置的邮件函数或者使用第三方库。使用PHP内置的邮件函数:1. 首先,确保你的PHP环境已经...
    99+
    2023-08-24
    PHP
  • 使用python发送html邮件
    说明:   最近一直在忙着业务迁移工作,己经有些日子没有写东西了,虽然写的很渣,还好是将功能实现了。#!/usr/bin/env python #coding:utf8   import smtplib from email.mime.te...
    99+
    2023-01-31
    邮件 python html
  • Python 使用Gmail发送邮件
    前言:2014-05-22记录在hi baidu上,现在移过来 使用python向gmail发邮件 """ 发送邮件 1: 需要提供发送者的邮件、密码;接收者地址; 2:步骤: a:Logi...
    99+
    2023-01-31
    发送邮件 Python Gmail
  • php使用linux 发送邮件
    第一种方法: 使用 echo 发送邮件。 使用 echo 命令发送电子邮件,而无需进入邮件命令的交互模式。 编写电子邮件正文并将 echo 命令输出通过管道传输到 mail 命令。 语法为: echo "[email body]" | ...
    99+
    2023-08-31
    php 开发语言
  • python 使用stmp发送邮件
    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp...
    99+
    2023-01-31
    发送邮件 python stmp
  • 如何使用阿里云 ECS 发送邮件
    随着互联网的发展,电子邮件已经成为人们日常生活中不可或缺的一部分。然而,对于很多初学者来说,如何使用阿里云 ECS发送邮件可能是个难题。本文将详细介绍如何使用阿里云 ECS发送邮件,包括设置发送邮件的账户和密码、设置邮件服务器的地址和端口、...
    99+
    2023-11-14
    阿里 如何使用 发送邮件
  • python如何发送qq邮件
    这篇文章给大家分享的是有关python如何发送qq邮件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python自带了两个模块smtplib和email用于发送邮件。smtplib模块主要负责发送邮件,它对smt...
    99+
    2023-06-14
  • Node.js中如何发送邮件
    这篇文章给大家介绍Node.js中如何发送邮件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.首先我们初始化一个Node项目npm init -y2.创建一个ap...
    99+
    2022-10-19
  • Nodejs+nodemailer如何发送邮件
    这篇文章给大家分享的是有关Nodejs+nodemailer如何发送邮件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。特点零依赖的单个模块- 代码易于审核,因为没有暗角。【推荐学...
    99+
    2022-10-19
  • laravel怎么使用163邮箱发送邮件
    这篇文章主要讲解了“laravel怎么使用163邮箱发送邮件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“laravel怎么使用163邮箱发送邮件”吧!一、首先还是现在163注册一个账号并且...
    99+
    2023-07-04
  • Python如何调用API发送邮件
    这篇文章将为大家详细讲解有关Python如何调用API发送邮件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python 调用 APIPython 调用 API 非常简单,通常需要一个称为 request...
    99+
    2023-06-14
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作