前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一、导入jar文件

一、导入jar文件

作者头像
joshua317
发布2022-09-19 15:49:47
1.5K0
发布2022-09-19 15:49:47
举报
文章被收录于专栏:技术博文技术博文

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/269

使用Java应用程序发送 E-mail,需要在机子上安装 JavaMail API 和Java Activation Framework (JAF) 。

  • 可以从 Java 网站下载最新版本的 JavaMail,打开网页右侧有个 Downloads 链接,点击它下载。
  • 可以从 Java 网站下载最新版本的 JAF(版本 1.1.1)

也可以使用本站提供的下载链接,右键复制下载链接地址,进行下载:

一、导入jar文件

首先打开File | project Structure| Modules,或者使用快捷键Ctrl+Alt+Shift+S快捷键直接唤出project Structure面板

然后添加这两个jar包

二、编写代码

代码语言:javascript
复制
package com.joshua317;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

public class SendEmail {
    public static void main(String[] args) {
        // 收件人电子邮箱,TODO 换成自己的收件箱
        String to = "xxxx@qq.com";

        // 发件人电子邮箱,TODO 换成自己的发件箱
        String from = "xxx@163.com";

        // 指定发送邮件的主机为
        String host = "smtp.163.com";

        // 获取系统属性
        //Properties properties = System.getProperties();
        Properties properties = new Properties();
        // 设置邮件服务器
        properties.setProperty("mail.smtp.host", host);
        // 邮件发送协议
        properties.setProperty("mail.transport.protocol", "smtp");
        //是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)
        properties.setProperty("mail.debug","true");
        properties.setProperty("mail.smtp.auth", "true");
        // 获取默认session对象
        Session session = Session.getDefaultInstance(properties,new Authenticator(){
            @Override
            public PasswordAuthentication getPasswordAuthentication()
            {
                //发件人邮件用户名、授权码,换成自己的发件箱及授权码
                return new PasswordAuthentication("xxx@163.com", "xxxxx");
            }
        });

        try{
            // 创建默认的 MimeMessage 对象
            MimeMessage message = new MimeMessage(session);

            // Set From,设置发件人
            InternetAddress fromMail = new InternetAddress(from);
            //设置发件人名称,TODO 换成自己的发件箱
            fromMail.setPersonal(MimeUtility.encodeText("joshua317<xxx@163.com>"));
            message.setFrom(fromMail);

            // Set To: 设置收件人
            InternetAddress toMail = new InternetAddress(to);
            // TODO 换成自己的收件箱
            InternetAddress toMail2 = new InternetAddress("xxx@163.com");
            //发一个邮箱
//            message.setRecipient(Message.RecipientType.TO, toMail);

            //发多个邮箱
            Address[] allRecipients = {toMail, toMail2};
            message.setRecipients(Message.RecipientType.TO, allRecipients);

            // Set Subject: 邮件主体
            message.setSubject("发送一封测试邮件!网易邮箱!");

            // 设置消息体
            message.setSentDate(new Date());

            // 指定为混合关系
            MimeMultipart msgMultipart = new MimeMultipart("mixed");
            message.setContent(msgMultipart);

            // 邮件信息组装
            //组装的顺序非常重要,一定要先组装文本域,再组装文件
            MimeBodyPart htmlPart = new MimeBodyPart();
            // 组装内容
            htmlPart.setContent("This is message content", "text/html;charset=UTF-8");
            msgMultipart.addBodyPart(htmlPart);

            // 组装附件
            MimeBodyPart filePart = new MimeBodyPart();
            //TODO 换成自己的附件地址
            FileDataSource file_datasource = new FileDataSource("F:\\resource\\xxx.zip");
            DataHandler dh = new DataHandler(file_datasource);
            filePart.setDataHandler(dh);
            // 附件区别内嵌内容的一个特点是有文件名,为防止中文乱码要编码
            filePart.setFileName(MimeUtility.encodeText(dh.getName()));
            msgMultipart.addBodyPart(filePart);

            message.saveChanges();
            //发送
            //Transport.send(message, message.getAllRecipients());
            Transport.send(message);
            System.out.println("Sent mail successfully....");
        }catch (MessagingException | UnsupportedEncodingException mex) {
            mex.printStackTrace();
        }
    }
}

三、测试运行

四、其他

4.1 关于163邮箱IMAP/SMTP的开启

1)使用电脑,打开浏览器

2)电脑登录 mail.163.com,点击设置>POP3/SMTP/IMAP

3)客户端授权密码,点击"开启"

4)在弹出窗口中,完成手机短信验证

5)手机短信验证通过后,请设置客户端授权密码并确认

6)点击确定,确认自动开启SMTP/POP3/IMAP服务,完成客户端授权码设置

注意:

关于授权密码:

授权码是用于登录第三方邮件客户端的专用密码。

适用于登录以下服务: 您开启的服务(例如POP3/IMAP/SMTP)、Exchange/CardDAV/CalDAV服务。

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/269

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、导入jar文件
  • 二、编写代码
  • 三、测试运行
  • 四、其他
相关产品与服务
短信
腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档