`
julylin
  • 浏览: 49564 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JavaMail--给多人发送邮件

阅读更多
package book.email;

import java.util.Date;

import javax.mail.Address;
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 MultiMailsender {

    /**
     * 发送邮件给多个接收者
     * @param mailInfo    带发送邮件的信息
     * @return
     */
    public static boolean sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo){
        MyAuthenticator authenticator = null;
        if (mailInfo.isValidate()) {
            authenticator = new MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        Session sendMailSession = Session.getInstance(mailInfo
                .getProperties(), authenticator);
        try {
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址
            Address from = new InternetAddress(mailInfo.getFromAddress());
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address[] tos = null;
            String[] receivers = mailInfo.getReceivers();
            if (receivers != null){
                // 为每个邮件接收者创建一个地址
                tos = new InternetAddress[receivers.length + 1];
                tos[0] = new InternetAddress(mailInfo.getToAddress());
                for (int i=0; i<receivers.length; i++){
                    tos[i+1] = new InternetAddress(receivers[i]);
                }
            } else {
                tos = new InternetAddress[1];
                tos[0] = new InternetAddress(mailInfo.getToAddress());
            }
            // 将所有接收者地址都添加到邮件接收者属性中
            mailMessage.setRecipients(Message.RecipientType.TO, tos);
            
            mailMessage.setSubject(mailInfo.getSubject());
            mailMessage.setSentDate(new Date());
            // 设置邮件内容
            Multipart mainPart = new MimeMultipart();
            BodyPart html = new MimeBodyPart();
            html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
            mainPart.addBodyPart(html);
            mailMessage.setContent(mainPart);
            // 发送邮件
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }
    
    /**
     * 发送带抄送的邮件
     * @param mailInfo    待发送邮件的消息
     * @return
     */
    public static boolean sendMailtoMultiCC(MultiMailSenderInfo mailInfo){
        MyAuthenticator authenticator = null;
        if (mailInfo.isValidate()) {
            authenticator = new MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        Session sendMailSession = Session.getInstance(mailInfo
                .getProperties(), authenticator);
        try {
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址
            Address from = new InternetAddress(mailInfo.getFromAddress());
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address to = new InternetAddress(mailInfo.getToAddress());
            mailMessage.setRecipient(Message.RecipientType.TO, to);
            
            // 获取抄送者信息
            String[] ccs = mailInfo.getCcs();
            if (ccs != null){
                // 为每个邮件接收者创建一个地址
                Address[] ccAdresses = new InternetAddress[ccs.length];
                for (int i=0; i<ccs.length; i++){
                    ccAdresses[i] = new InternetAddress(ccs[i]);
                }
                // 将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CC
                mailMessage.setRecipients(Message.RecipientType.CC, ccAdresses);
            } 
            
            mailMessage.setSubject(mailInfo.getSubject());
            mailMessage.setSentDate(new Date());
            // 设置邮件内容
            Multipart mainPart = new MimeMultipart();
            BodyPart html = new MimeBodyPart();
            html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
            mainPart.addBodyPart(html);
            mailMessage.setContent(mainPart);
            // 发送邮件
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    public static void main(String[] args) {
        // 创建邮件信息
        MultiMailSenderInfo mailInfo = new MultiMailSenderInfo();
        mailInfo.setMailServerHost("smtp.sina.com.cn");
        mailInfo.setMailServerPort("25");
        mailInfo.setValidate(true);
        mailInfo.setUserName("***");
        mailInfo.setPassword("***");
        mailInfo.setFromAddress("***@sina.com");
        mailInfo.setToAddress("***@163.com");
        mailInfo.setSubject("MyMail测试");
        mailInfo.setContent("我的邮件测试\n\rMy test mail\n\r");

        String[] receivers = new String[]{"***@163.com", "***@tom.com"};
        String[] ccs = receivers;
        mailInfo.setReceivers(receivers);
        mailInfo.setCcs(ccs);
        
        MultiMailsender.sendMailtoMultiReceiver(mailInfo);
        MultiMailsender.sendMailtoMultiCC(mailInfo);
    }
    
    /**
     * 发送多接收者类型邮件的基本信息
     */
    public static class MultiMailSenderInfo extends MailSenderInfo{
        // 邮件的接收者,可以有多个
        private String[] receivers;
        // 邮件的抄送者,可以有多个
        private String[] ccs;
        
        public String[] getCcs() {
            return ccs;
        }
        public void setCcs(String[] ccs) {
            this.ccs = ccs;
        }
        public String[] getReceivers() {
            return receivers;
        }
        public void setReceivers(String[] receivers) {
            this.receivers = receivers;
        }
    }
}
分享到:
评论

相关推荐

    JavaMail(2)——给多人发送、抄送.docx

    "JavaMail多人发送电子邮件" JavaMail是一种常用的Java邮件处理库,通过使用JavaMail,可以轻松地发送电子邮件。在实际应用中,经常需要发送电子邮件给多个收件人,本文将介绍如何使用JavaMail实现给多人发送电子...

    java实现给多人发送邮件多个附件

    总结,Java实现给多人发送邮件并附带多个附件,需要掌握JavaMail API的使用,包括配置SMTP服务器信息、创建Session、构建Message、添加附件以及发送邮件。在编写代码时,需要注意字符编码和错误处理,以保证邮件的...

    javamail自动发送邮件【多人多抄送多附件正文含表单正文嵌入图片】

    这是我项目中自用的javamail,可通过定时任务自动发送邮件,可以发送多人,抄送多人(但没有测试过发送人的数量上限),可以带附件,邮件正文有一个表单,表单下面还嵌入了一张饼图的png图片,满足了一般的发送邮件...

    JavaMail实现邮件发送功能,可发送、抄送、密送多人,支持多附件的发送

    在提供的 `javaMailDemo` 示例代码中,你可以找到上述步骤的完整实现,通过阅读和理解这段代码,你应该能更好地掌握 JavaMail 发送邮件的技巧。记得在实际操作时,遵循最佳实践,比如不要在代码中硬编码敏感信息(如...

    email附件发送、多人发送、抄送

    其次,多人发送邮件意味着一个邮件可以同时发给多个收件人。在邮件头部的"To"字段中,可以输入多个收件人的电子邮件地址,用逗号分隔。JavaMail API的`MimeMessage`类提供了`setRecipients()`方法,可以接受一个`...

    javamail实现邮件发送(支持多接收人、多附件)

    最后,使用 `Transport` 类的 `send()` 方法发送邮件: ```java Transport.send(message); ``` 以上就是使用 JavaMail 1.4 实现邮件发送的完整过程,支持多接收人、抄送人以及添加多个附件。注意,为了防止密码...

    java 发送多人邮件+多附件工具类

    发送邮件可能会遇到各种问题,如网络故障、认证失败等,因此在编写工具类时,应妥善处理可能出现的异常,如`MessagingException`、`IOException`等。 总之,这个"发送多人邮件+多附件工具类"利用JavaMail API实现...

    Java发送邮件给多人

    下面是一段使用JavaMail API发送邮件给多个人的示例代码: ```java import javax.mail.*; import javax.mail.internet.*; import java.util.*; public class MultiRecipientEmailSender { public static void ...

    JavaMail发送和接受邮件的一个小例子

    首先,发送邮件的核心类是`javax.mail.Session`和`javax.mail.Transport`。`Session`类是所有邮件操作的基础,它负责配置邮件服务器的连接参数,如SMTP服务器地址、端口号、用户名和密码。`Transport`类则负责将准备...

    JAVAMAIL(邮件发送)

    演示如何使用javamail包发送电子邮件,这个实例支持多人接收邮件且可发送多附件(附件名可以为中文)

    Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip

    这个"Java发送邮件_单附件_多附件_加抄送多人 _2个示例zip"的资源包含两个核心类:EmailManager.java和AnnexMailService.java,它们提供了一个强大的邮件发送功能,支持单个或多个附件,以及添加抄送人。下面将详细...

    如何用java实现邮件方式每天发送消息

    在Java编程环境中,使用Spring Boot框架来实现每天定时发送邮件是一项常见的需求。Spring Boot以其便捷的配置和强大的功能,使得创建此类应用变得简单。本文将详细介绍如何利用Spring Boot结合Spring Task(Spring的...

    jsp或servlet发送邮件源码分享

    本文将详细讲解如何使用JSP和Servlet实现邮件发送功能,特别是多人发送邮件的源码分析。 首先,`SendMail.java`文件是实现邮件发送的核心类。在Java中,我们可以利用JavaMail API来处理邮件发送。JavaMail API提供...

    基于SMTP的JAVA邮件发送基于websocket和java的多人聊天室编程资料程序编程资料

    在Java中,发送邮件通常可以通过JavaMail API来实现。JavaMail API提供了一套丰富的API,使得开发者能够轻松地通过SMTP服务器发送邮件。 #### JavaMail API介绍 JavaMail API是由Sun Microsystems提供的一个标准...

    spring邮件服务(java邮件发送)

    例如,我们可以使用`send()`方法来发送邮件,它接受`SimpleMailMessage`对象作为参数,这个对象包含了邮件的基本信息,如收件人、主题和正文。 其次,`springmail_config.xml`是Spring的配置文件,它定义了邮件服务...

    Java 邮件发送

    首先,要发送邮件,我们需要引入JavaMail的相关库。主要依赖有两个:javax.mail-api和javamail-transport,它们可以通过Maven或Gradle等构建工具添加到项目中。 下面是一份基本的Java邮件发送的步骤和关键知识点: ...

    java发送邮件源代码带附件可抄送

    在Java编程语言中,发送邮件是一项常见的任务,尤其在企业级应用中,如通知系统、自动报警服务等。本文将详细讲解如何使用Java发送带有附件并可以抄送多人的电子邮件。 首先,JavaMail API是Java中用于处理邮件的...

    java 发送email 邮件

    接下来,我们需要了解SMTP(简单邮件传输协议),这是JavaMail API用于发送邮件的主要协议。你需要知道SMTP服务器地址、端口号、用户名和密码来配置邮件会话。 以下是一个基础的Java发送邮件的示例: ```java ...

    家庭多人同步记账本

    JavaMail API是一个用于处理邮件的开源库,它可以发送和接收电子邮件。在本项目中,它被用来自动化同步过程,当某一个家庭成员添加新的记账条目后,系统会通过邮件将更新发送到其他成员的手机或邮箱,这样所有成员都...

    java实现email发送

    以上就是使用JavaMail API发送邮件的基本流程。需要注意的是,实际应用中可能需要处理更多细节,如错误处理、附件添加、使用SSL/TLS加密等。此外,一些邮件服务提供商可能会要求使用特定的端口或进行额外的身份验证...

Global site tag (gtag.js) - Google Analytics