Java-465端口邮件发送
阿里云25端口默认情况下不可用,官方解释如下:
相关说明:
发邮件请使用外部邮件服务商的465端口或云邮产品。
若有特殊场景,需要从云主机对外连接TCP25端口,请提交“25端口解封申请”。
提交申请后,需要1个工作日完成审核,审核结果将邮件通知您。
可以使用465端口发送邮件
代码
private static final String MAIL_HOST_VALUE ="smtp.163.com"; //发送邮件的服务器地址
private static final String MAIL_FROM ="xxxxxx";//邮件发送人
private static final String MAIL_FROM_PASSWORD ="xxxxxx";//邮件发送人授权码(不是邮箱密码)
private static final String MAIL_SUBJECT_VERIFY_CODE ="xxx网【邮箱验证码】";//主题
private static final String MAIL_ORGANIZATION ="xxx网";//组织
public static void Main(String args[]){
sendMail("xxx@xx.com",
MAIL_FROM,
MAIL_SUBJECT_VERIFY_CODE,
"邮件内容",
null))
}
/**
* @Param to 接收者
* @Param cc 发送者
* @Param subject 主题
* @Param content 内容
* @Param fileList 附件
* */
public static boolean sendMail(String to, String cc, String subject, String content, String[] fileList){
try {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
final Properties p = System.getProperties() ;
p.setProperty("mail.smtp.host", MAIL_HOST_VALUE);
p.setProperty("mail.smtp.auth", "true");
p.setProperty("mail.smtp.user", MAIL_FROM);
p.setProperty("mail.smtp.pass", MAIL_FROM_PASSWORD);
p.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
p.setProperty("mail.smtp.socketFactory.fallback", "false");
p.setProperty("mail.smtp.port", "465");
p.setProperty("mail.smtp.socketFactory.port", "465");
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session session = Session.getInstance(p, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(p.getProperty("mail.smtp.user"),p.getProperty("mail.smtp.pass"));
}
});
session.setDebug(true);
Message message = new MimeMessage(session);
//消息发送的主题
message.setSubject(subject);
//接受消息的人
message.setReplyTo(InternetAddress.parse(MAIL_FROM));
//消息的发送者
message.setFrom(new InternetAddress(p.getProperty("mail.smtp.user"),"新乡学院失物招领网"));
// 创建邮件的接收者地址,并设置到邮件消息中
String[] split = to.split(",");
InternetAddress []tos = new InternetAddress[split.length];
for (int i = 0; i < split.length; i++) {
tos[i]=new InternetAddress(split[i]);
}
// 设置抄送人
if (cc != null && cc.length() > 0) {
message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));
}
message.setRecipients(Message.RecipientType.TO, tos);
// 消息发送的时间
message.setSentDate(new Date());
Multipart mainPart = new MimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = new MimeBodyPart();
// 设置HTML内容
html.setContent(content, "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容
message.setContent(mainPart);
// 设置附件
if (fileList != null && fileList.length > 0) {
for (int i = 0; i < fileList.length; i++) {
html = new MimeBodyPart();
FileDataSource fds = new FileDataSource(fileList[i]);
html.setDataHandler(new DataHandler(fds));
html.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));
mainPart.addBodyPart(html);
}
}
message.setContent(mainPart);
message.saveChanges();
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
return false;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return false;
}
return true;
}
code By javagogogo