关于从 java 程序发送电子邮件的问题

A question about sending email from java program

我需要从 java 程序发送电子邮件。我首先尝试了解基础知识。我在以下位置找到了一个片段:

https://www.javatpoint.com/example-of-sending-email-using-java-mail-api

import java.util.*;  
import javax.mail.*;  
import javax.mail.internet.*;  
import javax.activation.*;  
  
public class SendEmail  
{  
 public static void main(String [] args){  
      String to = "sonoojaiswal1988@gmail.com";//change accordingly  
      String from = "sonoojaiswal1987@gmail.com";change accordingly  
      String host = "localhost";//or IP address  
  
     //Get the session object  
      Properties properties = System.getProperties();  
      properties.setProperty("mail.smtp.host", host);  
      Session session = Session.getDefaultInstance(properties);  
  
     //compose the message  
      try{  
         MimeMessage message = new MimeMessage(session);  
         message.setFrom(new InternetAddress(from));  
         message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));  
         message.setSubject("Ping");  
         message.setText("Hello, this is example of sending email  ");  
  
         // Send message  
         Transport.send(message);  
         System.out.println("message sent successfully....");  
  
      }catch (MessagingException mex) {mex.printStackTrace();}  
   }  
}  

我的问题是,根据代码,似乎任何人都可以使用任何发件人电子邮件地址字符串并向任何收件人电子邮件地址发送无限封电子邮件。我在我的理解中遗漏了一些东西,这将防止这种情况发生。请帮忙。

我知道这不是一个编程问题,但我猜,回答这个基本问题不会花太多时间,而且我不知道任何其他同样活跃的论坛。

此示例适用于不需要身份验证的服务器。而这通常不适用于生产中使用的 smtp 服务器。此类服务器主要用于不暴露在互联网上的测试目的。因此,尽管可以像您所说的那样发送无限多封邮件,但没有人有兴趣这样做。

对于需要身份验证的服务器,需要提供凭据。在您提到的博客中对此有详细解释。