【Java】使用smtp和pop3协议,实现邮件收发

使用到的包: javax.mail-1.5.1.jar

  • 发邮件的时候
    - 向运维: 维护服务器linux
    - 索要:
    - smtp服务器地址, smtp.163.com
    - 发送邮件的端口号: 默认25
    - 发件人的账号和密码

邮件发送封装库代码

import java.util.Properties;
import javax.mail.Address;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendJEmail {
    /*
    * 拷贝代码直接将下面四个属性改成自己的就可以了
    * */
    static final String smtphost = "smtp.163.com";  // 发送邮件的服务商
    static final String from = ""; 				// 邮件发送人的邮件地址
    static final String username = "";  	//发件人的邮件帐户
    static final String password = "";   					//发件人的邮件密码
    
    public static boolean sendMail(String email, String emailMsg) {
        String to = email; 										// 邮件接收人的邮件地址
        
        //定义Properties对象,设置环境信息
        Properties props = System.getProperties();

        //设置邮件服务器的地址
        props.setProperty("mail.smtp.host", smtphost); // 指定的smtp服务器
        props.setProperty("mail.smtp.auth", "true");
        props.setProperty("mail.transport.protocol", "smtp");//设置发送邮件使用的协议
        //创建Session对象,session对象表示整个邮件的环境信息
        Session session = Session.getInstance(props);
        //设置输出调试信息
        session.setDebug(true);
        try {
            //Message的实例对象表示一封电子邮件
            MimeMessage message = new MimeMessage(session);
            //设置发件人的地址
            message.setFrom(new InternetAddress(from));
            //设置主题
            message.setSubject("用户激活");
            //设置邮件的文本内容
            //message.setText("Welcome to JavaMail World!");
            message.setContent((emailMsg),"text/html;charset=utf-8");

            //设置附件
            //message.setDataHandler(dh);

            //从session的环境中获取发送邮件的对象
            Transport transport=session.getTransport();
            //连接邮件服务器
            transport.connect(smtphost,25, username, password);
            //设置收件人地址,并发送消息
            transport.sendMessage(message,new Address[]{new InternetAddress(to)});
            transport.close();
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
    }
}

以上代码实现后, 直接在service层, 在注册成功之后,调用发送邮件认证类

String link = "http://localhost:8080/BookStore1_war_exploded/active?activeCode=" + user.getActiveCode();
String html = "<a href="+ link +">这里填写激活账号的提示语句</a>";
SendJEmail.sendMail(user.getEmail(), html);

版权声明:本文为weixin_43753747原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。