【问题标题】:Wrong sender mail address发件人邮件地址错误
【发布时间】:2015-08-05 10:16:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: java email smtp gmail


    【解决方案1】:

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

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

    原因是垃圾邮件发送者和恶意软件传播者使用这种技术发送假冒他人的邮件,而 Google 不想成为此类活动的参与者。因此,他们将from 地址限制为预先设置并已验证属于您的地址。

    您可以查看有关如何在您的 Gmail 帐户 here 上设置备用“发件人”地址的信息。

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

    【讨论】:

    • 这回答了我的问题,但不幸的是并没有解决我的问题。
    • @progulj 为什么不呢?您是否尝试过将您的“发件人”地址设置为 Gmail 的备用地址,还是您的问题出在其他地方?
    • 是的,我试过了,效果很好,但问题是我不知道谁会向我发送电子邮件,以及来自哪个域,所以我可能“使用不同的 SMTP 服务器没有这种限制”与此选项一起使用。有任何链接吗? :D Ty 顺便说一句。
    • 我在 MailGun 上取得了很大的成功。
    • @bphilipnyc 谢谢,这正是我所需要的 ;)
    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2012-05-31
    • 2017-07-21
    • 2012-05-25
    • 1970-01-01
    相关资源
    最近更新 更多