首页 > 编程语言 >java实现发邮件功能的三种方式

java实现发邮件功能的三种方式

时间:2023-09-04 13:04:58浏览次数:51  
标签:发邮件 java String import 三种 new mail email 邮件

在Java中,有多种不同的方法可以实现发送邮件的功能。以下是几种常用的方法:

  1. 使用JavaMail API:
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class EmailSender {
    public static void sendEmail(String sender, String receiver, String subject, String message) {
        // 邮箱服务器地址和端口号
        String smtpServer = "smtp.example.com";
        int smtpPort = 587;
        
        // 发件人邮箱账号和密码
        String username = "[email protected]";
        String password = "your_password";
        
        // 创建Properties对象,用于配置SMTP服务器信息
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", smtpServer);
        props.put("mail.smtp.port", smtpPort);
        
        // 创建Session对象
        Session session = Session.getInstance(props, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(username, password);
            }
        });
        
        try {
            // 创建MimeMessage对象
            MimeMessage mimeMessage = new MimeMessage(session);
            
            // 设置发件人
            mimeMessage.setFrom(new InternetAddress(sender));
            
            // 设置收件人
            mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
            
            // 设置主题
            mimeMessage.setSubject(subject);
            
            // 设置邮件正文
            mimeMessage.setText(message);
            
            // 发送邮件
            Transport.send(mimeMessage);
            
            System.out.println("邮件发送成功");
        } catch (MessagingException e) {
            System.out.println("邮件发送失败:" + e.getMessage());
        }
    }
}
  1. 使用Spring Framework的JavaMailSender:
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

public class EmailSender {
    private JavaMailSender mailSender;
    
    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }
    
    public void sendEmail(String sender, String receiver, String subject, String message) {
        try {
            // 创建SimpleMailMessage对象
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            
            // 设置发件人
            mailMessage.setFrom(sender);
            
            // 设置收件人
            mailMessage.setTo(receiver);
            
            // 设置主题
            mailMessage.setSubject(subject);
            
            // 设置邮件正文
            mailMessage.setText(message);
            
            // 发送邮件
            mailSender.send(mailMessage);
            
            System.out.println("邮件发送成功");
        } catch (MailException e) {
            System.out.println("邮件发送失败:" + e.getMessage());
        }
    }
}
  1. 使用Apache Commons Email库:
import org.apache.commons.mail.*;

public class EmailSender {
    public static void sendEmail(String sender, String receiver, String subject, String message) {
        try {
            // 创建Email对象
            Email email = new SimpleEmail();
            
            // 设置邮箱服务器地址和端口号
            email.setHostName("smtp.example.com");
            email.setSmtpPort(587);
            
            // 设置发件人邮箱账号和密码
            email.setAuthentication("[email protected]", "your_password");
            
            // 设置发件人
            email.setFrom(sender);
            
            // 设置收件人
            email.addTo(receiver);
            
            // 设置主题
            email.setSubject(subject);
            
            // 设置邮件正文
            email.setMsg(message);
            
            // 发送邮件
            email.send();
            
            System.out.println("邮件发送成功");
        } catch (EmailException e) {
            System.out.println("邮件发送失败:" + e.getMessage());
        }
    }
}

以上是三种常用的Java发送邮件的方法,可以根据自己的需求选择适合的方法来实现发送邮件的功能。请注意替换代码中的SMTP服务器地址、端口号、发件人邮箱账号和密码,以及根据需要自定义其他邮件相关的设置。


标签:发邮件,java,String,import,三种,new,mail,email,邮件
From: https://blog.51cto.com/u_16207360/7347923

相关文章

  • 无涯教程-JavaScript - CUBEKPIMEMBER函数
    描述该函数返回关键绩效指标(KPI)属性,并在单元格中显示KPI名称。语法CUBEKPIMEMBER(connection,kpi_name,kpi_property,[caption])争论Argument描述Required/OptionalconnectionNameoftheconnectiontothecube-AtextstringRequiredkpi_nameNameoft......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • Java元注解
    工作过程中遇到以下需求:校验某些类的某些字符串属性的长度。由于不想对所有的类和属性进行枚举检查,因此,我想通过在类上添加自定义注解的方式过滤出这些类以及属性。故学习一下Java的元注解。Java元注解这里需要说一下Java的内置注解,因为Java里有几个针对注解的注解,即元注解。@......
  • Java 20 maven项目基本配置
     pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ma......
  • Java 快速排序
    思路通过一趟排序将无序数组划分成独立的两部分,其中一部分的所有元素比另外一部分的所有元素都要小,然后再按此方法对这两部分元素分别进行快速排序,整个排序过程可以递归进行,以此达到整个无序数组变成有序数组的目的。快速排序主要分为以下步骤:从无序数组中取出一个元素作为基......
  • Java 二分查找
    思路问题描述:在采用顺序存储结构的有序数组中,查找目标元素,如果目标元素存在,返回对应的数组下标。假设查找的有序数组为升序,二分查找采用以下的思路进行解决:将数组中间位置的元素与目标元素比较,如果二者相等,则查找成功;否则,从中间位置将数组分为前、后两个数组;如果中间位置......
  • Java 归并排序
    思路数组排序主要分为两个部分:划分数组和归并排序。划分数组:将待排序的无序数组分为左右两个部分,如果无序数组的起始元素下标为first,最后一个元素的下标为last,那么左右两部分之间的临界点下标mid=(first+last)/2,这两部分分别是arr[first…mid]和arr[mid+1…last];将上......
  • Java 堆排序
    思路从最后的非叶子节点开始,从后向前构建一个堆(大顶堆/小顶堆);即最后的非叶子节点和其下的叶子节点构成一个大顶堆,然后再找前面一个非叶子节点继续此时根节点是最大的数据,然后将根节点和最后一位进行交换交换后,排除最后一位最大值,再从根节点开始构建大顶堆重复2,3步骤代码......
  • 20230529 java.lang.reflect.InvocationHandler
    介绍java.lang.reflect.InvocationHandlerpublicinterfaceInvocationHandlerAPIpublicinvokeinvokeDefault调用接口的default方法......
  • 20230529 java.lang.reflect.AnnotatedElement
    介绍java.lang.reflect.AnnotatedElementpublicinterfaceAnnotatedElementAPIisAnnotationPresentgetAnnotationgetAnnotationsgetAnnotationsByTypegetDeclaredAnnotationgetDeclaredAnnotationsByTypegetDeclaredAnnotations......