{"id":17543631,"url":"https://github.com/xkcoding/magic-starter-message-demo","last_synced_at":"2025-06-13T10:09:42.837Z","repository":{"id":102484868,"uuid":"214400005","full_name":"xkcoding/magic-starter-message-demo","owner":"xkcoding","description":"magic-starter-message  消息模块集成 demo","archived":false,"fork":false,"pushed_at":"2019-10-11T10:21:00.000Z","size":18,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-13T10:09:20.087Z","etag":null,"topics":["demo","magic-starter","message","spring-boot-2","spring-boot-starter","xkcoding"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xkcoding.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-11T09:45:00.000Z","updated_at":"2023-03-04T07:10:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"c62b8875-a06a-4752-85c9-7667af92600a","html_url":"https://github.com/xkcoding/magic-starter-message-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/xkcoding/magic-starter-message-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkcoding%2Fmagic-starter-message-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkcoding%2Fmagic-starter-message-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkcoding%2Fmagic-starter-message-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkcoding%2Fmagic-starter-message-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xkcoding","download_url":"https://codeload.github.com/xkcoding/magic-starter-message-demo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xkcoding%2Fmagic-starter-message-demo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259624736,"owners_count":22886330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["demo","magic-starter","message","spring-boot-2","spring-boot-starter","xkcoding"],"created_at":"2024-10-21T00:25:03.048Z","updated_at":"2025-06-13T10:09:42.810Z","avatar_url":"https://github.com/xkcoding.png","language":"Java","readme":"# magic-starter-message-demo\n\n\u003e 演示消息模块的使用\n\n## 使用方法\n\n### 邮件\n\n\u003e 示例代码：https://github.com/xkcoding/magic-starter-message-demo/blob/master/src/test/java/com/xkcoding/magicstartermessagedemo/EmailMessageSenderTests.java\n\n#### 0. 配置文件\n\n```yaml\nspring:\n  mail:\n    host: smtp.mxhichina.com\n    port: 465\n    username: spring-boot-demo@xkcoding.com\n    password: Just4Test!\n    protocol: smtp\n    test-connection: true\n    default-encoding: UTF-8\n    properties:\n      mail.smtp.auth: true\n      mail.smtp.starttls.enable: true\n      mail.smtp.starttls.required: true\n      mail.smtp.ssl.enable: true\n      mail.display.sendmail: spring-boot-demo\nmagic:\n  message:\n    email:\n      enabled: true\n      # 邮件模板位置：默认为 classpath:/email/\n      prefix: classpath:/templates/email\n      # 邮件模板后缀：默认为 .html\n      suffix: .html\n```\n\n#### 1. 简单邮件\n\n```java\n/**\n * 测试简单邮件\n */\n@Test\npublic void testSimpleEmail() {\n    EmailMessage simple = EmailMessage.simpleEmail();\n    simple.setFrom(\"xkcoding\");\n    simple.setSubject(\"主题：测试简单邮件\");\n    simple.setContent(\"内容：测试简单邮件\");\n    simple.setTos(Collections.singletonList(\"237497819@qq.com\"));\n    emailMessageSender.send(simple);\n}\n```\n\n#### 2. 复杂邮件\n\n```java\n/**\n * 测试复杂邮件\n */\n@Test\npublic void testMimeEmail() throws URISyntaxException {\n    EmailMessage mime = EmailMessage.mimeEmail();\n    mime.setFrom(\"xkcoding\");\n    mime.setSubject(\"主题：测试复杂邮件\");\n    // 设置模板\n    mime.setTemplate(\"test\");\n    // 设置参数\n    Map\u003cString, Object\u003e params = new HashMap\u003c\u003e();\n    params.put(\"project\", \"Spring Boot Demo\");\n    params.put(\"author\", \"Yangkai.Shen\");\n    params.put(\"url\", \"https://github.com/xkcoding/spring-boot-demo\");\n    mime.setParams(params);\n\n    Resource resource = ResourceUtil.getResourceObj(\"static/xkcoding.png\");\n    // 设置附件\n    EmailAttachment attachment = new EmailAttachment(resource.getName(), new File(resource.getUrl().toURI()));\n    mime.setAttachments(Collections.singletonList(attachment));\n\n    // 设置静态资源\n    EmailStaticResource staticResource = new EmailStaticResource(\"xkcoding\", new File(resource.getUrl().toURI()));\n    mime.setStaticResources(Collections.singletonList(staticResource));\n\n    mime.setTos(Collections.singletonList(\"237497819@qq.com\"));\n    emailMessageSender.send(mime);\n}\n```\n\n### 短信\n\n\u003e 示例代码：https://github.com/xkcoding/magic-starter-message-demo/blob/master/src/test/java/com/xkcoding/magicstartermessagedemo/SmsMessageSenderTests.java\n\n#### 0. 配置\n\n```yaml\nmagic:\n  message:\n    sms:\n      enabled: true\n      access-key: 填写自己的 key\n      secret-key: 填写自己的 secret\n      channels:\n        填写自己的模板名称: 填写自己的模板CODE\n```\n\n#### 1. 短信\n\n```java\n/**\n * 测试短信\n */\n@Test\npublic void testSms() {\n    SmsMessage sms = new SmsMessage();\n    sms.setMobile(\"17326075631\");\n\n    // 短信模板：尊敬的读者，代码日记发布文章《${article}》，欢迎阅读！\n    Map\u003cString, String\u003e map = new HashMap\u003c\u003e();\n    map.put(\"article\", \"测试短信发送\");\n    sms.setParams(map);\n    sms.setOutId(sms.getMobile());\n\n    sms.setSignName(\"代码日记\");\n    sms.setTemplateCode(\"article_notification\");\n    smsMessageSender.send(sms);\n}\n```\n\n### 钉钉\n\n\u003e 示例代码：https://github.com/xkcoding/magic-starter-message-demo/blob/master/src/test/java/com/xkcoding/magicstartermessagedemo/DingTalkMessageSenderTests.java\n\n#### 0. 配置\n\n```yaml\nmagic:\n  message:\n    dingtalk:\n      enabled: true\n      webhook: 填写自己的钉钉机器人的 webhook 地址\n```\n\n#### 1. text 消息\n\n```java\n/**\n * 测试 text 消息\n */\n@Test\npublic void testText() {\n    TextDingTalkMessage textMsg = new TextDingTalkMessage();\n    textMsg.setText(new Text(\"测试钉钉文本消息\"));\n    // 测试 @all\n    textMsg.setAt(new Attention(Collections.singletonList(\"17326075631\"), true));\n    dingTalkMessageSender.send(textMsg);\n}\n```\n\n#### 2. link 消息\n\n```java\n/**\n * 测试 link 消息\n */\n@Test\npublic void testLink() {\n    LinkDingTalkMessage linkMsg = new LinkDingTalkMessage();\n    Link link = new Link();\n    link.setTitle(\"测试钉钉超链接消息：spring-boot-demo\");\n    link.setText(\"spring boot demo 是一个用来深度学习并实战 spring boot 的项目，目前总共包含 63 个集成demo，已经完成 52 个。\");\n    link.setMessageUrl(\"https://github.com/xkcoding/spring-boot-demo\");\n    link.setPicUrl(\"https://camo.githubusercontent.com/14758c0377ca916afc6f8624f6299bcdd68667a8/68747470733a2f2f7374617263686172742e63632f786b636f64696e672f737072696e672d626f6f742d64656d6f2e737667\");\n    linkMsg.setLink(link);\n    dingTalkMessageSender.send(linkMsg);\n}\n```\n\n#### 3. markdown 消息\n\n```java\n/**\n * 测试 markdown 消息\n */\n@Test\npublic void testMarkdown() {\n    MarkdownDingTalkMessage markdownMsg = new MarkdownDingTalkMessage();\n    Markdown markdown = new Markdown();\n    markdown.setTitle(\"测试钉钉markdown消息\");\n    markdown.setText(\"# 测试钉钉markdown消息：magic-starter-message\\n\" + \"\\n\" + \"## 简介\\n\" + \"\\n\" + \"`magic-starter-message` 主要是对一些常用的发送消息通知的封装，包括钉钉机器人、各类邮件、阿里大鱼、微信等。\\n\" + \"\\n\" + \"## 模块地址\\n\" + \"\\n\" + \"[magic-starter-message](https://github.com/xkcoding/magic-starter/magic-starter-message)\");\n    markdownMsg.setMarkdown(markdown);\n    // 测试 @17326075631\n    markdownMsg.setAt(new Attention(Collections.singletonList(\"17326075631\"), false));\n    dingTalkMessageSender.send(markdownMsg);\n}\n```\n\n#### 4. actioncard 整体跳转\n\n```java\n/**\n * 测试 整体跳转ActionCard 消息\n */\n@Test\npublic void testActionCardWhole() {\n    ActionCardWholeDingTalkMessage wholeMsg = new ActionCardWholeDingTalkMessage();\n    ActionCardWhole actionCardWhole = new ActionCardWhole();\n\n    actionCardWhole.setTitle(\"测试整体跳转消息\");\n    actionCardWhole.setText(\"# 测试整体跳转消息：GitHub Actions 初体验\\n\" + \"\\n\" + \"## 前言\\n\" + \"\\n\" + \"前段时间同性交友网站 `GitHub` 推出了自家的 `Registry` 服务，支持多种语言的镜像服务，具体参见：https://help.github.com/en/articles/about-github-package-registry\\n\" + \"\\n\" + \"随后，又推出了自家的自动化构建服务：`Github Actions`，具体参见：https://help.github.com/en/articles/about-github-actions\\n\" + \"\\n\" + \"这俩服务我都在第一时间申请使用了，也都已经审核通过了，但是由于 `Registry` 测试有些不稳定，还存在一些问题，所以，并未发布体验文章，不过 关于`GitHub Actions` 我已经成功体验了一把。\\n\");\n    actionCardWhole.setHideAvatar(\"0\");\n    actionCardWhole.setBtnOrientation(\"0\");\n    actionCardWhole.setSingleTitle(\"点我学习\");\n    actionCardWhole.setSingleURL(\"https://xkcoding.com/2019/08/29/early-experience-about-github-actions.html\");\n\n    wholeMsg.setActionCard(actionCardWhole);\n    dingTalkMessageSender.send(wholeMsg);\n}\n```\n\n#### 5. actioncard 独立跳转\n\n```java\n/**\n * 测试 独立跳转ActionCard 消息\n */\n@Test\npublic void testActionCardSingle() {\n    ActionCardSingleDingTalkMessage singleMsg = new ActionCardSingleDingTalkMessage();\n    ActionCardSingle actionCardSingle = new ActionCardSingle();\n    actionCardSingle.setTitle(\"测试独立跳转消息\");\n    actionCardSingle.setText(\"# 测试独立跳转消息：重要提示\\n\" + \"\\n\" + \"\u003e 本群已与多加搜索引擎合作，遇到问题先去合作平台咨询！\");\n    actionCardSingle.setBtnOrientation(\"0\");\n    actionCardSingle.setHideAvatar(\"0\");\n\n    List\u003cButton\u003e buttons = new ArrayList\u003c\u003e();\n    buttons.add(new Button(\"百度咨询一下\", \"https://www.baidu.com/\"));\n    buttons.add(new Button(\"谷歌翻墙一下\", \"https://www.google.com/\"));\n    buttons.add(new Button(\"是在不行，你就 360 一下\", \"https://www.so.com/?src=360portal\u0026ls=\"));\n\n    actionCardSingle.setBtns(buttons);\n    singleMsg.setActionCard(actionCardSingle);\n    dingTalkMessageSender.send(singleMsg);\n}\n```\n\n#### 6. feedcard 列表\n\n```java\n/**\n * 测试 FeedCard 消息\n */\n@Test\npublic void testFeedCard() {\n    FeedCardDingTalkMessage feedMsg = new FeedCardDingTalkMessage();\n    FeedCard feedCard = new FeedCard();\n    List\u003cFeedCardLink\u003e feedCardLinks = new ArrayList\u003c\u003e();\n    feedCardLinks.add(new FeedCardLink(\"设计模式之行为型设计模式 - 策略模式\", \"https://xkcoding.com/2019/09/03/design-pattern-strategy.html\", \"https://static.xkcoding.com/blog/2019-08-28-strategy-uml.png\"));\n    feedCardLinks.add(new FeedCardLink(\"设计模式之结构型设计模式 - 适配器模式\", \"https://xkcoding.com/2019/09/13/design-pattern-adapter.html\", \"https://static.xkcoding.com/blog/2019-09-29-design-pattern-adapter-uml.png\"));\n    feedCardLinks.add(new FeedCardLink(\"设计模式之行为型设计模式 - 委派模式\", \"https://xkcoding.com/2019/08/27/design-pattern-delegate.html\", \"https://static.xkcoding.com/blog/2019-08-28-delegate-uml.png\"));\n    feedCardLinks.add(new FeedCardLink(\"设计模式之结构型设计模式 - 代理模式\", \"https://xkcoding.com/2019/08/20/design-pattern-proxy.html\", \"https://static.xkcoding.com/blog/2019-08-21-proxy-dynamicproxy-cglib-uml.png\"));\n    feedCard.setLinks(feedCardLinks);\n    feedMsg.setFeedCard(feedCard);\n    dingTalkMessageSender.send(feedMsg);\n}\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxkcoding%2Fmagic-starter-message-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxkcoding%2Fmagic-starter-message-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxkcoding%2Fmagic-starter-message-demo/lists"}