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. 通过helloworld来认识下backbone

    Backbone主要涉及3部分:model,collection和view.而这个框架的优势在于:数据与视图分离,通过操作model来自动更新view. 根据我的个人经验,直接写个简单的例子是最最直观 ...

  2. js 操作table

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs ...

  3. ROS naviagtion analysis: costmap_2d--CostmapLayer

    博客转自:https://blog.csdn.net/u013158492/article/details/50493220 这个类是为ObstacleLayer StaticLayer voxelL ...

  4. Installing XGBoost on Mac OSX

      0. Get gcc with open mp.  Just paste and execute the following command in your terminal, once Home ...

  5. python3-递归

    # Auther: Aaron Fan """递归特性:1. 必须有一个明确的结束条件2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少3. 递归效率不高,递 ...

  6. PHP中 null ,false , 区别

    先来测试一下吧: if(0 ==''){ echo '<br/>在PHP中0 ==\'\'' ; } if(0 !==''){ echo '<br/>在PHP中0 !==\'\ ...

  7. Django-Web框架之创建项目和应用

    Django我们是基于python3来演示的.首先我们来安装一下django框架.使用pip3 install django安装的是最新的版本: 我们在pycharm中创建django工程.如图所示: ...

  8. Claims Based Authentication and Token Based Authentication和WIF

    基于声明的认证方式,其最大特性是可传递(一方面是由授信的Issuer,即claims持有方,发送到你的应用上,注意信任是单向的.例如QQ集成登录,登录成功后,QQ会向你的应用发送claims.另一方面 ...

  9. Razor内幕之解析

    ASPX语法比较简单,所以ASPX解析器几乎完全是通过正则表达式来实现的.Razor解析器与ASPX解析器之间有很大不同,它实际上分为三个独立的组件: 1)理解基础HTML语法的标记解析器: 2)理解 ...

  10. Linq学习<一>

    lambda查询语法: var result =arrarylist.where(n=>n.contains("l"))  简化的委托方法实例 linq查询结构: var  ...