利用JavaMail发送邮件:smtp.163.com

2023-01-05,,,

一、利用javamail发送邮件案例:

1、maven项目结构:

2、先在pom.xml里边加入javamail依赖,系统会根据坐标自动下载mail包(前提是配置好了maven):

3、配置email.properties属性文件,主要是为了不更改代码的前提下,该改变发送邮件的一些基本信息:

4、实现发送邮件的主体类sendmailutils,代码下:

package top.hzelin.util;

import java.io.ioexception;
import java.io.inputstream;
import java.util.properties;

import javax.mail.bodypart;
import javax.mail.message;
import javax.mail.messagingexception;
import javax.mail.multipart;
import javax.mail.session;
import javax.mail.transport;
import javax.mail.internet.internetaddress;
import javax.mail.internet.mimebodypart;
import javax.mail.internet.mimemessage;
import javax.mail.internet.mimemultipart;



public class sendmailutils {
    private static string from = "";
    private static string user = "";
    private static string password = "";
    /*
     * 读取属性文件的内容,并为上面上个属性赋初始值
     */
    static {
        properties prop = new properties();
        inputstream is = sendmailutils.class.getclassloader().getresourceasstream("email.properties");
        try {
            prop.load(is);
            from = prop.getproperty("from");
            user=prop.getproperty("username");
            password=prop.getproperty("password");
        } catch (ioexception e) {
            e.printstacktrace();
        }
    }
    public static void sendmail(string to,string text,string title) {
        properties props = new properties();
        props.setproperty("mail.smtp.host", "smtp.163.com");//设置邮件服务器主机名
        props.put("mail.smtp.host", "smtp.163.com");
        props.put("mail.smtp.auth", "true");//发送服务器需要身份验证
        session session = session.getdefaultinstance(props);//设置环境信息
        session.setdebug(true);
        mimemessage message = new mimemessage(session);
        multipart multipart = null;
        bodypart contentpart = null;
        transport transport = null;
        try {
            message.setfrom(from);//设置发件人
            message.addrecipient(message.recipienttype.to, new internetaddress(to));
            message.setsubject(title);
            multipart = new mimemultipart();//设置附件
            contentpart = new mimebodypart();
            contentpart.setcontent(text, "text/html;charset=utf-8");
            multipart.addbodypart(contentpart);
            message.setcontent(multipart);
            message.savechanges();
            transport = session.gettransport("smtp");
            transport.connect("smtp.163.com", user, password);
            transport.sendmessage(message, message.getallrecipients());
        } catch (messagingexception e) {
            
            e.printstacktrace();
        }finally {
            try {
                transport.close();
            } catch (messagingexception e) {
                e.printstacktrace();
            }
        }
        
        
        
    }

}

5、测试发送邮件功能是否可用sendemailtest:

注意:email.properties配置文件中的密码应该是客户端授权码,不是登录密码,设置位置如下: