Java Demo实现邮箱验证

第一步:创建web项目

第二步:添加mail.jar包

第三步:创建类

package com.muyu.bean;

import java.io.UnsupportedEncodingException;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
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.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public class SendMail {

    public static void main(String[] args) throws Exception {

        Properties prop = new Properties();
        prop.setProperty("mail.smtp.host", "smtp.163.com");
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");


        Session session = Session.getInstance(prop); // 创建出与指定邮件服务器会话的session
        /*
         * 为了看清javamail这套API到底是如何向服务器发邮件的,可以把session的Debug开关打开,
         * 把这个调试开关打开,javamail这套API会把它与服务器的交互过程打印在命令行窗口
         */
        session.setDebug(true);
        Message message = createMessage(session);


        Transport ts = session.getTransport();
        ts.connect(" 账号@163.com", " 授权验证码"); // 连接上邮件服务器,其内部会自动帮你进行base64编码
        ts.sendMessage(message, message.getAllRecipients()); // 向谁发送一封邮件
        ts.close(); // 断开与服务器的连接
    }


    private static Message createMessage(Session session) throws AddressException, MessagingException, UnsupportedEncodingException {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(" 发件人账号"));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(" 收件人账号"));
        message.setSubject("来自老公的邮箱");//邮件标题
        message.setContent("老婆,我爱你", "text/html;charset=UTF-8");//邮件内容
        message.saveChanges();

        return message;

 /*
         * 复杂的邮件发送
         */

       /* // 创建bodypart封装正文
        MimeBodyPart text = new MimeBodyPart();
        text.setContent("我是真的爱你,你知道吗?<img src='cid:1.jpg'>", "text/html;charset=UTF-8");


        // 创建bodypart封装图片
        MimeBodyPart image = new MimeBodyPart();
        image.setDataHandler(new DataHandler(new FileDataSource("src/1.jpg")));
        image.setContentID("1.jpg");


        // 创建bodypart封装附件
        MimeBodyPart attach = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource("src/那年夏天-许飞-1769044980-0.mp3"));
        attach.setDataHandler(dh);
        // System.out.println(dh.getName()); // 数据处理器获取附件名时没有中文乱码问题,显示正常


        // 只要调用了setFileName方法,它就会自动帮你生成Content-Disposition这个头字段
        attach.setFileName(MimeUtility.encodeText(dh.getName())); // 设置附件名的时候出现中文乱码问题了,该怎么解决呢?


        // 描述数据关系
        MimeMultipart content = new MimeMultipart();
        content.addBodyPart(text);
        content.addBodyPart(image);
        content.setSubType("related");


        MimeBodyPart mbp = new MimeBodyPart();
        mbp.setContent(content);


        MimeMultipart mm = new MimeMultipart();
        mm.addBodyPart(mbp);
        mm.addBodyPart(attach);
        mm.setSubType("mixed");


        message.setContent(mm);
        message.saveChanges();


        return message;
    */
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值