Java实现邮箱发送功能实例(阿里云邮箱推送)

前言

绑定阿里云域名,创建域名账户,并配置解析域名账户,获得发送邮箱的权限,上限两百封,超出要¥…

阿里云邮件推送控制台

https://www.aliyun.com/product/directmail

申请邮箱并解析域名

https://yq.aliyun.com/articles/707997

1. 邮箱信息实体类

package cn.bitqian.mail.test;

/**
 * 邮件内容实体类
 * @author echo lovely
 * @date 2020/9/18 15:47
 */
public class MailInfo {

  // 发件人账户
  private String sendEmailAccount;

  // 发件人密码
  private String sendEmailPassword;

  // 收件人账户
  private String receiveMailAccount;

  // 发送人姓名
  private String sendPersonName;

  // 收件人姓名
  private String receivePersonName;

  // 邮件标题
  private String mailTitle;

  // 邮件正文
  private String mailContent;

  public MailInfo(String sendEmailAccount, String sendEmailPassword, String receiveMailAccount,
          String sendPersonName, String receivePersonName,
          String mailTitle, String mailContent) {
    this.sendEmailAccount = sendEmailAccount;
    this.sendEmailPassword = sendEmailPassword;
    this.receiveMailAccount = receiveMailAccount;
    this.sendPersonName = sendPersonName;
    this.receivePersonName = receivePersonName;
    this.mailTitle = mailTitle;
    this.mailContent = mailContent;
  }

  public String getSendEmailAccount() {
    return sendEmailAccount;
  }

  public void setSendEmailAccount(String sendEmailAccount) {
    this.sendEmailAccount = sendEmailAccount;
  }

  public String getSendEmailPassword() {
    return sendEmailPassword;
  }

  public void setSendEmailPassword(String sendEmailPassword) {
    this.sendEmailPassword = sendEmailPassword;
  }

  public String getReceiveMailAccount() {
    return receiveMailAccount;
  }

  public void setReceiveMailAccount(String receiveMailAccount) {
    this.receiveMailAccount = receiveMailAccount;
  }

  public String getMailTitle() {
    return mailTitle;
  }

  public void setMailTitle(String mailTitle) {
    this.mailTitle = mailTitle;
  }

  public String getMailContent() {
    return mailContent;
  }

  public void setMailContent(String mailContent) {
    this.mailContent = mailContent;
  }

  public String getSendPersonName() {
    return sendPersonName;
  }

  public void setSendPersonName(String sendPersonName) {
    this.sendPersonName = sendPersonName;
  }

  public String getReceivePersonName() {
    return receivePersonName;
  }

  public void setReceivePersonName(String receivePersonName) {
    this.receivePersonName = receivePersonName;
  }
}

2. jar包依赖

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
 </dependency>

 <!-- mail dependency -->
 <dependency>
  <groupId>com.sun.mail</groupId>
  <artifactId>javax.mail</artifactId>
  <version>1.6.2</version>
 </dependency>

3. 发送邮箱实现

注意:

1. 更改下面的属性,与实体类对应

代码实现

package cn.bitqian.mail.test;

import org.junit.Test;

import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;

/**
 * 邮件发送工具类
 * @author echo lovely
 * @date 2020/9/18 15:54
 */
public class MailSendUtils {

  // 邮箱smtp协议 这里是使用阿里云的
  public static final String myEmailSMTPHost = "smtpdm.aliyun.com";

