错误的发件人邮件地址

Wrong sender mail address

您好,我正在尝试发送电子邮件,但我经常收到错误的发件人电子邮件地址,它基本上与我接收邮件的帐户地址相同。在代码和调试中看起来我正在发送地址 OK,但是当我收到邮件时它带有错误的地址。我试过几个不同的帐户,但都遇到了同样的问题。知道我遗漏了什么或做错了什么吗?

这是我发送电子邮件的代码:

void sendEmail(Email email) throws Exception {

    final String to = email.getEmailTo();

    final String name = email.getName();

    final String lastName = email.getLastName();

    final String from = email.getEmailFrom();

    final String password = email.getPassword();

    // Assuming you are sending email from smtp.gmail.com
    String host = "smtp.gmail.com";

    Properties properties = new Properties();
    properties.put("mail.smtp.host", host);
    properties.put("mail.smtp.port", "587");
    properties.put("mail.smtp.starttls.enable", "true");
    properties.put("mail.smtp.auth", "true");

    Session session = Session.getInstance(properties, new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(to, password);
        }

    });

    session.setDebug(true);

    try {

        InternetAddress fromAddress = new InternetAddress(from, name + " "
                + lastName);

        Message message = new MimeMessage(session);
        message.setFrom(fromAddress);
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(to));
        message.setSubject(email.getSubject());
        message.setText(email.getMessage() + " " + from);
        Transport.send(message);
    } catch (MessagingException messageException) {
        throw new RuntimeException(messageException);
    }catch (Exception exception) {
        throw new RuntimeException(exception);
    }

调试:

235 2.7.0 Accepted
DEBUG SMTP: use8bit false
MAIL FROM:<my.test.email.sender@gmail.com>
250 2.1.0 OK dj7sm7618504wjb.3 - gsmtp
RCPT TO:<my.test.email.receiver@gmail.com>
250 2.1.5 OK dj7sm7618504wjb.3 - gsmtp
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   my.test.email.receiver@gmail.com
DATA
354  Go ahead dj7sm7618504wjb.3 - gsmtp
From: Email Sender <my.test.email.sender@gmail.com>
To: my.test.email.receiver@gmail.com
Message-ID: <1979522159.01432382909940.JavaMail.Pero@Pero-PC>
Subject: Hi
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Is it working?  my.test.email.sender@gmail.com.

250 2.0.0 OK 1432382910 dj7sm7618504wjb.3 - gsmtp
QUIT
221 2.0.0 closing connection dj7sm7618504wjb.3 - gsmtp

您正在使用 Google 的 SMTP 服务器发送此邮件。

当您这样做时,Google 的规则适用。它基本上将您的 Gmail 帐户作为发件人,除非您已经在您的 Gmail 帐户中预先设置了备用地址,并且这是您拥有的地址。

原因是垃圾邮件发送者和恶意软件的传播者使用这种发送邮件的技术来假装来自其他人,并且 Google 不想成为这种 activity.所以他们将 from 地址限制为任何预先设置并已验证属于您的地址。

您可以查看有关如何在 Gmail 帐户 here 上设置备用 "from" 地址的信息。

另一种选择是使用没有这种限制的不同 SMTP 服务器,但是设置一个将被所有收件人服务器信任的 SMTP 服务器并非易事 - 如果您很容易被列入黑名单不要在你的域服务器上有各种验证记录等。依赖一些可靠的服务提供商的 SMTP 服务器几乎总是最好的,但如果你这样做,你必须遵守他们的规则,他们也可能有类似的规则关于源地址。