JavaMail发送邮件的笔记及Demo

简介:   最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误: 网络上搜索解决方式,多次尝试后发现了问题,原来是我的163邮箱账号没有开启客户端授权,因此也就没有开启SMTP服务,...

  最近碰到一个需求,就是注册用户时候需要向用户发送激活邮箱,于是照着网上搜来的demo自己试着运行了一下,发件时我用的是网易163邮箱,收件时用QQ邮箱,运行后报了一个错误:

网络上搜索解决方式,多次尝试后发现了问题,原来是我的163邮箱账号没有开启客户端授权,因此也就没有开启SMTP服务,这是无法用javamail程序作为发件人发送邮箱的,于是在设置里开始授权及服务之后,满心欢喜的再次运行,悲哀的是又报了另一个错误:

无奈再次开始调试,最后终于发现了问题,正如网友说的,因为你验证的邮箱用户名和你发送的时候添写的邮箱地址不一样,SMTP服务器驳回了你的请求,我在验证的时候使用的我自己的163邮箱,在设置发信人的时候,误把xxxxxx@163.com写成了xxxxxxx@qq.com(不能忍),改正过来以后,如愿以偿,终于可以发送邮件了,以下是代码和注释:

/**
     * javamail发邮件
     * @throws Exception 
     * @throws AddressException 
     */
    @Test
    public void sendMailDemo() throws Exception{
        
        /**
         * 1.得到session
         */
        
        // Properties是Session的属性对象,用于封装针对SMTP的一些常用属性
        Properties props=new Properties();
        //设置smtp服务器地址
        props.setProperty("mail.host", "smtp.163.com");
        //设置SMTP服务器是否需要用户认证,默认为false,设为true
        props.setProperty("mail.smtp.auth", "true");
        
        Authenticator auth=new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
        //注意:下面的登录用户名是@前边的内容,如果你的账号是haha@163.com,只需要输入haha
return new PasswordAuthentication("邮件服务器登录用户名", "登录密码"); } }; Session session = Session.getInstance(props,auth); /** * 2.创建MimeMessage */ MimeMessage msg=new MimeMessage(session); //设置发件人 msg.setFrom(new InternetAddress("发送方邮箱账号")); //设置收件人 msg.setRecipients(RecipientType.TO,"接受方邮箱账号"); //设置抄送 msg.setRecipients(RecipientType.CC,"邮箱账号"); //设置主题 msg.setSubject("javamail发送邮件Demo"); //设置内容 msg.setContent("我是邮件","text/html;charset=utf-8");
/** * 3.发送 */ Transport.send(msg); }

 下面在介绍一下发送带附件的邮件需要修改的代码,只需要将上面的:

 msg.setContent("我是邮件","text/html;charset=utf-8")

替换成下面的代码即可:

     MimeMultipart list=new MimeMultipart();
        
        //创建MimebodtPart
        MimeBodyPart part1=new MimeBodyPart();
        part1.setContent("这是一封包含附件的垃圾邮箱","text/html;charset=utf-8");
        
        list.addBodyPart(part1);
        
        //创建MimebodtPart
        MimeBodyPart part2=new MimeBodyPart();
        //设置附件内容
        part2.attachFile(new File("e:/照片/me.jpg"));
        //设置显示的文件名 顺便解决乱码问题
        part2.setFileName(MimeUtility.encodeText("哎哟,不错哦.jpg"));
        list.addBodyPart(part2);
        
        msg.setContent(list);

 

相关文章
|
8月前
|
Java Maven 数据安全/隐私保护
邮件发送轻松搞定:结合Hutool实现SpringBoot邮件功能
邮件发送轻松搞定:结合Hutool实现SpringBoot邮件功能
189 0
|
3月前
|
安全 Java 数据安全/隐私保护
SpringBoot+Email发送邮件
邮件通知是现代应用中常见的一种通信方式,特别是在需要及时反馈、告警或重要事件通知的场景下。Spring Boot提供了简单而强大的邮件发送功能,使得实现邮件通知变得轻而易举。本文将研究如何在Spring Boot中使用JavaMailSender实现邮件发送,以构建一个可靠的通知体系。
67 0
SpringBoot+Email发送邮件
|
6月前
|
Java 数据安全/隐私保护
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
【Java用法】java使用javax.mail读取邮箱,SpringBoot javax.mail获取邮件内容,根据时间段筛选邮件,内附代码,拿来即用
110 0
|
Java 测试技术 数据安全/隐私保护
SpringBoot整合Java Mail实现Outlook / Office365发送邮件
日常开发过程中,我们经常需要使用到邮件发送任务,比方说验证码的发送、日常信息的通知等。日常比较常用的邮件发送方包括:163、QQ等,本文主要讲解Outlook SMTP的开启方式、OutLook STARTTTL的配置、如何通过JavaMail来实现电子邮件的发送等。
6851 0
SpringBoot整合Java Mail实现Outlook / Office365发送邮件
|
Java 数据安全/隐私保护
Java--SpringBoot-28-发送邮件
SpringBoot自动配置了邮件发送的功能,封装成了一个starter,提供了邮件服务实例(JavaMailSenderImpl)。
89 0
Java--SpringBoot-28-发送邮件
|
监控 安全 Java
Java笔记:SpringBoot发送邮件(1)
Java笔记:SpringBoot发送邮件
131 0
Java:javax.mail通过163服务器发送邮件
Java:javax.mail通过163服务器发送邮件
108 0
|
Java API 网络安全
基于JavaMail的Java邮件发送:简单快速上手
基于JavaMail的Java邮件发送:简单快速上手
272 0
基于JavaMail的Java邮件发送:简单快速上手
|
消息中间件 Java API
SpringBoot Mail邮件任务
SpringBoot Mail邮件任务
SpringBoot Mail邮件任务
|
Java 网络安全 API
Java Mail---SMTP协议-Java发邮件(带附件)演示过程
Java Mail---SMTP协议-Java发邮件(带附件)演示过程
747 0
Java Mail---SMTP协议-Java发邮件(带附件)演示过程