JSP: 使用网易邮箱发送带附件的电子邮件

JSP代码:使用javax.mail和activation发送邮件

首先我们需要两个jar包,javax.mail.jar和activation.jar,官方下载地址:

JAF:JavaBeans Activation Framework

JMA:JavaMail API

不管使用什么邮箱发送右键,我们都需要打开SMTP服务,比如网易邮箱:

JSP: 使用网易邮箱发送带附件的电子邮件_第1张图片

开启服务之后,你就已经设置成功了一个授权码。请记住:用JSP验证邮箱登录的时候,用户名为邮箱名,密码为授权码,而不是登录邮箱用的密码

完事具备,上代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*, java.text.*, java.time.*, java.io.*"%>
<%@ page import="javax.mail.*, javax.mail.internet.*, javax.activation.*"%>





E-mail something


  <%-- 从网易邮箱向QQ邮箱发送消息 --%>
  <%
      String from = "[email protected]"; // 发件人
      String to = "[email protected]"; //收件人
      String host = "smtp.163.com"; // 指定发送邮件的主机

      Properties props = System.getProperties(); // 获取系统属性
      props.setProperty("mail.smtp.host", host); // 设置邮件服务器
      props.put("mail.smtp.auth", "true"); // 设置用户认证方式

      session.invalidate(); // 使默认session暂时失效,否则发送消息系统变为一次性
      try
      {
          // 创建默认的 MimeMessage对象
          MimeMessage message = new MimeMessage(Session.getDefaultInstance(props, new Authenticator() {
              @Override
              public PasswordAuthentication getPasswordAuthentication() {
                  return new PasswordAuthentication("[email protected]", "XXXXXXXX"); //发件人的用户名和授权码
              }
          }));
          message.setFrom(new InternetAddress(from)); // 设置from字段
          message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置to字段
          message.setSubject("What's for dinner?"); // 设置邮件标题

          BodyPart messageBodyPart = new MimeBodyPart(); // 创建消息部分
          messageBodyPart.setText("I'm thinking, two pizzas."); // 设置邮件消息主体
          Multipart multipart = new MimeMultipart(); // 创建多重消息(总消息)
          multipart.addBodyPart(messageBodyPart); // 添加消息的文本部分
          
          messageBodyPart = new MimeBodyPart(); // 重新新建对象,以便添加附件
          DataSource source = new FileDataSource(new File("D:\\104.txt")); // 附件
          messageBodyPart.setDataHandler(new DataHandler(source)); // 附件的处理器
          messageBodyPart.setFileName("BirthdayCard"); // 附件重命名
          multipart.addBodyPart(messageBodyPart); // 添加附件至总消息
          
          message.setContent(multipart); // 将总消息设置成要发送的消息
          Transport.send(message); // 发送总消息

          out.println("

邮件发送成功。


"); } catch (MessagingException mex) { out.println("

邮件发送失败。附加消息:

" + mex.getMessage() + "
"); mex.printStackTrace(); } %>

消息发送成功之后,页面显示为:

JSP: 使用网易邮箱发送带附件的电子邮件_第2张图片

发送者邮箱为:

JSP: 使用网易邮箱发送带附件的电子邮件_第3张图片

接收者邮箱为:

JSP: 使用网易邮箱发送带附件的电子邮件_第4张图片

在进阶的路上,欢迎各位大神指正。

你可能感兴趣的:(JSP/Java,发送邮件)