1、添加依赖包
dependencies {
compile 'org.grails.plugins:mail:2.0.0'
}
2、在grails-app/conf/application.yml下添加以下配置:
grails:
mail:
host: 'smtp.exmail.qq.com'
port: 465
username: 'demo@qq.com'
password: '1234567'
props:
"mail.smtp.auth": true
"mail.smtp.socketFactory.port": 465
"mail.smtp.socketFactory.class": 'javax.net.ssl.SSLSocketFactory'
"mail.smtp.socketFactory.fallback": false
default:
from: 'zhangjiayu@middol.com'
3、在控制器中添加发送邮件代码:
//注入依赖
def mailService
//发送方法
def send(){
mailService.sendMail {
to "943510713@qq.com"
// from "zhangjiayu@middol.com"
// cc "marge@gmail.com", "ed@gmail.com"
// bcc "joe@gmail.com"
subject "Hello John"
text 'this is some text'
}
}
如下截图:
=================================会议邀请邮件===============================
package middol.demo
import grails.plugins.mail.MailService
import grails.rest.*
import grails.converters.*
import javax.mail.util.ByteArrayDataSource
import java.text.DateFormat
import java.text.ParseException
import java.text.SimpleDateFormat
class BookController extends RestfulController {
static responseFormats = ['json', 'xml']
BookController() {
super(Book)
}
MailService mailService
def test(){
//面试开始时间
String startTime = getUtc("2020-05-28 09:50");
//面试结束时间
String endTime = getUtc("2020-05-28 10:30");
StringBuffer buffer = new StringBuffer();
String fromEmail = "zhangjiayu139@outlook.com"
String toEmail = "fangxing.qin-ext@yanfeng.com"
buffer.append("BEGIN:VCALENDAR\n"
+ "PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n"
+ "VERSION:2.0\n"
+ "METHOD:REQUEST\n"
+ "BEGIN:VEVENT\n"
+ "ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:"+fromEmail+"\n" //会议出席人员
+ "ORGANIZER:MAILTO:"+toEmail+"\n" //会议组织者
+ "DTSTART:"+startTime+"\n" //会议开始时间
+ "DTEND:"+endTime+"\n" //会议结束时间
+ "LOCATION:Conference room\n" //会议地点
+ "UID:"+UUID.randomUUID().toString()+"\n"//如果id相同的话,outlook会认为是同一个会议请求,所以使用uuid。
+ "CATEGORIES:SuccessCentral Reminder\n"
+ "DESCRIPTION:测试会议邀请邮件功能DESCRIPTION\n" //会议内容
+ "SUMMARY:Test meeting request\n" + "PRIORITY:5\n" //会议标题
+ "CLASS:PUBLIC\n" + "BEGIN:VALARM\n"
+ "TRIGGER:-PT15M\n" + "ACTION:DISPLAY\n"
+ "DESCRIPTION:Reminder\n" + "END:VALARM\n"
+ "END:VEVENT\n" + "END:VCALENDAR");
mailService.sendMail {
multipart true
// attach(UUID.randomUUID().toString(), 'text/calendar;method=REQUEST;charset="UTF-8"', buffer.toString().getBytes())
inline(UUID.randomUUID().toString(), "text/calendar;method=REQUEST;charset=\"UTF-8\"", buffer.toString().getBytes())
to "zhangjiayu139@outlook.com"
from "zhangjiayu@middol.com"
subject "test"
text 'test'
}
render "邮件发送成功"
}
/**
* 转utc时间
*
* @param str
* @return
*/
private static String getUtc(String str) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
long millionSeconds = 0;
try {
millionSeconds = sdf.parse(str).getTime();
} catch (ParseException e1) {
e1.printStackTrace();
}
//utc时间差8小时
long currentTime = millionSeconds - 8 * 60 * 60 * 1000;
Date date = new Date(currentTime);
//格式化日期
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = "";
nowTime = df.format(date);
//转换utc时间
String utcTime = nowTime.replace("-", "").replace(" ", "T").replace(":", "");
return utcTime;
}
}
效果