  @Test
  public void test() {
    MailInfo mailInfo = new MailInfo("控制台所绑定的邮箱账户名",
        "绑定账户邮箱密码",
        "收件人邮箱名", "发件人姓名",
        "收件人姓名", "邮箱标题", "邮箱内容");
    try {
      sendEmail(mailInfo);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void sendEmail(MailInfo mailInfo) throws Exception {

    // 1. 创建参数配置, 用于连接邮件服务器的参数配置
    Properties props = new Properties();          // 参数配置
    props.setProperty("mail.transport.protocol", "smtp");  // 使用的协议(JavaMail规范要求)
    props.setProperty("mail.smtp.host", myEmailSMTPHost);  // 发件人的邮箱的 SMTP 服务器地址
    props.setProperty("mail.smtp.auth", "true");      // 需要请求认证

    // 2. 根据配置创建会话对象, 用于和邮件服务器交互
    Session session = Session.getInstance(props);
    session.setDebug(true);                 // 设置为debug模式, 可以查看详细的发送 log

    // 3. 创建一封邮件
    MimeMessage message = new MailSendUtils().createMimeMessage(session, mailInfo);

    // 4. 根据 Session 获取邮件传输对象
    Transport transport = session.getTransport();

    // 5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错
    transport.connect(mailInfo.getSendEmailAccount(), mailInfo.getSendEmailPassword());

    // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
    transport.sendMessage(message, message.getAllRecipients());

    // 7. 关闭连接
    transport.close();
  }

  public MimeMessage createMimeMessage(Session session, MailInfo mailInfo) throws Exception {
    // 1. 创建一封邮件
    MimeMessage message = new MimeMessage(session);

    // 2. From: 发件人(昵称有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改昵称)
    message.setFrom(new InternetAddress(mailInfo.getSendEmailAccount(), mailInfo.getSendPersonName(), "UTF-8"));

    // 3. To: 收件人(可以增加多个收件人、抄送、密送)
    message.setRecipient(MimeMessage.RecipientType.TO,
        new InternetAddress(mailInfo.getReceiveMailAccount(), mailInfo.getReceivePersonName(), "UTF-8"));

    // 4. Subject: 邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题)
    message.setSubject(mailInfo.getMailTitle(), "UTF-8");

    // 5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容)
    message.setContent(mailInfo.getMailContent(), "text/html;charset=UTF-8");

    // 6. 设置发件时间
    message.setSentDate(new Date());

    // 7. 保存设置
    message.saveChanges();

    return message;
  }

}

总结

到此这篇关于Java实现邮箱发送功能(阿里云邮箱推送)的文章就介绍到这了,更多相关Java邮箱发送(阿里云邮箱推送)内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java实现邮件发送QQ邮箱带附件

    本文实例为大家分享了Java实现邮件发送QQ邮箱带附件的具体代码,供大家参考,具体内容如下 添加依赖 <!-- https://mvnrepository.com/artifact/javax.mail/mail --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version>

  • Java基于JavaMail实现向QQ邮箱发送邮件

    最近项目在做新闻爬虫,想实现这个功能:爬虫某个页面失败后,把这个页面的 url 发到邮箱.最终实现的效果图如下,后期可以加上过滤标签.失败状态码等,方便分类搜索异常. 开发人员可以根据邮件里的 url 和堆栈信息,分析爬虫失败的原因. 是不是服务器 down 了? 还是爬虫的 Dom 解析没有解析到内容? 还是正则表达式对于这个页面不适用? 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 SMTP 服务 注意开启完之后,QQ 邮箱会生成一个授权码,在代码里连接邮箱使用这个授权码而不是原

  • java实现163邮箱发送邮件到qq邮箱成功案例

    下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相关代码,具体解释可以参考代码中注释: package test; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties; import java.ut

  • liunx肉鸡上建立VPN的图文方法

    花了两天时间研究,感觉pptpd貌似要简单的多,而且成功率挺高.没有平台限制.此文就拿centos最新版5.2来做vpn服务器.为教材,其他发行版都大同小异. 第一步,把需要的工具先wget上去.          wget http://poptop.sourceforge.net/yum/stable/packages/dkms-2.0.17.5-1.noarch.rpm          wget http://poptop.sourceforge.net/yum/stable/packa

  • java web实现邮箱发送功能

    本文实例为大家分享了java web实现邮箱发送功能的具体代码,供大家参考,具体内容如下 1.邮箱协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所有本文也只会涉及到SMTP协议.SMTP 是 Simple Mail Transfer Protocol 的简称,即简单邮件传输协议. 2.需要使用的jar包 下载地址 3.代码实现 package com.bhkj.ShoppingMall

  • Java发送邮箱验证码、session校验功能

    本篇主要描述"发送邮箱验证码.session校验"相关前(html\js)后(java)台代码,业务逻辑示例,闲话少诉,直接上代码. 1.引入的jar包是mail-1.4.jar 2.java底层发送邮箱方法 public boolean sendEMail(Map<String, Object> map) { log.info("電子郵件接口執行開始!"); String from = Cache.getInstance().getParamsCons

  • Java实现邮箱发送功能实例(阿里云邮箱推送)

    前言 绑定阿里云域名,创建域名账户,并配置解析域名账户,获得发送邮箱的权限,上限两百封,超出要¥- 阿里云邮件推送控制台 https://www.aliyun.com/product/directmail 申请邮箱并解析域名 https://yq.aliyun.com/articles/707997 1. 邮箱信息实体类 package cn.bitqian.mail.test; /** * 邮件内容实体类 * @author echo lovely * @date 2020/9/18 15:4

  • Java实现FTP服务器功能实例代码

    FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Download).FTP是实时联机服务,在使用它之前必须是具有该服务的一个用户(用户名和口令),工作时客户端必须先登录到作为服务器一方的计算机上,用户登录后可以进行文件搜索和文件传送等有关操作,如改变当前工作目录.列文件目录.设置传输参数及传送文件等.使用FTP可以传送所有类型的文件,如文本文件.二进制可执

  • 基于java使用钉钉机器人向钉钉群推送消息

    这篇文章主要介绍了基于java使用钉钉机器人向钉钉群推送消息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 第一步.登录钉钉电脑版,获得钉钉机器人的webhook; 第二步,用java发送post请求给钉钉完成消息推送 package com.thinkgem.wlw.modules.lhjh.DingTalk; import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import

  • SpringBoot配置Email发送功能实例

    本篇介绍在SpringBoot中配置Email服务的具体步骤,以及常见的异常分析. 具体案例以QQ邮箱以及QQ企业邮箱为例. QQ邮箱发送方式 QQ企业邮箱发送方式 总结 tips: 下面提到的hashIndex指的是一个元素put到hashmap中时,要根据其key.hashcode & (table.size()-1)来决定其在table中的位置. table是一个数组,类型为Node.Node是hashmap的一个内部类,用来描述hashmap的元素的一些属性. 1.相关依赖包 <pa

  • Java实现邮件发送功能

    Java实现邮件发送的具体代码,供大家参考,具体内容如下 一.邮件服务器与传输协议 要在网络上实现邮件功能,必须要有专门的邮件服务器.这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中. SMTP服务器地址:一般是 smtp.xxx.com,比如163邮箱是smtp.163.com,qq邮箱是smtp.qq.com. SMTP协议 通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器). POP3协议 通

