我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 运维优化 > javamail邮件的发送、亲测通过
总共48087条微博

动态微博

查看: 3092|回复: 1

javamail邮件的发送、亲测通过

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2014-02-21 12:51:27 |只看该作者 |倒序浏览
    邮件信息:
    public class SimpleMailSender {
            /**
              * 以文本格式发送邮件
              * @param mailInfo 待发送的邮件的信息
              */
                    public boolean sendTextMail(MailSenderInfo mailInfo) {
                      // 判断是否需要身份认证
                      MyAuthenticator authenticator = null;
                      Properties pro = mailInfo.getProperties();
                      if (mailInfo.isValidate()) {
                      // 如果需要身份认证,则创建一个密码验证器
                            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
                      }
                      // 根据邮件会话属性和密码验证器构造一个发送邮件的session
                      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
                      try {
                      // 根据session创建一个邮件消息
                      Message mailMessage = new MimeMessage(sendMailSession);
                      // 创建邮件发送者地址
                      Address from = new InternetAddress(mailInfo.getFromAddress());
                      // 设置邮件消息的发送者
                      mailMessage.setFrom(from);
                      // 创建邮件的接收者地址,并设置到邮件消息中
                      Address to = new InternetAddress(mailInfo.getToAddress());
                      mailMessage.setRecipient(Message.RecipientType.TO,to);
                      // 设置邮件消息的主题
                      mailMessage.setSubject(mailInfo.getSubject());
                      // 设置邮件消息发送的时间
                      mailMessage.setSentDate(new Date());
                      // 设置邮件消息的主要内容
                      String mailContent = mailInfo.getContent();
                      mailMessage.setText(mailContent);
                      // 发送邮件
                      Transport.send(mailMessage);
                      System.out.println("发送成功");
                      return true;
                      } catch (MessagingException ex) {
                              ex.printStackTrace();
                      }
                      return false;
                    }

                    /**
                      * 以HTML格式发送邮件
                      * @param mailInfo 待发送的邮件信息
                      */
                    public static boolean sendHtmlMail(MailSenderInfo mailInfo){
                      // 判断是否需要身份认证
                      MyAuthenticator authenticator = null;
                      Properties pro = mailInfo.getProperties();
                      //如果需要身份认证,则创建一个密码验证器  
                      if (mailInfo.isValidate()) {
                            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
                      }
                      // 根据邮件会话属性和密码验证器构造一个发送邮件的session
                      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
                      try {
                      // 根据session创建一个邮件消息
                      Message mailMessage = new MimeMessage(sendMailSession);
                      // 创建邮件发送者地址
                      Address from = new InternetAddress(mailInfo.getFromAddress());
                      // 设置邮件消息的发送者
                      mailMessage.setFrom(from);
                      // 创建邮件的接收者地址,并设置到邮件消息中
                      Address to = new InternetAddress(mailInfo.getToAddress());
                      // Message.RecipientType.TO属性表示接收者的类型为TO
                      mailMessage.setRecipient(Message.RecipientType.TO,to);
                      // 设置邮件消息的主题
                      mailMessage.setSubject(mailInfo.getSubject());
                      // 设置邮件消息发送的时间
                      mailMessage.setSentDate(new Date());
                      // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
                      Multipart mainPart = new MimeMultipart();
                      // 创建一个包含HTML内容的MimeBodyPart
                      BodyPart html = new MimeBodyPart();
                      // 设置HTML内容
                      html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
                      mainPart.addBodyPart(html);
                      // 将MiniMultipart对象设置为邮件内容
                      mailMessage.setContent(mainPart);
                      // 发送邮件
                      Transport.send(mailMessage);
                      return true;
                      } catch (MessagingException ex) {
                              ex.printStackTrace();
                      }
                      return false;
                    }
    }

    属性配置:
    public class MailSenderInfo {
            // 发送邮件的服务器的IP和端口
                    private String mailServerHost;
                    private String mailServerPort = "465";
                    // 邮件发送者的地址
                    private String fromAddress;
                    // 邮件接收者的地址
                    private String toAddress;
                    // 登陆邮件发送服务器的用户名和密码
                    private String userName;
                    private String password;
                    // 是否需要身份验证
                    private boolean validate = false;
                    // 邮件主题
                    private String subject;
                    // 邮件的文本内容
                    private String content;
                    // 邮件附件的文件名
                    private String[] attachFileNames;         
                    /**
                      * 获得邮件会话属性
                      */
                    public Properties getProperties(){
                      Properties p = new Properties();
                      p.put("mail.smtp.host", this.mailServerHost);
                      p.put("mail.smtp.port", this.mailServerPort);
                      p.put("mail.smtp.auth", validate ? "true" : "false");
                      return p;
                    }
                    public String getMailServerHost() {
                      return mailServerHost;
                    }
                    public void setMailServerHost(String mailServerHost) {
                      this.mailServerHost = mailServerHost;
                    }
                    public String getMailServerPort() {
                      return mailServerPort;
                    }
                    public void setMailServerPort(String mailServerPort) {
                      this.mailServerPort = mailServerPort;
                    }
                    public boolean isValidate() {
                      return validate;
                    }
                    public void setValidate(boolean validate) {
                      this.validate = validate;
                    }
                    public String[] getAttachFileNames() {
                      return attachFileNames;
                    }
                    public void setAttachFileNames(String[] fileNames) {
                      this.attachFileNames = fileNames;
                    }
                    public String getFromAddress() {
                      return fromAddress;
                    }
                    public void setFromAddress(String fromAddress) {
                      this.fromAddress = fromAddress;
                    }
                    public String getPassword() {
                      return password;
                    }
                    public void setPassword(String password) {
                      this.password = password;
                    }
                    public String getToAddress() {
                      return toAddress;
                    }
                    public void setToAddress(String toAddress) {
                      this.toAddress = toAddress;
                    }
                    public String getUserName() {
                      return userName;
                    }
                    public void setUserName(String userName) {
                      this.userName = userName;
                    }
                    public String getSubject() {
                      return subject;
                    }
                    public void setSubject(String subject) {
                      this.subject = subject;
                    }
                    public String getContent() {
                      return content;
                    }
                    public void setContent(String textContent) {
                      this.content = textContent;
                    }
    }

    测试基类:
    public class MyAuthenticator extends Authenticator {
            String userName=null;
            String password=null;

            public MyAuthenticator(){
            }
            public MyAuthenticator(String username, String password) {
                    this.userName = username;
                    this.password = password;
            }
            protected PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication(userName, password);
            }


    public static void main(String[] args){
             //这个类主要是设置邮件
          MailSenderInfo mailInfo = new MailSenderInfo();
          mailInfo.setMailServerHost("smtp.exmail.qq.com");
          mailInfo.setMailServerPort("25");
          mailInfo.setValidate(true);
          mailInfo.setUserName("123456@qq.com");
          mailInfo.setPassword("123456");//您的邮箱密码
          mailInfo.setFromAddress("123456@qq.com");
          mailInfo.setToAddress("2806289796@qq.com");
          mailInfo.setSubject("测试邮件");
          mailInfo.setContent("测试邮件的内容");
             //这个类主要来发送邮件
          SimpleMailSender sms = new SimpleMailSender();
              sms.sendTextMail(mailInfo);//发送文体格式
              //sms.sendHtmlMail(mailInfo);//发送html格式
        }  
    }源码以及JAR包下载地址:百度网盘下载  
    为什么javamail发送失败???: http://www.52itstyle.top/thread-9-1-1.html





    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    本帖被以下淘专辑推荐:

    3

    主题

    3

    听众

    1211

    金钱

    五袋长老

    该用户从未签到

    沙发
    发表于 2014-12-03 10:33:29 |只看该作者
    小七,我前两天密码忘了,终于给弄出来了,咋们网站忘记密码后不发邮件了,你抽时间去检查一下
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表