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

服务器上的javamail问题但在本地工作

松博耘
2023-03-14

我一直在努力从我的ubuntu服务器发送邮件。奇怪的是,它在我的mac上的本地tomcat实例上运行得非常好。

以下是我的实现:

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

    Session session = Session.getInstance(props,
              new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("myaccount@mail.com", "mypassword");
                }
    });
    session.setDebug(true);
    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress("myaccount@mail.com","Team"));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("test@mail.com"));
        message.setSubject(title);
        message.setContent(htmlContent,"text/html");

        Transport.send(message);

    } catch (MessagingException e) {
        logger.error("Could not send email, MessagingException : "+e.getMessage());
        throw new CouldNotSendEmailException();
    } catch (UnsupportedEncodingException e) {
        logger.error("Could not send email, UnsupportedEncodingException : "+e.getMessage());
        throw new CouldNotSendEmailException();
    }

让我恼火的是,javamail的输出日志在我的服务器和本地是一样的,而且没有错误:

DEBUG: setDebug: JavaMail version 1.4.7
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.mydomain.com", port 587, isSSL false
220 ns0.ovh.net ssl0.ovh.net. You connect to mail619.ha.ovh.net ESMTP
DEBUG SMTP: connected to host "smtp.mydomain.com", port: 587

EHLO 185.12.xxx.xxx
250-ns0.ovh.net ssl0.ovh.net. You connect to mail619.ha.ovh.net
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-PIPELINING
250-8BITMIME
250 SIZE 109000000
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "SIZE", arg "109000000"
DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM 
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded
DEBUG SMTP: use8bit false
MAIL FROM:<no-reply@mydomain.com>
250 ok
RCPT TO:<test@mail.com>
250 ok
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   test@mail.com
DATA
354 go ahead
From: Team <no-reply@mydomain.com>
To: test@mail.com
Message-ID: <2101030206.0.1423948092063.JavaMail.javamailuser@localhost>
Subject: Warning
MIME-Version: 1.0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!-- body of the mail -->

.
250 ok 1423948092 qp 12281
QUIT
221 ns0.ovh.net ssl0.ovh.net. You connect to mail619.ha.ovh.net

到目前为止我所做的一切

>

  • 检查我的垃圾邮件(比如一千次,以防万一...

    尝试了其他端口,如465和25-

    使用iptable打开587端口

    iptables -A 输出 -p tcp --dport 587 -j 接受

    iptables-A INPUT-p tcp-dport 587-j ACCEPT

    我现在开始感到有点绝望,如果有人有主意,那将不胜感激。

  • 共有1个答案

    魏烨熠
    2023-03-14

    看起来问题出在您的邮件服务器中。它接受消息,但随后将其排队,从不传递或丢弃。您需要查看邮件服务器的日志和配置。

    顺便说一句,有一个更新版本的JavaMail可用。

     类似资料:
    • 我试着简单地在我的路线和渲染产品中获取照片的位置。ejs文件: 它在本地主机上工作,现在我导入我的路由。在real server中的js文件,当我尝试打开产品时,它抛出504错误。 试图按照这个指示,但没有帮助。 获得504GATEWAY_TIMEOUTNodeJs grep-i“504”/var/log/nginx/access。日志 82.135.208.60--[2019年9月16日:07:

    • 这是我的第一个问题,也是第一篇英文帖子,请耐心等待。 我正在研究ASP。NET MVC Web Api RESTful应用程序。对于用户身份验证,我想使用加密令牌。我在localhost上工作的想法是:用户请求令牌地址/令牌,在头中包括auth:昵称:passwd,服务器返回加密的令牌,用户将在下一个请求中使用它。所以,用户发送带有头身份验证令牌的请求:encryptedToken,服务器将解密该

    • 在部署Meamapp时,mongoDB在本地节点上工作正常server.js但当我部署到heroku时,它显示错误 2019-06-04T02:49:12.401001 00:00 heroku[web.1]:状态从up更改为Start 2019-06-04T02:49:13.706279 00:00 heroku[web.1]:使用SIGTERM停止所有进程 2019-06-04T02:49:1

    • 我成功地能够阅读和删除邮件使用javamail时尝试从localhost但当我部署java代码在服务器上并尝试调用服务,它卡在store.connect(Pop3Host,用户,密码);

    • 以下代码在我的localhost上运行完美,但在我的实时服务器上显示了以下错误 警告:move_uploaded_file(.../uploads/76948893.jpeg):无法打开流:没有此类文件或目录 警告:move_uploaded_file():无法将'/tmp/phppxvRs8'移动到'…/上传/76948893.jpeg' 它所做的很简单,它获取来自 html 表单的数组 [“p

    • 看起来字体不适合我的旋转木马(或滑块)。我的计算机上没有安装它使用的字体。在我的本地测试服务器上,左右箭头和按钮工作良好。而在远程服务器上则没有。在远程,它甚至可能在使用另一种字体。匕首或十字形的字符不是“光滑”字体。我把它放在模板(Dreamweaver)页面的头部和我的自定义CSS文件中,以防在slick-theme.CSS文件中单独使用时出现问题:@font-face{font-family