> 文章列表 > 邮箱转发工具类

邮箱转发工具类

邮箱转发工具类

介绍

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

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

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

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

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

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

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

  • username:邮箱账号用户名,字符串类型,例如123456@qq.com。

  • 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中引入以下依赖:

<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version>
</dependency>
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>

这里我们使用了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加密)