gpt4 book ai didi

java - Ant 与 JavaMail : authentication required

转载 作者:行者123 更新时间:2023-12-01 13:48:57 26 4
gpt4 key购买 nike

我正在尝试从 .bat 文件启动 ant,如下所示:

java -classpath "<ant_lib_jars>" org.apache.tools.ant.launch.Launcher <ant_command_line_args>

Ant 已与所有其他库(包括 JavaMail jar)一起添加到项目中。启动后,批处理脚本将收集所有必需的 jar 并为类路径( <ant_lib_jars> )创建字符串。所有命令行参数都将“按原样”传递给 Launcher 类。

此方法适用于我的构建文件中的所有目标(使用邮件任务的目标除外)。该目标如下所示:

<target name="testtarget">
<mail
ssl="true"
mailhost="smtp.gmail.com"
mailport="465"
user="<gmail_user>"
password="<gmail_password>"
subject="Subject"
>
<from address="<gmail_address>"/>
<to address="<recipient_address>"/>
<message src="<message_file>"/>
</mail>
</target>

当我从命令行启动 ant -v testtarget 时,出现此错误:

BUILD FAILED
....
Problem while sending mime mail:
at org.apache.tools.ant.taskdefs.email.MimeMailer.send(MimeMailer.java:261)
at org.apache.tools.ant.taskdefs.email.EmailTask.execute(EmailTask.java:574)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 m5sm23576192laj.4 - gsmtp
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at org.apache.tools.ant.taskdefs.email.MimeMailer.send(MimeMailer.java:258)
... 18 more

如果 ant 在类路径中找不到 mail.jar(来自 JavaMail),则会发生相同的错误。所以我尝试用 mail.jar 的路径指定“-lib”标志,但它不起作用。

尝试使用相同的 ant 但不通过 .bat 文件启动此目标已成功完成 - 电子邮件已发送:

<full_path_to_project_ant>/bin/ant -lib ant/lib/mail.jar testtarget

使用 ignoreInvalidRecipients 值设置 true 属性最终会出现另一个错误:

BUILD FAILED
....
Couldn't reach any recipient
at org.apache.tools.ant.taskdefs.email.MimeMailer.send(MimeMailer.java:264)
at org.apache.tools.ant.taskdefs.email.EmailTask.execute(EmailTask.java:574)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication Required. Learn more at
530 5.5.1 http://support.google.com/mail/bin/answer.py?answer=14257 go4sm23006946lbc.3 - gsmtp
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at org.apache.tools.ant.taskdefs.email.MimeMailer.send(MimeMailer.java:258)
... 18 more

收件人地址绝对正确,这是通过启动目标而不是通过具有相同凭据的 .bat 文件来确认的。

我尝试使用额外的日志记录从 ant 源重建 ant-launcher.jar,发现 mail.jar 落入 ant 类路径中。使用 SMTPS 发送消息时 SendFailedException 上升。

我做错了什么?

最佳答案

好的,我明白了。这种不明显行为的原因在于 ant 类加载模型。我的 email.jar (来自 JavaMail)文件位于 ANT_HOME/lib 目录中,在这些目录中是文件 mail-1.4.jar (在启动 fetch.xml 构建后下载文件,需要下载所有库来执行可选任务)。该 jar 文件类似于 stub ,不支持所有邮件功能。在这种情况下,我想,ant core 类加载器会在 mail-1.4.jar 中找到所需的类。所以我删除了这个文件,现在我的目标可以正常工作了。

关于java - Ant 与 JavaMail : authentication required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20120791/

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