当前位置: 首页 > 知识库问答 >
问题:

使用外部smtp从容器发送邮件

澹台承
2023-03-14

我准备了一个可以通过smtp.gmail.com发送邮件的应用程序,它运行良好,但是当我使用docker运行它时,我收到一个错误-因为它无法连接到smtp.gmail.com。发送邮件的功能是:

public void sendEmal(String body, String mailRecipient){
   Properties props = new Properties();
   props.put("mail.transport.protocol", "smtp");
   props.put("mail.smtp.auth", "true");
   props.put("mail.smtp.host", "smtp.gmail.com");
   props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
   props.put("mail.smtp.port", "465");
   try{
        Authenticator auth = new SMTPAuthenticator();
        Session mailSession = Session.getDefaultInstance(props, auth);
        mailSession.setDebug(true);
        Transport transport = mailSession.getTransport();

        MimeMessage message = new MimeMessage(mailSession);
        message.setContent(body, "text/plain");
        message.addRecipient(Message.RecipientType.TO,
        new InternetAddress("mailRecipient"));

        transport.connect();
        transport.sendMessage(message,
        message.getRecipients(Message.RecipientType.TO));
        transport.close();  
    }
    catch(Exception e){
        System.out.println(e);
    }
}

这就是错误:

myapp_thirdInst |调试SMTP:尝试连接到主机“SMTP.gmail.com”,端口465,isSSL false

myapp_thirdInst|javax.mail.MessagingException:未知SMTP主机:smtp.gmail.com;

myapp_thirdInst |嵌套异常是:

myapp_thirdInst |爪哇。网UnknownHostException:smtp。gmail。通用域名格式

myapp_thirdInst |发送邮件时出错

这是我第一次和docker一起玩,经过一些尝试,它仍然失败。我有点迷路了——有人能给我一个解决这个问题的提示吗?

共有1个答案

淳于恺
2023-03-14

你需要做的第一件事就是让DNS工作!首先用一个shell测试容器DNS,让它工作,然后你的SMTP代码就可以工作了。

也许您可以使用有关DNS配置的信息更新您的问题

 类似资料:
  • 问题内容: 我正在使用以下方法使用SMTP从Python发送邮件。是使用的正确方法还是我缺少的陷阱? 问题答案: 我使用的脚本非常相似。我将其发布在此处,作为如何使用email。*模块生成MIME消息的示例。因此可以轻松修改此脚本以附加图片等。 我依靠ISP添加日期时间标头。 我的ISP要求我使用安全的smtp连接发送邮件,我依靠smtplib模块(可从http://www1.cs.columbi

  • SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send

  • SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg = MIMEText('hello, send

  • 我想在python上使用lib发送邮件。我知道它在端口号25上使用本地smtp服务。我有以下代码。这些代码在我的本地运行没有任何问题,邮件发送成功。但是当我将它们移动到docker容器时,邮件不会发送,也不会给出任何错误。 我的代码: 运行这些代码后,我将空格({})作为值。在sendmail方法描述中有这样的: ...消息被接受传递到四个地址中的三个,其中一个被拒绝,错误代码为550。如果所有地

  • 主要内容:实例,使用 Ruby 发送 HTML 邮件,实例,发送带附件的邮件,实例SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。 Ruby提供了 Net::SMTP 来发送邮件,并提供了两个方法 new 和 start: new 方法有两个参数: server name 默认为 localhost port number 默认为 25 start 方法有以下参数: