@Test
  public void should_send_mail_when_parameters_are_correct() {

    final EmailBuilder email = context.mock(EmailBuilder.class);

    context.checking(
        new Expectations() {
          {
            one(email).from("*****@*****.**");
            will(returnValue(email));

            one(email).to("*****@*****.**");
            will(returnValue(email));

            one(email).withSubject("subject");
            will(returnValue(email));

            one(email).withBody("body");
            will(returnValue(email));

            one(email).withCharset("UTF-8");
            will(returnValue(email));

            one(email).send();
          }
        });

    email
        .from("*****@*****.**")
        .to("*****@*****.**")
        .withSubject("subject")
        .withBody("body")
        .withCharset("UTF-8")
        .send();
  }
Example #2
0
  public void send(EmailBuilder[] emails, SmtpConfig smtp)
      throws AddressException, MessagingException, IOException {
    Properties props = System.getProperties();
    if (smtp.getHost() != null) {
      props.put("mail.smtp.host", smtp.getHost());
    }
    if (smtp.isAuth()) {
      props.put("mail.smtp.auth", "true");
      props.put("mail.smtps.auth", "true");
    }
    if (smtp.isStarttls()) {
      props.put("mail.smtp.starttls.enable", "true");
    }
    // Get a Session object
    Session session = Session.getInstance(props, null);
    if (debug) {
      session.setDebug(true);
    }

    SMTPTransport transport = null;
    try {
      for (EmailBuilder email : emails) {
        // construct the message
        Message msg = email.getMessage(email, session);
        msg.setHeader("X-Mailer", mailer);
        msg.setSentDate(new Date());

        if (transport == null) {
          transport = (SMTPTransport) session.getTransport(smtp.isSsl() ? "smtps" : "smtp");
          if (smtp.isAuth()) {
            transport.connect(smtp.getHost(), smtp.getUser(), smtp.getPassword());
          } else {
            transport.connect();
          }
        }
        try {
          transport.sendMessage(msg, msg.getAllRecipients());
        } finally {
          if (verbose) {
            System.out.println("SmtpMailer: Response = " + transport.getLastServerResponse());
          }
        }
        if (verbose) {
          System.out.println("SmtpMailer: E-Mail successfully sent.");
        }
      }
    } finally {
      if (transport != null) transport.close();
    }
  }
Example #3
0
  public void sendEmail(EmailBuilder builder) {
    // 收件人电子邮箱
    String to = builder.getReceiver();

    // 发件人电子邮箱
    String from = builder.getSender();

    // 获取系统属性
    Properties properties = System.getProperties();

    // 设置邮件服务器
    properties.setProperty("mail.smtp.host", builder.getHost());
    properties.put("mail.smtp.port", builder.getPort());
    properties.put("mail.smtp.auth", builder.authNeeded());

    // 获取默认session对象
    Session session =
        Session.getDefaultInstance(
            properties,
            new Authenticator() {
              public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(from, builder.getToken()); // 发件人邮件用户名、密码
              }
            });

    try {
      // 创建默认的 MimeMessage 对象
      MimeMessage message = new MimeMessage(session);

      // Set From: 头部头字段
      message.setFrom(new InternetAddress(from));

      message.addRecipients(
          Message.RecipientType.TO,
          new InternetAddress[] {new InternetAddress(to), new InternetAddress(to)});
      // Set Subject: 头部头字段
      message.setSubject(builder.getTitle());

      // 设置消息体
      message.setText(builder.getContent());

      // 发送消息
      Transport.send(message);
      System.out.println("Sent message successfully....from Java Mail");
    } catch (MessagingException mex) {
      mex.printStackTrace();
    }
  }