Ser*_*gii 6 java coldfusion smtp railo cfml
我正在使用自定义SMTP服务器,并希望在用户输入自己的服务器凭据时验证连接.
与添加邮件服务器时Adobe CF和Railo允许的检查完全相同.
当然,这并不能保证交付工作正常,但至少要检查输入的服务器/用户名/通行证是否有效.
我可以看到一个棘手的方法:尝试使用cfmail发送电子邮件并检查邮件日志.但我相信它可以更优雅地完成.
是否有标准ACF/Railo发行版的Java库可以帮助我?我该如何使用它们?例子受到高度赞赏.
提前致谢.
编辑:
请不要与Java标签混淆.CFML需要解决方案.虽然它可以使用一些Java库,但如果适用的话.
我认为sfussenegger有正确的想法.但是,不是使用自定义身份验证器,而是通过connect(..)进行身份验证?仅用gmail测试过.但似乎有效.
编辑:我成功地用CF9和OBD测试了这个.不幸的是,我对Railo没有运气......真糟糕.
编辑:更新以添加缺少的"mail.smtp.auth"属性.它现在应该与Railo一起正常工作.
//Java Version
int port = 587;
String host = "smtp.gmail.com";
String user = "username@gmail.com";
String pwd = "email password";
try {
Properties props = new Properties();
// required for gmail
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.auth", "true");
// or use getDefaultInstance instance if desired...
Session session = Session.getInstance(props, null);
Transport transport = session.getTransport("smtp");
transport.connect(host, port, user, pwd);
transport.close();
System.out.println("success");
}
catch(AuthenticationFailedException e) {
System.out.println("AuthenticationFailedException - for authentication failures");
e.printStackTrace();
}
catch(MessagingException e) {
System.out.println("for other failures");
e.printStackTrace();
}
<cfscript>
//CF Version
port = 587;
host = "smtp.gmail.com";
user = "username@gmail.com";
pwd = "email password";
try {
props = createObject("java", "java.util.Properties").init();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
// or use getDefaultInstance instance if desired...
mailSession = createObject("java", "javax.mail.Session").getInstance(props, javacast("null", ""));
transport = mailSession.getTransport("smtp");
transport.connect(host, port, user, pwd);
transport.close();
WriteOutput("success");
}
//for authentication failures
catch(javax.mail.AuthenticationFailedException e) {
WriteOutput("Error: "& e.type &" ** "& e.message);
}
// for other failures
catch(javax.mail.MessagingException e) {
WriteOutput("Error: "& e.type &" ** "& e.message);
}
</cfscript>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11540 次 |
| 最近记录: |