代码如下:

package com.weimob.finance.utils;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

/** 
 * Java Mail 工具类 
 *  
 * @author XueQi 
 * @version 1.0 
 *  
 */  
public class MailUtils {  
    private static String host;  
    private static String username;  
    private static String password;  
    private static String from;  
    private static String nick;  
  
    static {  
        try {  
            // Test Data  
            host = "smtp.qq.com";  
            username = "yourqq@qq.com";  
            password = "*******";  
            from = "yourqq@qq.com";  
            nick = "nickinfo";  
            // nick + from 组成邮箱的发件人信息  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
  
    /** 
     * 发送邮件 
     *  
     * @param to 
     *            收件人列表,以","分割 
     * @param subject 
     *            标题 
     * @param body 
     *            内容 
     * @param filepath 
     *            附件列表,无附件传递null 
     * @return 
     * @throws MessagingException 
     * @throws AddressException 
     * @throws UnsupportedEncodingException 
     */  
    public static boolean sendMail(String to, String subject, String body,  
            List<String> filepath) throws AddressException, MessagingException,  
            UnsupportedEncodingException {  
        // 参数修饰  
        if (body == null) {  
            body = "";  
        }  
        if (subject == null) {  
            subject = "无主题";  
        }  
        // 创建Properties对象  
        Properties props = System.getProperties();  
        // 创建信件服务器  
        props.put("mail.smtp.host", host);  
        props.put("mail.smtp.auth", "true"); // 通过验证  
        props.put("mail.smtp.port", "465");
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.ssl.enable", "true");
       //props.put("mail.debug", "true");
        // 得到默认的对话对象  
        Session session = Session.getDefaultInstance(props, null);  
        // 创建一个消息,并初始化该消息的各项元素  
        MimeMessage msg = new MimeMessage(session);  
        nick = MimeUtility.encodeText(nick);  
        msg.setFrom(new InternetAddress(nick + "<" + from + ">"));  
        // 创建收件人列表  
        if (to != null && to.trim().length() > 0) {  
            String[] arr = to.split(",");  
            int receiverCount = arr.length;  
            if (receiverCount > 0) {  
                InternetAddress[] address = new InternetAddress[receiverCount];  
                for (int i = 0; i < receiverCount; i++) {  
                    address[i] = new InternetAddress(arr[i]);  
                }  
                msg.addRecipients(Message.RecipientType.TO, address);  
                msg.setSubject(subject);  
                // 后面的BodyPart将加入到此处创建的Multipart中  
                Multipart mp = new MimeMultipart();  
                // 附件操作  
                if (filepath != null && filepath.size() > 0) {  
                    for (String filename : filepath) {  
                        MimeBodyPart mbp = new MimeBodyPart();  
                        // 得到数据源  
                        FileDataSource fds = new FileDataSource(filename);  
                        // 得到附件本身并至入BodyPart  
                        mbp.setDataHandler(new DataHandler(fds));  
                        // 得到文件名同样至入BodyPart  
                        mbp.setFileName(fds.getName());  
                        mp.addBodyPart(mbp);  
                    }  
                    MimeBodyPart mbp = new MimeBodyPart();  
                    mbp.setText(body);  
                    mp.addBodyPart(mbp);  
                    // 移走集合中的所有元素  
                    filepath.clear();  
                    // Multipart加入到信件  
                    msg.setContent(mp);  
                } else {  
                    // 设置邮件正文  
                    msg.setText(body);  
                }  
                // 设置信件头的发送日期  
                msg.setSentDate(new Date());  
                msg.saveChanges();  
                // 发送信件  
                Transport transport = session.getTransport("smtp");  
                transport.connect(username, password);
                transport.sendMessage(msg,  
                        msg.getRecipients(Message.RecipientType.TO));  
                transport.close();  
                return true;  
            } else {  
                System.out.println("None receiver!");  
                return false;  
            }  
        } else {  
            System.out.println("None receiver!");  
            return false;  
        }  
    }  
  
    public static void main(String[] args) throws AddressException,  
            UnsupportedEncodingException, MessagingException {  
        sendMail("toother@qq.com,yourqq@qq.com", "注册信息邮件", "注册邮件,有附件", null);
        System.out.println("sendMail success!");
    }  
}

准备过程:

1.QQ邮箱两个

2.发送邮件的jar包

mail.jar

<dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.5.0-b01</version>

</dependency>

3.用QQ给QQ发送邮件,发送方得开启第三方登录,也就是授权登录,下面就是获取授权码解释链接

需要开始POP3和SMTP,还有点击生成授权码

4.java代码(上面已附)

5运行,最后显示 250 Mail OK即发送成功

中间可能遇到的问题:

1.邮箱,帐号,密码配置不正确导致报connection failed error!

2.邮箱没有开启smpt协议。如上面步骤3操作

3.报 java.io.FileNotFoundException:

原因是,eclipse 自带的mail jar包与maven导入的mail jar包冲突,删除掉j2ee中mail jar ,冲突即可解决!

Java实现发邮件功能相关推荐

  1. 如何用java实现发邮件功能

    如何用java实现发邮件功能 前言 前置条件 邮件服务器 电子邮件协议 JavaMail 实现 参考 前言 今天突然心学来潮,想用Java来实现发邮件的功能,想想这个在实际中还是蛮有用的,比如我举几个 ...

  2. Java实现发邮件功能---网易邮箱

    目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...

  3. java之实现发邮件功能

    实现发邮件功能 1.配置邮件服务器主机名:private static String myEmailSMTPHost = "smtp.qq.com";(邮箱服务器前面加" ...

  4. Spring Java Mail发邮件

    今天测试了下spring的发邮件的功能 下上代码 在说遇到的问题 首先在applicationContext.xml配置邮件信息 <bean id="mailSender" ...

  5. javaMail实现发邮件功能

    基础概念 1.SMTP邮件发送的请求的邮件服务器简称为SMTP服务器 默认端口号25 2.POP3协议 全名:邮局协议版本3 用来接收电子邮件 3.javaMial 顾名思义开发处理电子邮件的编程接口 ...

  6. 西门子精智HMI-TP1200发邮件功能

    不是所有的工厂都可以派个员工,24小时盯着设备.因此我们可以借助西门子人机界面的自动发送邮件功能,可以实现远程报警功能,! 具体步骤如下: 服务器名称.端口:可以查看所使用邮箱的SMTP服务器设置(如 ...

  7. 简单快捷实现ASP在线发邮件功能

    简单快捷实现ASP在线发邮件功能 在编写网上应用程序时,经常碰到需要在线发送邮件的问题,邮件内容是由程序动态决定的,如果你采用的是ASP方式来编写网上应用程序,如何简单.快捷地实现这一功能呢? 笔者在 ...

  8. 使用PHPMailer实现PHP通过QQ邮箱发邮件功能

    第一步 composer require phpmailer/phpmailer 或直接访问https://github.com/PHPMailer/PHPMailer/下载 第二步 检查是否开启so ...

  9. python定时发邮件功能

    我是python初学者,请多多指导,谢谢. 最近用python做了一个定时发邮件功能,位置https://www.aliyundrive.com/s/aRaFBwnYtxr,欢迎查看源码,阿里云盘下载 ...

最新文章

  1. bigdecimal 和负数比较_Java中BigDecimal精度和相等比较的坑
  2. 人像拍摄时眼部合焦的技巧
  3. 《C语言深度解剖》学习笔记之符号
  4. 机器学习基础-吴恩达-coursera-(第一周学习笔记)----Introduction and Linear Regression
  5. 域名带后缀_[Python 爬虫]获取顶级域名及对应的 WHOIS Server 及 whoisservers.txt 下载...
  6. 作者:姜春宇(1987-),男,中国信息通信研究院移动互联网与大数据部工程师,数据中心联盟大数据技术与产品工作组组长。...
  7. mac下缺乏make wget怎么办?
  8. dialog能提交数据吗_硬盘坏了能恢复数据吗?实用硬盘修复软件
  9. 多个JVM之间,能否共用同样的类?
  10. c++常用备忘(持续更新)
  11. 用Python 操作Web 前端 基础 1
  12. 学习记录:xmind2testcase测试用例模板
  13. 图书租借管理系统java_阅览室图书租借管理系统下载
  14. 计算机硬盘ssd,怎样判断电脑装的是不是固态硬盘
  15. 6自由度机械臂建模与仿真
  16. 共享打印机服务器脱机状态,打印机脱机工作怎么恢复 共享的打印机脱机状态...
  17. 忘记windows密码怎么办,教你五招!
  18. windows winrar 指令_WinRAR的命令行模式用法介绍
  19. 计算机评游戏图形低,5常见的PC游戏图形选项说明 | MOS86
  20. 点云文件格式转换——TXT、xyz等转换成pcd

热门文章

  1. 模,原码,补码,反码
  2. 高效解决阿里云远程桌面连接出现credssp加密oracle修正
  3. 认识区块链,认知区块链——百花争鸣
  4. 区块链将会怎样颠覆Google、Amazon、Facebook和Apple?
  5. int 长度 mysql_MySQL int 类型的长度和范围解惑
  6. java.io.IOException: Expected at least 2 bytes
  7. sqlserver update join 多关联更新
  8. 第一章Web技术概述
  9. jwt-auth官方文档
  10. 【h5白鹭引擎】如何快速开发一个小游戏