邮箱转发工具类

介绍

以下是完整的Java代码,其中包含了两个静态方法,分别用于发送纯文本邮件和包含HTML内容的邮件。两个方法的参数列表基本相同,分别为:

  • from:发送方邮箱地址,可以是一个字符串数组,用于支持多发件人。

  • to:接收方邮箱地址,可以是一个字符串数组,用于支持多收件人。

  • subject:邮件标题,字符串类型。

  • content:邮件内容,字符串类型,可以是纯文本或HTML。

  • host:SMTP服务器主机名,字符串类型,例如smtp.qq.com。

  • port:SMTP服务器端口号,整型,一般为465或587。

  • username:邮箱账号用户名,字符串类型,例如[email protected]

  • password:邮箱账号密码,字符串类型。

代码

import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;

public class EmailForwarder {

    /**
     * 发送纯文本邮件
     * @param from 发送方邮箱地址
     * @param to 接收方邮箱地址
     * @param subject 邮件标题
     * @param content 邮件内容,可以是纯文本
     * @param host SMTP服务器主机名
     * @param port SMTP服务器端口号
     * @param username 邮箱账号用户名
     * @param password 邮箱账号密码
     * @throws MessagingException
     */
    public static void sendTextEmail(String[] from, String[] to, String subject, String content, String host, int port, String username, String password) throws MessagingException {
        // 设置邮件会话属性
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", port);
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.ssl.trust", host);

        // 获取邮件会话
        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        // 创建邮件
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from[0]));
        for (int i = 1; i < from.length; i++) {
            message.addFrom(new InternetAddress[]{new InternetAddress(from[i])});
        }
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to[0]));
        for (int i = 1; i < to.length; i++) {
            message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to[i]));
        }
        message.setSubject(subject);

        // 创建邮件内容
        message.setText(content);

        // 发送邮件
        Transport.send(message);
    }

    /**
     * 发送包含HTML内容的邮件
     * @param from 发送方邮箱地址
     * @param to 接收方邮箱地址
     * @param subject 邮件标题
     * @param content 邮件内容,可以是HTML
     * @param host SMTP服务器主机名
     * @param port SMTP服务器端口号
     * @param username 邮箱账号用户名
     * @param password 邮箱账号密码
     * @throws MessagingException
     */
    public static void sendHtmlEmail(String[] from, String[] to, String subject, String content, String host, int port, String username, String password) throws MessagingException {
        // 设置邮件会话属性
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.port", port);
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.ssl.trust", host);

        // 获取邮件会话
        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });

        // 创建邮件
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from[0]));
        for (int i = 1; i < from.length; i++) {
            message.addFrom(new InternetAddress[]{new InternetAddress(from[i])});
        }
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to[0]));
        for (int i = 1; i < to.length; i++) {
            message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to[i]));
        }
        message.setSubject(subject);

        // 创建邮件内容
        MimeMultipart multipart = new MimeMultipart();
        BodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent(content, "text/html; charset=utf-8");
        multipart.addBodyPart(messageBodyPart);

        // 发送邮件
        message.setContent(multipart);
        Transport.send(message);
    }

}

依赖

在代码中,我们使用了JavaMail API和javax.activation包中的类来构建和发送邮件。需要注意的是,使用JavaMail API发送邮件时,需要在项目的classpath中引入以下依赖:


    com.sun.mail
    javax.mail
    1.6.2


    javax.activation
    activation
    1.1.1


这里我们使用了Maven来管理依赖。如果你不使用Maven,可以手动下载相关的jar包并加入到项目的classpath中。

另外,还需要注意的是,发送邮件时需要在邮箱账号中开启SMTP服务,并获取SMTP服务器的相关配置信息,例如主机名、端口号等。不同的邮箱服务商的SMTP服务器配置可能有所不同,可以在邮箱的官方网站或者帮助文档中查找相关信息。

补充

下面是国内一些常见的SMTP服务器主机名以及对应的端口号

  1. 163邮箱 SMTP主机名:smtp.163.com,端口号:25 或 465(SSL加密)

  2. qq邮箱 SMTP主机名:smtp.qq.com,端口号:25 或 465(SSL加密)

  3. 新浪邮箱 SMTP主机名:smtp.sina.com,端口号:25 或 465(SSL加密)

  4. 126邮箱 SMTP主机名:smtp.126.com,端口号:25 或 465(SSL加密)

  5. Gmail邮箱 SMTP主机名:smtp.gmail.com,端口号:25 或 465(SSL加密)

  6. Hotmail邮箱 SMTP主机名:smtp.live.com,端口号:25

  7. 139邮箱 SMTP主机名:smtp.139.com,端口号:25 或 465(SSL加密)

  8. 阿里云企业邮箱 SMTP主机名:smtp.mxhichina.com,端口号:25 或 465(SSL加密)

  9. 腾讯企业邮箱 SMTP主机名:smtp.exmail.qq.com,端口号:25 或 465(SSL加密)

  10. 雅虎邮箱 SMTP主机名:smtp.mail.yahoo.com,端口号:25 或 465(SSL加密)

  11. AOL邮箱 SMTP主机名:smtp.aol.com,端口号:587

  12. 雅虎日本邮箱 SMTP主机名:smtp.mail.yahoo.co.jp,端口号:25 或 587(SSL加密)

  13. 网易企业邮箱 SMTP主机名:smtp.qiye.163.com,端口号:25 或 465(SSL加密)

  14. 金山邮箱 SMTP主机名:smtp.ik.com,端口号:25 或 465(SSL加密)

  15. 联通邮箱 SMTP主机名:smtp.wo.cn,端口号:25

  16. 中国移动邮箱 SMTP主机名:smtp.139.com,端口号:25 或 465(SSL加密)

  17. 搜狐邮箱 SMTP主机名:smtp.sohu.com,端口号:25 或 465(SSL加密)

  18. 中华邮政邮箱 SMTP主机名:smtp.chinapost.com.cn,端口号:25 或 465(SSL加密)

  19. 雷克邮局邮箱 SMTP主机名:smtp.mail.lakecom.net,端口号:25 或 465(SSL加密)

  20. 域名邮箱 SMTP主机名:smtp.domain.com,端口号:25 或 465(SSL加密)

你可能感兴趣的:(java,资源,java,服务器,servlet)