错误的发件人邮件地址

时间:2015-05-23 12:44:02

标签: java email smtp gmail

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

原因是垃圾邮件发送者和恶意软件传播者使用这种发送假装来自其他人的邮件的技术,谷歌不想成为这类活动的一方。因此,他们将from地址限制为提前设置的任何地址,并且已经过验证属于您。

您可以在&#34;中看到有关如何设置替代&#34;的信息。您的Gmail帐户here上的地址。

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