java - 如何从需要在 JAVA 中进行身份验证的 HTTP 代理后面的 Gmail 帐户发送电子邮件?

标签 java email proxy

我的办公室网络使用需要身份验证的 HTTPS 代理。我需要一个可以通过 Gmail 帐户发送电子邮件的应用程序。我对JAVA有一些基础知识。请帮助我回答是否可以在需要身份验证的 HTTPS 代理后面发送 SMTP 电子邮件?如果可能的话请建议我一些java代码。

如果这个过程比 Java 更容易,我也可以用任何其他编程语言实现相同的功能。请帮我解决这个问题。

提前致谢。

我尝试了从类似线程获得的以下代码,

public static void main(String[] args) {

    final String username = "username@gmail.com";
    final String password = "password";

    System.setProperty("http.proxyHost", "103.27.171.32");
    System.setProperty("http.proxyPort", "80");

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

    Session session = Session.getInstance(props,
            new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(username, password);
                }
            });

    try {

        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(username));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("xxxx@gmail.com"));
        message.setSubject("Testing Subject");
        message.setText("Dear Mail Crawler,"
                + "\n\n No spam to my email, please!");

        Transport.send(message);

        System.out.println("Done");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

`

但是我收到以下错误,

java.lang.RuntimeException:javax.mail.MessagingException:无法连接到 SMTP 主机:smtp.gmail.com,端口:587;

最佳答案

将您的代理设置为:

System.setProperty("https.proxyHost",proxyHostIp);
System.setProperty("https.proxyPort",proxyHostPort);

关于java - 如何从需要在 JAVA 中进行身份验证的 HTTP 代理后面的 Gmail 帐户发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27036995/

相关文章:

java - Hibernate 和 InterruptedException

java - Java 语言的语法描述

java - 如何创建表示 Java long 的字符串,就好像它是无符号的 64 位值一样

proxy - iOS 8/Xcode 6 Simulator 不再使用 HTTP 代理

java - 我可以在录制时为 WireMock 指定一个 --proxy-all 参数以匹配任何网站吗?

node.js - Node ,使用基本身份验证 header 向外部 API 表达 API 代理请求

java - 如何在我的 Web 应用程序中保持与第三方 API 的连接

wordpress - 无法从联系表格 7 发送电子邮件

php - PHP邮件功能无法完成电子邮件的发送

asp.net - 我的 C# Web 应用程序项目中缺少 IdentityConfig.cs