最近自己了解下Java中利用mai发送QQ邮件

1.QQ邮箱设置

  1.1 进去QQ邮箱-->设置-->账号-->进行设置如下图

以下源码

package test;

import java.io.UnsupportedEncodingException;  
import java.util.Date;  
import java.util.Properties;  
  
import javax.activation.DataHandler;  
import javax.activation.FileDataSource;  
import javax.mail.Authenticator;  
import javax.mail.BodyPart;  
import javax.mail.Message.RecipientType;  
import javax.mail.MessagingException;  
import javax.mail.Multipart;  
import javax.mail.PasswordAuthentication;  
import javax.mail.Session;  
import javax.mail.Transport;  
import javax.mail.internet.InternetAddress;  
import javax.mail.internet.MimeBodyPart;  
import javax.mail.internet.MimeMessage;  
import javax.mail.internet.MimeMultipart;  
import javax.mail.internet.MimeUtility;  
  
/** 
 * 发送邮件的测试程序(适用qq邮箱) 
 * 通过本人的qq邮箱: xxx@qq.com 发送邮件 
 * @author fcl 
 *  
 */  
public class MailTest {  
  
    //发送的邮箱 内部代码只适用qq邮箱  
    private static final String USER = "XXXX@qq.com";  
    //授权密码 通过QQ邮箱设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务->开启POP3/SMTP服务获取  
    private static final String PWD = "qazmkhvsaniozgibiffzaq";  
      
    private String[] to;  
    private String[] cc;//抄送  
    private String[] bcc;//密送  
    private String[] fileList;//附件  
    private String subject;//主题  
    private String content;//内容,可以用html语言写  
    public void sendMessage() throws MessagingException, UnsupportedEncodingException {  
        // 配置发送邮件的环境属性  
        final Properties props = new Properties();  
        //下面两段代码是设置ssl和端口,不设置发送不出去。  
        props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
        //props.setProperty("mail.smtp.port", "465");  
        props.setProperty("mail.smtp.socketFactory.port", "465");  
        // 表示SMTP发送邮件,需要进行身份验证  
        props.setProperty("mail.transport.protocol", "smtp");// 设置传输协议  
        props.put("mail.smtp.auth", "true");  
        props.put("mail.smtp.host", "smtp.qq.com");//QQ邮箱的服务器 如果是企业邮箱或者其他邮箱得更换该服务器地址  
        // 发件人的账号  
        props.put("mail.user", USER);  
        // 访问SMTP服务时需要提供的密码   
        props.put("mail.password", PWD);  
  
        // 构建授权信息,用于进行SMTP进行身份验证  
        Authenticator authenticator = new Authenticator() {  
            @Override  
            protected PasswordAuthentication getPasswordAuthentication() {  
                // 用户名、密码  
                String userName = props.getProperty("mail.user");  
                String password = props.getProperty("mail.password");  
                return new PasswordAuthentication(userName, password);  
            }  
        };  
        // 使用环境属性和授权信息,创建邮件会话  
        Session mailSession = Session.getInstance(props, authenticator);  
        // 创建邮件消息  
        MimeMessage message = new MimeMessage(mailSession);  
        BodyPart messageBodyPart = new MimeBodyPart();   
        Multipart multipart = new MimeMultipart();   
        // 设置发件人  
        InternetAddress form = new InternetAddress(  
                props.getProperty("mail.user"));  
        message.setFrom(form);  
        //发送  
        if (to != null) {   
            String toList = getMailList(to);   
            InternetAddress[] iaToList = new InternetAddress().parse(toList);   
            message.setRecipients(RecipientType.TO, iaToList); // 收件人   
        }   
        //抄送   
        if (cc != null) {   
            String toListcc = getMailList(cc);   
            InternetAddress[] iaToListcc = new InternetAddress().parse(toListcc);   
            message.setRecipients(RecipientType.CC, iaToListcc); // 抄送人   
        }   
        //密送   
        if (bcc != null) {   
            String toListbcc = getMailList(bcc);   
            InternetAddress[] iaToListbcc = new InternetAddress().parse(toListbcc);   
            message.setRecipients(RecipientType.BCC, iaToListbcc); // 密送人   
        }   
        message.setSentDate(new Date()); // 发送日期 该日期可以随意写,你可以写上昨天的日期(效果很特别,亲测,有兴趣可以试试),或者抽象出来形成一个参数。  
        message.setSubject(subject); // 主题   
        message.setText(content); // 内容   
        //显示以html格式的文本内容   
        messageBodyPart.setContent(content,"text/html;charset=utf-8");   
        multipart.addBodyPart(messageBodyPart);   
        //保存多个附件   
        if(fileList!=null){   
            addTach(fileList, multipart);   
        }   
        message.setContent(multipart);   
        // 发送邮件  
        Transport.send(message);  
    }  
  
    public void setTo(String[] to) {  
        this.to = to;  
    }  
  
    public void setCc(String[] cc) {  
        this.cc = cc;  
    }  
  
    public void setBcc(String[] bcc) {  
        this.bcc = bcc;  
    }  
      
    public void setSubject(String subject) {  
        this.subject = subject;  
    }  
      
    public void setContent(String content) {  
        this.content = content;  
    }  
      
    public void setFileList(String[] fileList) {  
        this.fileList = fileList;  
    }  
      
    private String getMailList(String[] mailArray) {   
        StringBuffer toList = new StringBuffer();   
        int length = mailArray.length;   
        if (mailArray != null && length < 2) {   
            toList.append(mailArray[0]);   
        } else {   
            for (int i = 0; i < length; i++) {   
                toList.append(mailArray[i]);   
                if (i != (length - 1)) {   
                    toList.append(",");   
                }   
            }   
        }   
        return toList.toString();   
    }   
      
