【问题标题】:mail in java with desired "from" name带有所需“发件人”名称的Java邮件
【发布时间】:2014-01-28 08:02:43
【问题描述】:

有谁知道如何在 Java 中使用所需的“发件人”名称发送电子邮件?

我有一个通过 gmail 发送邮件的代码。使用 gmail 的 smtp 设置,我可以做到这一点。但是,使用相同的 smtp 设置,我可以从不存在的邮件 ID 发送电子邮件吗?

例如: 我有一个代码,它从现有用户名(比如 abc@gmail.com)发送电子邮件,接收者从 abc@gmail.com 收到电子邮件。但是,我想要的是,我们可以从“a@def.com”之类的地方发送邮件吗?这样,用户就会收到来自“a@def.com”的邮件?

这可能吗?

【问题讨论】:

  • 你读过this post吗?
  • 为什么要用 Java 创建垃圾邮件机器人?
  • 看看我的回答
  • 我认为谷歌服务器不允许垃圾邮件,您需要使用其他服务器,如 Zimbra 服务器

标签: java email jakarta-mail html-email


【解决方案1】:

虽然 API 可能允许您这样做,但您的困难在于 SMTP 服务器的配置。任何正常的 SMTP 服务器都不会允许您控制通过该 SMTP 服务器发送的电子邮件的“发件人”电子邮件地址——这是使您的 SMTP 服务器成为垃圾邮件发送者的简单网关的第一步。适当的 SMTP 服务器(包括 Google 的)会将“发件人”电子邮件地址设置为与您登录时使用的相同。

【讨论】:

    【解决方案2】:

    您可以明确设置它。但这又取决于接受FROM 地址的SMTP 服务器。据我所知,大多数 SMTP 都配置为阻止不属于其域的发件人电子邮件 ID。如果根本没有这样配置,接收邮件客户端可能会过滤来自接收服务器的未识别发件人电子邮件 ID 的消息,并将其设置为垃圾邮件。这也会导致 SMTP 域被许多其他接收域阻止。

    因此不建议遵循。

    【讨论】:

      【解决方案3】:

      您需要mail.jaractivation.jar。就我而言,我使用以下方法实现

      import java.util.HashMap;
      import java.util.Properties;
      
      import javax.mail.Message;
      import javax.mail.internet.MimeMessage;
      import javax.mail.Message.RecipientType;
      import javax.mail.MessagingException;
      import javax.mail.Session;
      import javax.mail.internet.AddressException;
      import javax.mail.internet.InternetAddress;
      import javax.mail.Transport;
      
      class ABC{
      ......
      
      private void sendSimpleEmail(String to,String subject,String cc,String bcc,String message,HashMap mailMap)
          {
      
              String smtpHost=mailMap.get("mailhost").toString();
              String smtpPort=mailMap.get("mailport").toString();
              String authrequired=mailMap.get("auth").toString();
              String from=mailMap.get("mailsendfrom").toString();
              String SSLCheck=mailMap.get("sslconfig").toString();
      
              /* For Authentication */
              String password=mailMap.get("mailpwd").toString();
              String fromUsername=mailMap.get("mailusername").toString();
              /* For Authentication Ends*/
              Properties props = new Properties();
              props.put("mail.smtp.auth", authrequired);
              props.put("mail.smtp.host", smtpHost);
              props.put("mail.smtp.port", smtpPort);
      
              Session session=Session.getDefaultInstance(props);
      
              Message simpleMessage = new MimeMessage(session);
      
              try {
                  InternetAddress fromAddress = new InternetAddress(from);
                  InternetAddress toAddress = new InternetAddress(to);
              } catch (AddressException e) {
                  //Exception
              }
      
              try {
      
                  simpleMessage.setFrom(fromAddress);
                  simpleMessage.setRecipient(RecipientType.TO, toAddress);
                  simpleMessage.setSubject(subject);
                  simpleMessage.setText(message);
      
                  Transport.send(simpleMessage);          
              } catch (MessagingException e) {
                  // TODO Auto-generated catch block
              }                   
          }
      .......
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        • 2018-01-20
        • 1970-01-01
        • 2012-05-20
        • 2020-05-19
        • 2020-09-16
        相关资源
        最近更新 更多