java发送邮件

2017-05-19  本文已影响0人  山水风情

我这里用的邮箱主要是用来新用户注册信息的时候用来邮件激活的


<!-- 发送邮件的maven -->
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
     <groupId>javax.mail</groupId>
     <artifactId>mail</artifactId>
     <version>1.4.7</version>
 </dependency>

<!--发送邮件的gradle-->
// https://mvnrepository.com/artifact/javax.mail/mail
compile group: 'javax.mail', name: 'mail', version: '1.4.7'

package com.mcin.email;


import org.apache.log4j.Logger;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;

/**
 * Created by Mcin on 2017/5/17.
 * 邮箱发送
 */
public class Email {
    private static final Logger logger = Logger.getLogger(Email.class);

    // 我这里用的是163邮箱
    public static final String HOST = "smtp.163.com"; // 发送邮件的服务器地址
    public static final String PROTOCOL = "smtp"; // 发送邮件的协议
    public static final int PORT = 25;
    public static final String EMAIL_FROM = "发件人的email";//发件人的email
    public static final String EMAIL_PWD = "发件人密码";//发件人密码


    /**
     * 获取Session
     * @return
     */
    public static Session getSession() {
        Properties props = new Properties();
        props.put("mail.smtp.host", HOST);//设置服务器地址
        props.put("mail.store.protocol" , PROTOCOL);//设置协议
        props.put("mail.smtp.port", PORT);//设置端口
        props.put("mail.smtp.auth" , true);

        Authenticator authenticator = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(EMAIL_FROM, EMAIL_PWD);
            }
        };
        Session session = Session.getDefaultInstance(props , authenticator);

        return session;
    }





    /**
     * 发送邮件信息的内容
     * @param host
     * @param email
     * @param activeCode
     * @param ch
     * @return
     */
    public static String sendEmailcentot(String host,String email,String activeCode,char ch) {
        StringBuffer sb = new StringBuffer("点击下面链接激活账号,48小时内有效,否则重新注册账号,链接只能使用一次,请尽快激活!</br>");
        sb.append("<a href=");
        sb.append(ch);
        sb.append(host);
        sb.append("/home/activeEmail.json?action=activate&email=");
        sb.append(email);
        sb.append("&activeCode=");
        sb.append(activeCode);
        sb.append("\">"+host+"/user/register.json?action=activate&email=");
        sb.append(email);
        sb.append("&activeCode=");
        sb.append(activeCode);
        sb.append("</a>");
        return sb.toString();
    }

    /**
     * 发送邮件
     * @param toEmail
     * @param host
     * @return
     */
    public static Integer sendEmail (String toEmail,String host,String activeCode){
        Integer sendResulr = 0;
        char ch = '"';
        String content = sendEmailcentot(host,toEmail,activeCode,ch);
        Session session = getSession();
        try {
            logger.info("--开始发送邮件 --"+"邮箱 == "+toEmail+" : "+content);
            // Instantiate a message
            Message msg = new MimeMessage(session);


            msg.setFrom(new InternetAddress(EMAIL_FROM));
            InternetAddress[] address = {new InternetAddress(toEmail)};
            msg.setRecipients(Message.RecipientType.TO, address);
            msg.setSubject("账号激活邮件");
            msg.setSentDate(new Date());
            msg.setContent(content , "text/html;charset=utf-8");
            //发送信息
            Transport.send(msg);
            sendResulr = 1 ; //邮件发送成功
        } catch (MessagingException e) {
            logger.error("邮件发送出现异常 ----------- :"+e.getMessage());
            e.printStackTrace();
             return sendResulr;
        } 
        return sendResulr;
    }
}

上一篇下一篇

猜你喜欢

热点阅读