java mail ssl smtp_无法使用Javamail通过SSL或TLS使用SMTP发送邮件

public static void sendEmail(String host,String port,String useSSL,String useTLS,String useAuth,String user,String password,String subject,String content,String type,String recipients)

throws NoSuchProviderException,AddressException,MessagingException {

final Properties props = new Properties();

props.setProperty("mail.transport.protocol","smtp");

props.setProperty("mail.smtp.host",host);

props.setProperty("mail.smtp.port",port);

if (useSSL != null && !useSSL.equals("false") && useSSL.equals("true")) {

props.setProperty("mail.smtp.ssl.enable",useSSL);

props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");

props.setProperty("mail.smtp.socketFactory.port",port);

}

if (useTLS != null && !useTLS.equals("false") && useTLS.equals("true")) {

props.setProperty("mail.smtp.starttls.enable",useTLS);

props.setProperty("mail.smtp.socketFactory.fallback","true");

}

props.setProperty("mail.smtp.auth",useAuth);

props.setProperty("mail.from",user);

props.setProperty("mail.smtp.user",user);

props.setProperty("mail.password",password);

Session mailSession = Session.getDefaultInstance(props,new Authenticator() {

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(props.getProperty("mail.smtp.user"),props

.getProperty("mail.password"));

}

});

Transport transport = mailSession.getTransport();

MimeMessage message = new MimeMessage(mailSession);

message.setHeader("Subject",subject);

message.setContent(content,type);

StringTokenizer tokenizer = new StringTokenizer(recipients,";");

while (tokenizer.hasMoreTokens()) {

String recipient = tokenizer.nextToken();

message.addRecipient(Message.RecipientType.TO,new InternetAddress(recipient));

}

transport.connect();

transport.sendMessage(message,message.getRecipients(Message.RecipientType.TO));

transport.close();@H_301_12@

奇怪的是,每当我尝试使用main方法运行上述代码时,它都会成功发送SSL和TLS协议的电子邮件.

public static void main(String args[])

{

try {

Notifier.sendEmail("smtp.gmail.com","587","false","true","sender_email@gmail.com","testpassword","CHECKING SETTINGS","CHECKING EMAIL FUNCTIONALITY","text/html","cc_email@gmail.com");

} catch (Exception ex) {

ex.printStackTrace();

}

}@H_301_12@

但每当我尝试通过我的Web应用程序运行相同的代码时它就会失败.

通过SSL发送它会引发此错误:

com.sun.mail.smtp.SMTPSendFailedException: 530-5.5.1 Authentication required. Learn more at

jvm 1 | 530 5.5.1 https://support.google.com/mail/answer/14257 f12sm88286300pat.20 - gsmtp

jvm 1 |

jvm 1 | at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)@H_301_12@

通过TLS发送会抛出此错误:

javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com,port: 587;

jvm 1 | nested exception is:

jvm 1 | javax.net.ssl.SSLException: Unrecognized SSL message,plaintext connection?

jvm 1 | at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)@H_301_12@

任何形式的帮助表示赞赏.

EDIT1:

这是前端的tpl文件

dio" name="sslEnable" value="$SSLENABLE$">

Enable SSL?dio" name="tlsEnable" value="$TLSENABLE$">

Enable TLS?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值