Java 实现邮件的发送

开发邮箱发送功能必须看邮箱方面的资料 改一些东西  (我的是qq 邮箱哟   开通

 

已开启

0.开通qq的邮件功能

1.导入jar

2.复制我的代码就ok啦

3.应该没有问题

 
/**
 *
 */
package com.email;

/**
 * <p>Description: </p>
 * @author 朱开心
 * @date 2018年6月6日
 *
 */
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

/**
 * 服务器邮箱
 */
public class MailAuthenticator extends Authenticator{

/**
     * 用户名
     */
    private String username;
    /**
     * 登录密码
     */
    private String password;
    /**
     * 继承Authenticator类需重写此方法
     */
    @Override
    protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(username,password);
    }

public MailAuthenticator(){

}
    public MailAuthenticator(String username, String password){
        this.username = username;
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public String getPassword() {
        return password;
    }
}

 
/**
 *
 */
package com.email;

/**
 * <p>Description: </p>
 * @author 朱开心
 * @date 2018年6月6日
 *
 */
/**
 * 邮件对象
 */
public class Mail {

/**
     * 邮件标题
     */
    private String subject;
    /**
     * 邮件内容
     */
    private String content;

public Mail(){

}

public Mail(String subject, String content) {
        this.subject = subject;
        this.content = content;
    }

public String getSubject() {
        return subject;
    }

public void setSubject(String subject) {
        this.subject = subject;
    }

public String getContent() {
        return content;
    }

public void setContent(String content) {
        this.content = content;
    }

}

/**
 *
 */
package com.email;

import java.security.GeneralSecurityException;
/**
 * <p>Description: </p>
 * @author 朱开心
 * @date 2018年6月6日
 *
 */
import java.util.List;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

import com.sun.mail.util.MailSSLSocketFactory;

/**
 * 邮件发送器:可单发,可群发
 */
public class MailSender {
    /**
     * 发送邮件的Properties文件
     */
    private final transient Properties props = System.getProperties();
    /**
     * 服务器邮箱登录验证
     */
    private transient MailAuthenticator mailAuthenticator;
    /**
     * 邮箱Session
     */
    private transient Session session;
    /**
     * 初始化邮箱发送器
     *
     * @param mailServiceUrl
     *          服务器邮箱地址
     * @param username
     *          服务器邮箱用户名
     * @param password
     *          服务器邮箱登录密码
     */
    public MailSender(final String mailServiceUrl,final String username, final String password){
        init(mailServiceUrl, username, password);
    }
    /**
     * 初始化邮箱发送器
     *
     * @param username
     *          服务器邮箱用户名
     * @param password
     *          服务器邮箱登录密码
     */
    public MailSender(final String username, final String password){
        //通过邮箱地址解析smtp服务器,对大多数邮箱都管用
        final String mailServiceUrl = "smtp." + username.split("@")[1];
        init(mailServiceUrl, username, password);
    }
    /**
     * 初始化操作
     *
     * @param mailServiceUrl
     *          服务器邮箱地址
     * @param username
     *          服务器邮箱用户名
     * @param password
     *          服务器邮箱登录密码
     */
    public void init(String mailServiceUrl, String username, String password){
        //初始化props
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", mailServiceUrl);
        MailSSLSocketFactory sf;
        try {
            sf = new MailSSLSocketFactory();
             sf.setTrustAllHosts(true);  
             props.put("mail.smtp.ssl.enable", "true");  
              props.put("mail.smtp.ssl.socketFactory", sf);  
        } catch (GeneralSecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
       
       
        //服务器邮箱验证
        mailAuthenticator = new MailAuthenticator(username, password);
        //创建session,想当于邮箱登录
        session = Session.getInstance(props, mailAuthenticator);
    }
    /**
     * 发送邮件
     *
     * @param recipient
     *          收信人邮箱地址
     * @param subject
     *          邮件标题
     * @param content
     *          邮件内容
     * @throws AddressException
     * @throws MessagingException
     */
    public void send(String recipient, String subject, String content) throws AddressException, MessagingException{
        //创建mime类型邮件
        final MimeMessage msg = new MimeMessage(session);
        //设置发信人
        msg.setFrom(new InternetAddress(mailAuthenticator.getUsername()));
        //设置收信人
        msg.setRecipient(RecipientType.TO, new InternetAddress(recipient));
        //设置邮件标题
        msg.setSubject(subject);
        //设置邮件内容
        msg.setContent(content, "text/html;charset=utf-8");
        //发送邮件
        Transport.send(msg);
    }
    /**
     * 群发邮件
     *
     * @param recipients
     *          收信人们的邮箱地址
     * @param subject
     *          邮件标题
     * @param content
     *          邮件内容
     * @throws AddressException
     * @throws MessagingException
     */
    public void send(List<String> recipients, String subject, String content) throws AddressException, MessagingException{
        //创建mime类型邮件
        final MimeMessage msg = new MimeMessage(session);
        //设置发信人
        msg.setFrom(new InternetAddress(mailAuthenticator.getUsername()));
        //设置收信人们
        int num = recipients.size();
        InternetAddress[] addresses = new InternetAddress[num];
        for (int i = 0; i < num; i++) {
            addresses[i] = new InternetAddress(recipients.get(i));
        }
        msg.setRecipients(RecipientType.TO, addresses);
        //设置邮件标题
        msg.setSubject(subject);
        //设置邮件内容
        msg.setContent(content, "text/html;charset=utf-8");
        Transport.send(msg);
    }
    /**
     * 发送邮件
     *
     * @param recipient
     *          收信人邮箱地址
     * @param mail
     *          邮件对象
     * @throws AddressException
     * @throws MessagingException
     * @throws
     */
    public void send(String recipient, Mail mail) throws AddressException, MessagingException{
        this.send(recipient, mail.getSubject(), mail.getContent());
    }
    /**
     * 群发邮件
     *
     * @param recipients
     *          收信人们的邮箱地址
     * @param mail
     *          邮件对象
     * @throws AddressException
     * @throws MessagingException
     * @throws
     */
    public void send(List<String> recipients, Mail mail) throws AddressException, MessagingException{
        this.send(recipients, mail.getSubject(), mail.getContent());
    }
}

/**
 *
 */
package com.email;

/**
 * <p>Description: </p>
 * @author 朱开心
 * @date 2018年6月6日
 *
 */
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;

/**
 * 测试发送邮件
 */
public class MailTest {

public static void main(String[] args) {
        //发件人邮箱地址:这里填写要发送出去的邮箱地址即可
        String username = "798130749@qq.com";
        //发件人邮箱登录密码:这里填写要发送出去的邮箱的登录密码即可
        String password = "akxpgntfdbtubcja";//自己的邮箱秘钥 不是邮箱密码哟
        //akxpgntfdbtubcja
      //  vulyumdckcaibfga
      //  akxpgntfdbtubcja
        //创建邮箱发送器
        MailSender mailSender = new MailSender(username,password);
        //邮箱对象
        Mail mail = new Mail("zhukaixin","我是世界上最帅的男人");
        //收件人邮箱地址:这里填写收件的邮箱的地址即可
        String recipient = "1024655706@qq.com";
        try {
            mailSender.send(recipient, mail);
        } catch (AddressException e) {
            System.out.println("发信人邮箱路径不正确........");
            e.printStackTrace();
        } catch (MessagingException e) {
            System.out.println("邮件发送失败........");
            e.printStackTrace();
        }
     //   System.out.println("发送成功........");
    }
}

以上就是Java实现发送邮件的所有代码:

  自己参看网上一些大佬的代码  自己在修改的  可以发送邮件、、、、、、

Java 实现邮件的发送的更多相关文章

  1. Java实现邮件代理发送

    使用java实现邮件发送 首先需要添加jar文件mailapi.jarstmp.jar 1 import java.util.Properties; import javax.mail.Address ...

  2. JAVA Mail邮件实现发送

    package com.test;import java.util.Date;import java.util.Properties;import javax.mail.Message;import ...

  3. java实现邮件定时发送

    最近做项目时客户提出了一个需求:系统定时发送E-mail到其客户,达到通知的效果.先将实例分享给大家,如果确实有一些帮助的话,请大家来点掌声! 首先介绍java定时器(java.util.Timer) ...

  4. java判断邮件是否发送成功

    http://www.cnblogs.com/winner-0715/p/5136392.html

  5. 利用工具MailUtils实现邮件的发送,遇到的大坑,高能预警!!

    java实现邮件的发送依赖的jar包有两个:mail.jar和activation.jar,我也找到了一个工具包:itcast-tools-1.4.jar,实现原理大家可以查看源码,先放出资源链接 h ...

  6. java spring 邮件发送

    开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...

  7. 用java实现邮件发送验证码

    java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好.所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬 ...

  8. web基础---->java邮件的发送

    这里记录一下关于java邮件发送代码的编写.你在我身边也好,在天边也罢,想到世界的角落有一个你,觉得整个世界也变得温柔安定了. java邮件的发送 一.直接贴出代码,如下: package com.c ...

  9. Java Mail 邮件发送简单封装

    上一篇文章我们用写了一个Java Mail 的Demo,相信你已经可以用那个例子来发送邮件了.但是Demo 有很多的问题. 首先每次发送需要配置的东西很多,包括发件人的邮箱和密码.smtp服务器和SM ...

随机推荐

  1. 【转发】徐汉彬:Web系统大规模并发——电商秒杀与抢购

    徐汉彬:Web系统大规模并发——电商秒杀与抢购 发表于2014-12-02 09:30| 73110次阅读| 来源CSDN| 114 条评论| 作者徐汉彬 问底徐汉彬大数据 摘要:电商的秒杀和抢购,从 ...

  2. 用gdb+nm调试php c extension程序

    .so写好了是给php脚本调用的,如果php脚本执行崩掉了,.so也只能在进程中饮恨而终,这时候php脚本调试经常用的echo, print_r, var_dump都派不上用场了.即使能打印一点儿错误 ...

  3. jQuery基础,选择器

    jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架).jQuery设计的宗旨是“write Less, ...

  4. 16-math_M_PI

    头文件math.h中宏定义的是M_PI#define M_PI 3.14159265358979323846所以不需要记忆PI的值了可以直接用

  5. 更改windows服务的配置文件(app.config)必须重启服务才能生效吗?

    这个问题是前一阶段写windows服务碰到的.本来在写获取配置文件的某个配置的值的时候,通常我都是写类似下面的这么一个静态方法来获取: 1: /// <summary> 2: /// 获取 ...

  6. hdu 1556 Color the ball (线段树做法)

    Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a ...

  7. Monkey压力测试Android常见的错误类型及黑白名单的使用方法

    Android常见的错误类型有两种 1.ANR类型 1)在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸) 2)BroadcastReceiver在10秒内没有执行完毕 2.Crash类型 1)异 ...

  8. IIS 身份验证

    IIS 支持以下身份验证模式: 匿名.如果不需要对客户端进行身份验证(或者使用自定义身份验证机制,如窗体身份验证),则可将 IIS 配置为允许匿名访问.在该事件中,IIS 创建一个 Windows 令 ...

  9. (转)Asp.net页面生命周期详解任我行(1)-小试牛刀,编写页面代码

    原文地址:http://www.cnblogs.com/xuyubing/archive/2013/10/01/3348344.html 前言 很久很久以前,还是我在学校的时候,我就看了传智里面视频, ...

  10. (转)那天有个小孩教我WCF[一][1/3]

    原文地址:http://www.cnblogs.com/AaronYang/p/2950931.html 既然是小孩系列,当然要有一点基础才能快速掌握,归纳,总结的一个系列,哈哈 前言: 第一篇嘛,不 ...