Java调用网易163邮箱,发送邮件

Java调用网易163邮箱,发送邮件

Java调用163邮箱发送邮件,大概分为两部分:
1.创建邮件信息,包括标题,内容等
2.创建邮件邮件链接,发送邮件

一、创建邮件链接
1.首先要有163邮箱的账号。
2. 在邮箱设置中查找smtp服务器地址,需要开启smtp服务。这个是固定的,不需要修改。
网易163邮箱的 SMTP 服务器地址为: smtp.163.com

3.发送邮件,建议使用授权码(有的邮箱叫 独立密码),确保邮箱密码的安全性。授权码在邮箱设置中进行设置。如果开启了授权码,发送邮件的时候,必须使用授权码。

这里设置开启smtp服务和授权码。我这里已经是设置好的。

在这里插入图片描述
POM文件依赖:

     <!--邮箱依赖-->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.5.0-b01</version>
        </dependency>

代码如下:

@Component
public class EmailNotofication {
    // 发件人的 邮箱 和 密码/授权码
    // PS: 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(有的邮箱称为“授权码”)
    // 对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
    private static String myEmailAccount = "发件人邮箱账号";
    private static String myEmailPassword = "授权码";

    // 发件人邮箱的 SMTP 服务器地址, 可在邮箱设置中查找,需要开启smtp服务
    // 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
    private static String smtp = "smtp.163.com";

    // 收件人邮箱
    private static String receiveMailAccount = "收件人邮箱账号";

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

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

            // 3. 创建一封邮件    session、发件人、收件人、邮件内容
            MimeMessage message = createMimeMessage(session, myEmailAccount, receiveMailAccount, emailContent);
            // 4. 根据 Session 获取邮件传输对象
            Transport transport = session.getTransport();

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

            // 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
            transport.sendMessage(message, message.getAllRecipients());
            // 7. 关闭连接
            transport.close();
        } catch (Exception e) {
            log.info("发送邮件失败:{}", e.getMessage());
        }
    }

二、创建一封简单的邮件。

ps:需要设置发件人、收件人、编码格式、邮件主题和内容。

代码如下:

   /**
     * 创建邮件
     *
     * @param session
     * @param myEmailAccount
     * @param receiveMailAccount
     * @param message
     * @return
     */
    private MimeMessage createMimeMessage(Session session, String myEmailAccount, String receiveMailAccount, String message) {
        try {
            // 1. 创建一封邮件
            MimeMessage mimeMessage = new MimeMessage(session);
            // 2. From: 发件人   emailUserName、昵称、编码格式
            mimeMessage.setFrom(new InternetAddress(myEmailAccount, "发件人名称", "UTF-8"));

            // 3. To: 收件人(可以增加多个收件人)
            mimeMessage.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMailAccount, "收件人名称", "UTF-8"));
			//多个收件人
			 /**String[] split = receiveMailAccount.split(",");
            for(int i = 0; i < split.length; i++){
                mimeMessage.addRecipient(MimeMessage.RecipientType.TO, new InternetAddress(split[i]));
            }*/
            
            // 4. Subject: 邮件主题
            mimeMessage.setSubject("邮件主题", "UTF-8");
            // 5. Content: 邮件正文(可以使用html标签)
            mimeMessage.setContent(message, "text/html;charset=UTF-8");
            // 6. 设置发件时间
            mimeMessage.setSentDate(new Date());

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

            return mimeMessage;
        } catch (Exception e) {
            log.info("创建邮件失败:{}",e.getMessage());
        }
        return null;
    }
}

如果遇到退信问题,错误:554 DT:SPM ,此错误为判定你的邮件为垃圾邮件。提交申请等待一会即可(xxxx为你的邮箱):
https://feedback.mail.126.com/antispam/complain.php?user=xxxx

  • 4
    点赞
  • 4
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

MC丶天天

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值