如何用Java实现邮件发送?---- 网站通过邮箱激活底层代码

原创 2017年08月12日 09:57:11

本篇博客知识点:
1.简单的代码展示邮件发送
2.实际演示
3.网站中代码发邮箱的应用—通过邮箱激活账号

想要用Java发邮件必须要这两个包
这里写图片描述

package sendEmail;

import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
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;
/**
 * 邮件发送
 * @author<a href="mailto:hulonghua1996@qq.com">胡龙华</a>
 * @version 2017-8-12  上午9:51:41
 * @fileName sendEmail.java
 */
public class sendEmail {
    public static void main(String[] args) {
        String pwd = "********";
        String sendMail = "hulonghua1996@163.com";
        String reciMail = "*********";
        String subject = "代码发送邮件成功";
        String info = "代码发送邮件成功";
        send(sendMail, pwd, reciMail, info, subject);
    }
    /**
     * @param sendMail:发送邮箱
     * @param pwd     :密码
     * @param reciMail:接接收者邮箱
     * @param info   : 邮件信息
     * @param subject:邮件主题
     */
    public static void send(String sendMail,final String pwd,String reciMail,String info,String subject) {
        final String userName = sendMail.split("@")[0];
        Properties p = new Properties();
        // 如果是QQ 邮箱就把163改为qq(QQ邮箱可能因为需要授权码应该会没用)
        p.setProperty("mail.host", "smtp.163.com");
        p.setProperty("mail.smtp.auth", "true");
        //与邮箱服务器建立会话
        Session session = Session.getDefaultInstance(p,new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName,pwd);
            }

        });
        session.setDebug(true);
        //准备邮件内容
        MimeMessage msg = new MimeMessage(session);
        try {
            //从哪儿发
            msg.setFrom( new InternetAddress(sendMail));
            //发到哪儿去
            msg.setRecipient(RecipientType.TO, new InternetAddress(reciMail));
            //设置主题
            msg.setSubject(subject);
            //设置内容和编码
            msg.setContent(info,"text/html;charset=utf-8");
            //设置发送日期
            msg.setSentDate( new Date() );
            //发送
            Transport.send(msg);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }
}

我昨天测试发给QQ邮箱是可以的,今天试了一下就不行了。可能我的163邮箱 被QQ邮箱服务器定位垃圾广告了把
这里写图片描述

然后我自己给自己发 是没问题的 今天早上测试的
这里写图片描述

下面的代码是我练习的项目的代码的一部分,实现的功能是 用户在网站通过注册注册了账号,网站要验证邮箱是不是你本人在使用的,还是别人的,所以需要发送一个激活链接过去,主要是包括一个激活吧。 用户点击链接 再把激活码传给服务器,我们再去数据库验证。
(也需要前面的两个包)

package cn.hncu.pubs;

import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
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 cn.hncu.domain.User;
/**
 * @author<a href="mailto:953801304@qq.com">胡龙华</a>
 * @version 2017-8-12  上午10:05:39
 * @fileName SendMailThread.java
 */
public class SendMailThread extends Thread{
    private User user = null;
    public SendMailThread(User user) {
        this.user = user;
    }
    @Override
    public void run() {
        Properties p = new Properties();
        p.setProperty("mail.host", "smtp.163.com");
        p.setProperty("mail.smtp.auth", "true");


        Session session = Session.getDefaultInstance(p,new Authenticator() {

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 下面两个参数  一个是邮箱账号 就@前面的部分  和你的密码
                return new PasswordAuthentication("hulonghua1996","*****");
            }

        });
        session.setDebug(true);

