加载中

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

posted @ 2019-12-16 14:35  jialeYang  阅读(226)  评论(0编辑  收藏  举报