Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

35.4. RestController

        
package api.rest;

import java.io.File;

import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import api.pojo.Email;

@RestController
@RequestMapping("/v1/email")
public class EmailRestController extends CommonRestController {

@Autowired
private JavaMailSender javaMailSender;

@RequestMapping("version")
@ResponseStatus(HttpStatus.OK)
public String version() {
    return "[OK] Welcome to withdraw Restful version 1.0";
}

@RequestMapping(value = "send", method = RequestMethod.POST, produces = { "application/xml", "application/json" })
public ResponseEntity<Email> sendSimpleMail(@RequestBody Email email) {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(email.getFrom());
    message.setTo(email.getTo());
    message.setSubject(email.getSubject());
    message.setText(email.getText());
    javaMailSender.send(message);
    email.setStatus(true);

    return new ResponseEntity<Email>(email, HttpStatus.OK);
}

@RequestMapping(value = "attachments", method = RequestMethod.POST, produces = { "application/xml", "application/json" })
public ResponseEntity<Email> attachments(@RequestBody Email email) throws Exception {

    MimeMessage mimeMessage = javaMailSender.createMimeMessage();

    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    mimeMessageHelper.setFrom(email.getFrom());
    mimeMessageHelper.setTo(email.getTo());
    mimeMessageHelper.setSubject(email.getSubject());
    mimeMessageHelper.setText("<html><body><img src=\"cid:banner\" >" + email.getText() + "</body></html>", true);

    FileSystemResource file = new FileSystemResource(new File("banner.jpg"));
    mimeMessageHelper.addInline("banner", file);

    FileSystemResource fileSystemResource = new FileSystemResource(new File("Attachment.jpg"));
    mimeMessageHelper.addAttachment("Attachment.jpg", fileSystemResource);

    javaMailSender.send(mimeMessage);
    email.setStatus(true);

    return new ResponseEntity<Email>(email, HttpStatus.OK);
}

// 如果你不想使用 application.properties 中的 spring.mail.host 配置,想自行配置SMTP主机可以参考下面例子
@RequestMapping(value = "sendmail", method = RequestMethod.POST, produces = { "application/xml", "application/json" })
public ResponseEntity<Email> sendmail(@RequestBody Email email) {
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
    javaMailSender.setHost(email.getHost());
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom(email.getFrom());
    message.setTo(email.getTo());
    message.setSubject(email.getSubject());
    message.setText(email.getText());
    try{
        javaMailSender.send(message);
        email.setStatus(true);
    }catch(Exception e){
        email.setText(e.getMessage());
        email.setStatus(false);
    }

    return new ResponseEntity<Email>(email, HttpStatus.OK);
}	
}