使用QQ邮箱发送邮件,javax.mail

public class TestEmail {
    // 发件人地址
    public static String senderAddress = "******@qq.com";
    // 收件人地址
    public static String recipientAddress = "*****@foxmail.com";
    // 发件人账户名
    public static String senderAccount = "*******";
    //授权码
    public static String senderPassword = "********";

    public static void main(String[] args) throws Exception {
        // 1、连接邮件服务器的参数配置
        Properties props = new Properties();
        // 设置用户的认证方式
        props.setProperty("mail.smtp.auth", "true");
        // 设置传输协议
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.smtp.ssl.enable", "true");// QQ邮箱的SSL加密
        // 设置发件人的SMTP服务器地址
        props.setProperty("mail.smtp.host", "smtp.qq.com");
        // 2、创建定义整个应用程序所需的环境信息的 Session 对象
        Session session = Session.getInstance(props);
        // 设置调试信息在控制台打印出来
        session.setDebug(true);
        // 3、创建邮件的实例对象
        Message msg = getMimeMessage(session);
        // 4、根据session对象获取邮件传输对象Transport
        Transport transport = session.getTransport();
        // 设置发件人的账户名和密码
        transport.connect(senderAccount, senderPassword);
        // 发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人,
        // 抄送人, 密送人
        transport.sendMessage(msg, msg.getAllRecipients());
        // 如果只想发送给指定的人,可以如下写法
        // transport.sendMessage(msg, new Address[]{new
        // InternetAddress("[email protected]")});
        // 5、关闭邮件连接
        transport.close();
    }

    /**
     * 获得创建一封邮件的实例对象
     * 
     * @param session
     * @return
     * @throws MessagingException
     * @throws AddressException
     */
    public static MimeMessage getMimeMessage(Session session) throws Exception {
        // 创建一封邮件的实例对象
        MimeMessage msg = new MimeMessage(session);
        // 设置发件人地址
        msg.setFrom(new InternetAddress(senderAddress));
        /**
         * 设置收件人地址(可以增加多个收件人、抄送、密送),即下面这一行代码书写多行 MimeMessage.RecipientType.TO:发送
         * MimeMessage.RecipientType.CC:抄送 MimeMessage.RecipientType.BCC:密送
         */
        msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(recipientAddress));
        // 设置邮件主题
        msg.setSubject("邮件主题", "UTF-8");
        // 设置邮件正文
        msg.setContent("邮件,收到请回复", "text/html;charset=UTF-8");
        // 整封邮件的MINE消息体
        MimeMultipart msgMultipart = new MimeMultipart("mixed");// 混合的组合关系
        // 设置邮件的MINE消息体
        msg.setContent(msgMultipart);
        // 设置邮件的发送时间,默认立即发送
        msg.setSentDate(new Date());
        // 附件1
        MimeBodyPart attch1 = new MimeBodyPart();

        // 把内容,附件1,附件2加入到 MINE消息体中
        msgMultipart.addBodyPart(attch1);

        // 把文件,添加到附件1中
        // 数据源
        DataSource ds1 = new FileDataSource(new File("C:/Users/Administrator/Desktop/test.docx"));
        // 数据处理器
        DataHandler dh1 = new DataHandler(ds1);
        // 设置第一个附件的数据
        attch1.setDataHandler(dh1);
        
        // 设置第一个附件的文件名
        attch1.setFileName("test.docx");
        // 生成文件邮件
        msg.saveChanges();
        // 输出
        /*OutputStream os = new FileOutputStream("C:/Users/H__D/Desktop/demo.eml");
        msg.writeTo(os);
        os.close();*/
        return msg;
    }
}

你可能感兴趣的:(Java,邮件)