使用 javax 发送电子邮件?

Sending email using javax?

我想使用 javax.mail 发送电子邮件。当我 运行 下面的代码时,它给我这个错误没有 hwangheera4hagarmaher 的提供者。问题出在哪里,我该如何解决这个错误?

我使用的代码是这样的:

public static boolean SendMail (String subject, String from, String Password, String Message, String to[])
{
    String Host = "hwangheera4hagarmaher@gmail.com";

    Properties Property = System.getProperties();
    Property.put("mail.hwangheera4hagarmaher.starttls.enable", true);
    Property.put ("mail.hwangheera4hagarmaher.host", Host);
    Property.put ("mail.hwangheera4hagarmaher.user", from);
    Property.put ("mail.hwangheera4hagarmaher.password", Password);
    Property.put ("mail.hwangheera4hagarmaher.port", 587);
    Property.put ("mail.hwangheera4hagarmaher.auth", "true");

    Session session = Session.getDefaultInstance(Property, null);

    MimeMessage message = new MimeMessage (session);

    try
    {
        message.setFrom(new InternetAddress (from));

        InternetAddress [] toAddress = new InternetAddress[to.length];

        for (int i = 0; i < to.length; i++)
        {
            toAddress [i] = new InternetAddress (to[i]);
        }

        for (int i = 0; i < toAddress.length; i++)
        {
            message.addRecipient(RecipientType.TO, toAddress[i]);
        }

        message.setSubject (subject);
        message.setText(Message);

        Transport transport = session.getTransport("hwangheera4hagarmaher");
        transport.connect (Host, from, Password);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();

        return true;
    }
    catch (MessagingException ex)
    {
        showMessageDialog (null, ex);
    }
return false;
}

将所有属性中的 hwangheera4hagarmaher 替换为 smtp 并且 getTransport () 除非 您自己使用该名称对提供商进行了编码。

您的主机名应该是服务器,而不是电子邮件地址。也许 smtp.gmail.com?

默认情况下 Google 为使用任何外部访问提供安全预防措施,特别是如果您使用某些电子邮件框架访问您的帐户,首先您需要授予访问权限,登录您的帐户然后转到:

https://accounts.google.com/DisplayUnlockCaptcha

然后按照其余步骤允许访问您的帐户。