gpt4 book ai didi

grails - JavaMail SMTP主机错误

转载 作者:行者123 更新时间:2023-12-02 14:46:36 24 4
gpt4 key购买 nike

我有一个发送电子邮件的Grails应用程序。邮件服务器没有SMTP身份验证,因此它要求“SMTP之前有POP”,这意味着在通过SMTP发送之前,我需要针对POP帐户进行身份验证。大多数情况下,它可以工作,但是有时,不从属性中选择邮件服务器,而是尝试连接到“localhost”。这是属性:

    Properties props = new Properties();

props.setProperty("mail.store.protocol", "pop3")
props.setProperty("mail.pop3.host", "mail.xxxxx.com")
props.setProperty("mail.pop3.port", "110")
props.setProperty("mail.smtp.host", "mail.xxxxx.com")
props.setProperty("mail.smtp.port", "25")
props.setProperty("mail.smtp.sendpartial", "true")
props.setProperty("mail.pop3.socketFactory.port", "110")
props.setProperty("mail.pop3.socketFactory.class","javax.net.SocketFactory")
props.setProperty("mail.pop3.socketFactory.fallback", "false")
Transport t = null
def store

try {
URLName url = new URLName("pop3", "mail.xxxxxxx.com", 110,
"INBOX", "username", "password");

Session session = Session.getDefaultInstance(props, null)

store = session.getStore(url)
store.connect("mail.xxxxxx.com", "username", "password")

Message message = new MimeMessage(session);

message.setFrom(new InternetAddress("xxxx@xxxxxx.com"));

message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(toAddress, true));

message.setSubject(mailTitle);
message.setContent(messageBody, "text/html");
message.setSentDate(new Date());

t = session.getTransport("smtp")
t.connect()
t.send(message)
return true
}
catch (AddressException e) {
e.printStackTrace()
return false
}
catch (MessagingException e) {
e.printStackTrace()
return false
}
finally {
store?.close()
}

通常,这很有用。但是,当Quartz Job执行发送时,将不接受“属性”中的邮件服务器条目,而是使用“localhost”,然后无法发送电子邮件。

我可以使用Telnet连接并使用提到的属性进行发送。

可能是超时问题吗?根据我在文档中所读的内容,默认情况下超时是“无限”的,因此“应该”不是问题。

可能是性能问题吗?我创建了一个“虚拟应用程序”,它或多或少地具有相同的功能,但是不会从Grails服务发出发送,而是直接从 Controller 发出发送。该应用程序始终有效,但是该应用程序始终处于闲置状态。

我没有使用Grails邮件插件,因为我看不到它可以处理“smtp之前的流行音乐”范例。

提前致谢。

最佳答案

解决方案:似乎解决方案是将“mail.smtp.localhost” -value设置为与“mail.smtp.host” 相同的值。自从我放置该属性以来,没有一封邮件失败。从我的 Angular 来看,我认为这不是显而易见的属性,但是我希望它对以后的工作有所帮助。

因此,我的属性如下:

    Properties props = new Properties();

props.setProperty("mail.store.protocol", "pop3")
props.setProperty("mail.pop3.host", "mail.xxxxxxx.com")
props.setProperty("mail.pop3.port", "110")
props.setProperty("mail.smtp.localhost", "mail.xxxxxxx.com")
props.setProperty("mail.smtp.host", "mail.xxxxxxx.com")
props.setProperty("mail.smtp.port", "25")
props.setProperty("mail.smtp.sendpartial", "true")
props.setProperty("mail.pop3.socketFactory.port", "110")
props.setProperty("mail.pop3.socketFactory.class","javax.net.SocketFactory")
props.setProperty("mail.pop3.socketFactory.fallback", "false")

“mail.smtp.host” 的值设置为属性 “mail.smtp.localhost” ,不仅使错误消失了,而且整个例程变得更快了。

感谢你付出的努力!

关于grails - JavaMail SMTP主机错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8428254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com