Grails3 邮件功能(可发送OutLook会议邀请邮件)

106 篇文章 0 订阅
102 篇文章 2 订阅

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;
    }
}

效果

插件地址链接

参考文章

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值