我已经实现了电子邮件类并从属性文件中获取所有属性。 这是我的代码:
static {
// Load the properties file
try {
properties = new Properties();
InputStream inputStream = Email.class.getClassLoader()
.getResourceAsStream("/mail.properties");
properties.load(inputStream);`enter code here`
} catch (Exception e) {
logger.error(e.getMessage());
}
}
/**
*
* @param to
* : mail Sent to
* @param from
* : mail sent from
* @param subject
* : mail's subject
* @param body
* : mail's body
* @throws Exception
*/
public static void sendTextMail(String to, String from, String subject,
String body) throws Exception {
if (properties.isEmpty()) {
throw new Exception("Cannot send mail. Host data not available.");
}
// Authenticate the session with username and password
Session session = Session.getInstance(properties, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication((String) properties
.get("mail.login.username"), (String) properties
.get("mail.login.password"));
}
});
// Create to and from addresses
InternetAddress fromAddress = new InternetAddress(from);
InternetAddress toAddress = new InternetAddress(to);
// Create the message instance
// and add the sender, recipient, subject and body.
Message msg = new MimeMessage(session);
msg.setFrom(fromAddress);
msg.setSubject(subject);
msg.setRecipient(RecipientType.TO, toAddress);
msg.setContent(body, "text/plain");
// Finally send the email
Transport.send(msg);
}
当我尝试发送邮件时,我收到此错误: 16:48:23,882 ERROR AuthorController:1199 - 无法连接到SMTP主机:smtp.gmail.com,port:25 代理正在阻止我的服务器。如何克服这个问题
答案 0 :(得分:0)
大多数ISP会阻止端口25上的传出连接。但是,您通常可以使用端口587进行非加密的SMTP通信。
要更改使用的端口,您可以调整在静态块中设置的属性实例:
...
properties.load(inputStream);
properties.put("mail.smtp.port", "587");
...
确认无效后,您可能需要将设置放在/mail.properties
文件中:
mail.smtp.port:587