        MimeMessage msg = new MimeMessage(session);
        try {
            msg.setFrom( new InternetAddress("hulonghua1996@163.com"));
            msg.setRecipient(RecipientType.TO, new InternetAddress(user.getEmail()));
            msg.setSubject("账号激活邮件,城院集团有有限公司欢迎你!");
            String info = "激活:<a href='http://127.0.0.1:8080/MailWeb/ActiveServlet?acode="+user.getAcode()+"'>激活</a>";
            info = info + "<br/>如果激活未成功,请把地址复制到浏览器进行手动请求以进行激活:http://127.0.0.1:8080/MailWeb/ActiveServlet?acode="+user.getAcode();
            msg.setContent(info,"text/html;charset=utf-8");
            msg.setSentDate( new Date() );

            Transport.send(msg);
        } catch (AddressException e) {
            e.printStackTrace();
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }
}
版权声明:本文为博主原创文章,大家一起学习进步。

简单的java实现邮箱发送邮件

以前自己写过的简单的java代码实现emali发送邮件 第一步先去注册一个新浪邮箱,注册好后点击设置,将服务状态打到开启状态 接下来引入jar包 下载路径:email.jar然后是代码import...
  • penyoudi1
  • penyoudi1
  • 2016年12月29日 15:57
  • 2346

使用java底层实现邮件的发送(含测试,源码)

直接上代码:3个类,两个主要的类,一个测试类:    主类(Mail): /** * @Title: Mail.java * @Package org.service.impl * @Des...
  • qq_34137397
  • qq_34137397
  • 2017年05月30日 23:32
  • 566

java实现邮箱发送功能

java实现邮箱发送功能更详细的博客说明请点击:这里利用javaMail实现邮箱的发送,通过已有的邮箱账号向其他邮箱发送邮件,比如通过已有163邮箱的账号信息发送邮件给其他邮箱(如:QQ邮箱),可以通...
  • u014316026
  • u014316026
  • 2015年08月11日 21:28
  • 2524

Java——用户激活邮件工具类

我们经常遇到在网站或者软件注册新用户时需要向我们的注册邮箱发送一封激活邮件,然后我们去邮箱点击激活连接后我们的用户名才能登陆,其过程是当我们注册成功后数据库已经存入该用户的相关信息,但是用户状态为不可...
  • u010926964
  • u010926964
  • 2015年08月31日 08:35
  • 1917

使用phpmailer发送邮件,且需要激活完整代码

//页面   CCC              用户名:         密 码 :         邮箱    :          验证码:                ...
  • zhaoxin34
  • zhaoxin34
  • 2015年03月23日 17:20
  • 554

Java发送邮件的几种方式

最近的一个项目中用到了邮件发送,所以研究了一下。将其总结下来。 要发送邮件就要用到java中的JavaMail,关于JavaMailAPI的详解呢在 (http://blog.csdn.net/i...
  • qq_32371887
  • qq_32371887
  • 2017年05月31日 16:21
  • 6267

Email 发邮件完整代码(Java实现)

直接可用,需要一个邮件的jar包即可     package com.Manage.control; import java.util.Properties; import javax.mail.Ad...
  • lp1052843207
  • lp1052843207
  • 2015年11月03日 14:25
  • 951

Java实现简单的邮件轰炸机之Java邮件发送器的设计与实现

今天给大家介绍一下如何用Java实现邮件的轰炸机,可以在此基础上修改做成一个邮件群发器,下面来看看代码实现,首先设计界面(源码下载地址在最下方): package com.b510.sendmail...
  • llqqxf
  • llqqxf
  • 2016年07月14日 16:28
  • 3252

javaEE之----------java代码发送邮件

E-Mail邮件简介: 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器我接收邮件的服务器。 发送邮件的服务器使用发送协议,现在常用的是SMTP协议。所以,通常发邮件的服务器也称为SMTP服务...
  • yangxin_blog
  • yangxin_blog
  • 2016年01月04日 16:03
  • 1473

Java Web(十三) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

加油加油。                     --WH   一、发送邮件的原理     在了解其原理之前,先要知道两个协议,SMTP和POP3       SMTP:Simple Ma...
  • xiaohai1232
  • xiaohai1232
  • 2017年03月10日 23:28
  • 1558
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何用Java实现邮件发送?---- 网站通过邮箱激活底层代码
举报原因:
原因补充:

(最多只允许输入30个字)