    //添加多个附件   
    public void addTach(String fileList[], Multipart multipart) throws MessagingException, UnsupportedEncodingException {   
        for (int index = 0; index < fileList.length; index++) {   
             MimeBodyPart mailArchieve = new MimeBodyPart();   
             FileDataSource fds = new FileDataSource(fileList[index]);   
             mailArchieve.setDataHandler(new DataHandler(fds));   
             mailArchieve.setFileName(MimeUtility.encodeText(fds.getName(),"UTF-8","B"));   
             multipart.addBodyPart(mailArchieve);   
        }     
    }  
      
    //以下是演示demo  
    public static void main(String args[]) {  
        MailTest mail = new MailTest();  
        mail.setSubject("标题XXX");  
        mail.setContent("内容XXX");  
        //收件人 可以发给其他邮箱(163等) 下同  
        mail.setTo(new String[] {"XXX@qq.com","XXX@qq.com"});  
        //抄送  
        //mail.setCc(new String[] {"xxx@qq.com","xxx@qq.com"});  
        //密送  
       // mail.setBcc(new String[] {"xxx@qq.com","xxx@qq.com"});  
        //发送附件列表 可以写绝对路径 也可以写相对路径(起点是项目根目录)  
       // mail.setFileList(new String[] {"file\\附件1.txt","file\\附件2.txt"});  
        //发送邮件  
        try {  
            mail.sendMessage();  
            System.out.println("发送邮件成功!");  
        } catch (Exception e) {  
            System.out.println("发送邮件失败!");  
            e.printStackTrace();  
        }  
    }  
}

Java中利用qqemai发送QQ邮件相关推荐

  1. qq邮箱做php邮箱发送,PHP中利用PHPMailer发送QQ邮件

    PHPMailer的介绍: 优点: 1 : 可运行在任何平台之上 2  :  支持SMTP验证 3 : 发送邮时指定多个收件人,抄送地址,暗送地址和回复地址:注:添加抄送.暗送仅win平台下smtp方 ...

  2. Simple Java Mail的使用,发送qq邮件

    Simple Java Mail的使用,发送qq邮件 第一步 开启SMTP服务 第二步 导入jar包 第三步 简单的使用 四 集中配置,批量发送 第一步 开启SMTP服务 打开qq邮箱,设置-账户 开 ...

  3. Java 通过SMTP实现发送QQ邮件

    在eclipse中创建项目,并把javax.amil.jar和commons-email-1.5,jar复制到项目中 链接:https://pan.baidu.com/s/1sQjA1GEpKi6IJ ...

  4. java 发送邮件昵称_利用JavaMail发送QQ邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  5. java怎么发qq邮件_java代码如何发送QQ邮件

    近来想写一个qq之间互相发送邮件的工具.奈何一直报错服务错误: org.apache.commons.mail.EmailException: Sending the email to the fol ...

  6. phpmail通过qq发邮箱失败_PHP中利用PHPMailer配合QQ邮箱实现发邮件

    phpmailer实现给网站用户发送邮件,WordPress好像禁用了mail()函数,也不能直接使用自带的发送邮件,以防止暴露IP PHPMailer的介绍: 可运行在任何平台之上 支持SMTP验证 ...

  7. java 发送qq邮件

    发送qq邮件的简单demo  一: 在myEclipse中创建一个java项目         1:直接将该文件引入到src ,                    2:将activation.ja ...

  8. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  9. Java发送QQ邮件的3种形式(commons-email)

    第一步:项目引入相应资源   commons-email-xx.jar,mail.jar,activation.jar maven项目pom引入 (注意对应配置的版本问题哦~)     可参考 --& ...

最新文章

  1. Vue中使用el-popover实现悬浮弹窗显示图片预览
  2. mapreduce,map后面跟map是什么操作???
  3. 开发过程中编写的一些批处理
  4. linux tomcat启动nohup,linux下tomcat添加服务
  5. C++ 继承的构造与析构
  6. 情人节海报设计没有灵感?看过来
  7. 二十四、Java集合框架(二)
  8. android camera实例
  9. CAM350 10.5完美精减版
  10. Git 修改历史提交中的用户名和邮箱
  11. 计算机科学与技术培养计划,计算机科学与技术专业培养方案(2017版).PDF
  12. layui菜鸟教程--乐字节前端
  13. 中外文献图书网址汇总
  14. 删除 linux的ln文件夹,linux下添加链接与删除链接(ln命令的用法)
  15. 简历制作(项目经验)
  16. 函数的极限与连续性的关系
  17. 解决问题:The field file exceeds its maximum permitted size of 1048576 bytes
  18. c 程序设计语言 好难,C程序设计语言难点及分析
  19. 移动服务器光信号亮红灯,移动网光信号闪红灯是怎么回事
  20. cors实现请求跨域

热门文章

  1. 健全的网络与信息安全保障措施
  2. 微信小程序运营系列(五)——门店运营的基础流程
  3. 常见网络攻击之CC攻击防御手段,莫错过
  4. Android11文件管理权限申请
  5. ZDHC认证咨询,相关品牌产品的生产过程都需要管控工厂限制物质列表有哪些
  6. java-net-php-python-javassh学生信息管理系统计算机毕业设计程序
  7. 2022中国徐州创新创业大赛深圳专场赛
  8. Python字典dict
  9. Scanner:扫描器
  10. iptables 打开dns访问端口