ソース情報
- リポジトリ
- AIDotNet/MoYuCode
- ソースの最終更新活動
- 2026年1月27日 15:34
- 検出された SKILL.md の言語
- 判定不能
- スター
- 84
- フォーク
- 17
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/AIDotNet/MoYuCode --skill nodemailerコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SOC 職業分類に基づく
SKILL.md を表示中
| name | nodemailer |
| description | 从Node.js应用发送邮件。最流行的邮件发送模块,支持SMTP、OAuth2、附件和HTML模板。 |
| metadata | {"short-description":"Node.js邮件发送"} |
| source | {"repository":"https://github.com/nodemailer/nodemailer","license":"MIT","stars":"17k+"} |
Send emails from Node.js with SMTP, OAuth2, attachments, and HTML templates.
npm install nodemailer
import nodemailer from 'nodemailer';
const transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 587,
secure: false,
auth: {
user: process.env.EMAIL_USER,
pass: process.env.EMAIL_PASS,
},
});
async function sendEmail() {
const info = await transporter.sendMail({
from: '"My App" <noreply@myapp.com>',
to: 'user@example.com',
subject: 'Welcome to My App',
text: 'Hello, welcome to our platform!',
html: '<h1>Hello</h1><p>Welcome to our platform!</p>',
});
console.log('Message sent:', info.messageId);
}
async function sendWelcomeEmail(user: { name: string; email: string }) {
const html = `
<!DOCTYPE html>
<html>
<head>
<style>
.container { max-width: 600px; margin: 0 auto; font-family: Arial; }
.header { background: #4F46E5; color: white; padding: 20px; }
.content { padding: 20px; }
.button { background: #4F46E5; color: white; padding: 12px 24px;
text-decoration: none; border-radius: 4px; }
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>Welcome, ${user.name}!</h1>
</div>
<div class="content">
<p>Thank you for joining our platform.</p>
<a href="https://myapp.com/dashboard" class="button">Get Started</a>
</div>
</div>
</body>
</html>
`;
await transporter.sendMail({
from: '"My App" <noreply@myapp.com>',
to: user.email,
subject: `Welcome, ${user.name}!`,
html,
});
}
async function sendEmailWithAttachment() {
await transporter.sendMail({
from: '"Reports" <reports@myapp.com>',
to: 'manager@company.com',
subject: 'Monthly Report',
text: 'Please find the monthly report attached.',
attachments: [
{
filename: 'report.pdf',
path: './reports/monthly-report.pdf',
},
{
filename: 'data.xlsx',
content: Buffer.from('...'), // Buffer content
},
{
filename: 'logo.png',
path: './assets/logo.png',
cid: 'logo@myapp', // For embedding in HTML
},
],
html: '<img src="cid:logo@myapp" /><p>See attached report.</p>',
});
}
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
type: 'OAuth2',
user: process.env.GMAIL_USER,
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
refreshToken: process.env.GOOGLE_REFRESH_TOKEN,
},
});
class EmailQueue {
private queue: Array<() => Promise<void>> = [];
private processing = false;
async add(emailFn: () => Promise<void>) {
this.queue.push(emailFn);
this.process();
}
private async process() {
if (this.processing) return;
this.processing = true;
while (this.queue.length > 0) {
const emailFn = this.queue.shift()!;
await emailFn();
await new Promise(r => setTimeout(r, 1000)); // Rate limit
}
this.processing = ;
}
}
email, smtp, notification, communication, automation