  • PHP实现的消息实时推送功能【基于反ajax推送】

    本文实例讲述了PHP实现的消息实时推送功能.分享给大家供大家参考,具体如下: 入口文件index.html <!DOCTYPE HTML> <html> <head> <title>反ajax推送</title> <style> .send{color:#555;text-align: left;} .require{color:blue;text-align: right;} .content_box{text-align: cen

  • Java实现随机验证码功能实例代码

    现在许多系统的注册.登录或者发布信息模块都添加的随机码功能,就是为了避免自动注册程序或者自动发布程序的使用.验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行番茄花园xp系统下载提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交信息无效.为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰线或者将字符进行扭曲,增加自动识别的难度. 复制代码 代码如下: package com.servlet;import java.awt

  • java实现留言板功能实例

    JSP+JavaBean的留言板技术 <span style="font-size:16px;">Messages.html <HTML></span><span style="font-size:16px;"><HEAD> <TITLE> message board </TITLE></HEAD> <BODY> <center>留言板</c

  • 利用Java+MySQL实现附近功能实例

    前言 在移动互联网广泛发展的今天,APP开发成为许多企业进入移动互联网的首选,笔者开发了众多的APP,发现很多app都有这样一个功能,那就是获取附近的人,怎么样来获取附近的人呢?其实很简单,就是要时刻记录用户的坐标(经纬度)信息到数据库中,然后根据当前用户的坐标,搜索数据库中,和当前坐标位置在 一定范围内的所有用户. 其实对于那种地理位置不会变的两个主体之间的距离,最好是直接将结果静态化.也就是直接写死在配置里. 比如,找自己家附近的地铁站. 这种情况下,一般而言"家"这个主体是不会轻

随机推荐