javamail本地发送邮件成功,部署到服务器上发送邮件报错can't send command to
SMTP host 这是为什么?求请教!
你的服务器能连外网吗
此服务器不接受未加密的连接
http://stackoverflow.com/questions/6740838/javamail-issue-cant-send-command-to-smtp-host
1,Check whether your JAVA_HOME setting is right on the server.
2,Try the setting below.
JAVA_OPTS="$JAVA_OPTS -Djavax.net.ssl.trustStore=$JAVA_HOME/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit"
It would be appreciated if you share codes and exception messages for us to give you more useful advice.
Properties props = new Properties();
// 发送服务器需要身份验证
props.setProperty("mail.smtp.auth", "true");
//props.setProperty("mail.host", "smtp.qq.com");
props.setProperty("mail.host", "smtp.mail.yahoo.com");
// 发送邮件协议名称
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.sender.user", *********);
props.setProperty("mail.sender.auth", **********);
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getInstance(props);
Message msg = new MimeMessage(session);
msg.setSubject(mailSubject);
msg.setContent(mailContent, "text/html;charset=gb2312");
msg.setFrom(new InternetAddress(props.getProperty("mail.sender.user")));
Address[] receivers = new Address[mailReceivers.length];
for(int i = 0; i < mailReceivers.length; i++){
receivers[i] = new InternetAddress(mailReceivers[i]);
}
Transport transport = session.getTransport();
try{
transport.connect(props.getProperty("mail.host"), props.getProperty("mail.sender.user"), props.getProperty("mail.sender.auth"));//这里是发送人的账号 后面是授权码
transport.sendMessage(msg, receivers); //这里是接收人的账号
}finally{
transport.close();
}
邮箱账号设置里面,开启 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
服务器上ping一下smtp 服务器看看是否能连接
本地传送不需要网上邮件传送协议,服务器上就需要了