java - 为什么GMail接受未经身份验证的邮件发送?

原文 标签 java gmail javamail sendmail

public class SendMail {

  private class SMTPAuthenticator extends javax.mail.Authenticator 
  {

    @Override
    public PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication("userID", "pwd");
    }
  }

   public void sendMail() throws Exception {
   String strFromIds = "xyz@gmail.com";
   String strToIds = "xyz@domain.com";
   String strSubject = "Sample Mail Subject.";
   String strContent = "Sample Mail Content";
   Properties objProperties = System.getProperties();
   objProperties.put("mail.smtp.host", "<smtp host name>");
   objProperties.put("mail.smtp.port", "25");
   objProperties.put("mail.transport.protocol", "smtp");
   objProperties.put("mail.smtp.submitter", "<user id>");
   objProperties.put("mail.smtp.auth", true);
   objProperties.put("mail.debug", "true");
   Session objSMTPSession = Session.getDefaultInstance(objProperties, new  
                                                     SMTPAuthenticator());

   Message objMessage = new MimeMessage(objSMTPSession);
   objMessage.setFrom(new InternetAddress(strFromIds));
   InternetAddress[] objToAddress = new InternetAddress[1];     
   objToAddress[0] = new InternetAddress(strToIds);
   objMessage.setRecipients(Message.RecipientType.TO, objToAddress);

   objMessage.setSubject(strSubject);

   Multipart objMultiPart = new MimeMultipart();
   MimeBodyPart objBodyPart = new MimeBodyPart();

   objBodyPart.setText(strContent);
   objMultiPart.addBodyPart(objBodyPart);

   objMessage.setContent(objMultiPart);

   Date objSentDate = new Date();
   objMessage.setSentDate(objSentDate);
   Transport.send(objMessage);
    objMessage = null;
 }

 public static void main(String[] args) {
try {
    new SendMail().sendMail();
} catch (Exception ex) {
    System.out.println("Exception in main :: " + ex);
    }
 }
}


通过使用上述代码,我可以使用Gmail邮件ID的发件人地址(例如:xyz@gmail.com)向gmail用户发送邮件,而无需提供gmail id的身份验证详细信息,

在这里,我给了我的smtp(公司邮件服务器)服务器主机名,以及我的公司邮件服务器(作为smtp主机提供)的用户名和密码。

有了这些,我以GMail用户的身份发送邮件,

但是,为什么GMAIL接受这种类型的邮件。

最佳答案

您已经发现了为什么存在垃圾邮件。 :-)

您正在通过公司的邮件服务器发送邮件。您公司的邮件服务器似乎没有检查您使用的“发件人”地址是否对您的邮件服务器有效,因此可以让您使用Gmail地址而不是公司地址。不,它不会与Gmail核对是否可以。

相关文章:

java - SparkContext和SparkSession:如何获取“parallelizePairs()”?

java - com.ibm.jsse2.util.j:在Notes代理中通过https访问页面时,证书链接错误

c# - 用于将Java的JSON与C#相互转换的映射工具

html - 订阅者电子邮件:GMail正在将高度转换为最小高度

java - Java邮件发件人地址已删除非ASCII字符

java - 使用Java添加Android日历事件

html - 删除 anchor 下划线电子邮件签名

android - Google登录Android应用

java - 发送电子邮件时发生SSL异常

java - javax.mail.Message尝试获取给定日期范围内的消息