Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build and send HTML email templates using React Email components. Use when creating welcome emails, password resets, notifications, order confirmations, or any transactional email template. Works with Resend (already integrated in Talent Architect via lib/server/integrations).
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 36% | 0% |
React bileşenleriyle HTML email şablonları oluşturma ve Resend ile gönderme rehberi.
Talent Architect Notu: Proje Resend SDK'yı zaten kullanıyor (resend: ^6.9.3). Email gönderimi lib/server/integrations/ altındaki servis katmanı üzerinden geçmeli.
bashnpx create-email@latest cd react-email-starter npm install npm run dev
Mevcut projeye eklemek için package.json'a:
json{ "scripts": { "email": "email dev --dir emails --port 3000" } }
tsximport { Html, Head, Preview, Body, Container, Heading, Text, Button, Tailwind, pixelBasedPreset, } from '@react-email/components' interface WelcomeEmailProps { name: string verificationUrl: string } export default function WelcomeEmail({ name, verificationUrl }: WelcomeEmailProps) { return ( <Html lang='tr'> <Tailwind config={{ presets: [pixelBasedPreset] }}> <Head /> <Preview>Talent Architect — Email adresinizi doğrulayın</Preview> <Body className='bg-gray-100 font-sans'> <Container className='max-w-xl mx-auto p-5 bg-white'> <Heading className='text-2xl text-gray-800'>Hoş geldiniz, {name}!</Heading> <Text className='text-base text-gray-700'>Hesabınızı aktifleştirmek için aşağıdaki butona tıklayın.</Text> <Button href={verificationUrl} className='bg-blue-600 text-white px-5 py-3 rounded block text-center no-underline box-border' > Email Adresimi Doğrula </Button> </Container> </Body> </Tailwind> </Html> ) } WelcomeEmail.PreviewProps = { name: 'Zafer', verificationUrl: 'https://talent-architect.com/verify/abc123 ', } satisfies WelcomeEmailProps
| Component | Amaç | | ---------------- | ----------------------------------------------- | | Html | Root wrapper (lang attribute ile) | | Head | Meta, stiller | | Body | Ana içerik sarmalayıcı | | Container | İçeriği ortalar (max-width) | | Preview | Gelen kutusunda preview metni — Body'den önce | | Heading | h1–h6 başlıklar | | Text | Paragraflar | | Button | Link buton — box-border zorunlu | | Link | Hyperlink | | Img | Resim — absolute URL zorunlu | | Hr | Yatay bölücü — border-solid zorunlu | | Row + Column | Çok sütunlu layout | | Section | Layout bölümleri | | Tailwind | Tailwind CSS'i aktif eder |
| Component | Zorunlu Class | Neden | | ------------------ | ----------------------------------- | ------------------------------ | | Button | box-border | Padding overflow önler | | Hr / border | border-solid | Email client'lar inherit etmez | | Tek taraflı border | border-none border-t border-solid | Diğer kenarları sıfırla |
Row/Column kullansm:, md:) kullanma — desteklenmezdark:) kullanma — desteklenmeztsxconst baseURL = process.env.NODE_ENV === 'production' ? 'https://cdn.talent-architect.com ' : '' <Img src={`${baseURL}/static/logo.png`} alt='Talent Architect' width='150' height='50' />
typescriptimport { Resend } from 'resend' import { WelcomeEmail } from '@/emails/welcome' const resend = new Resend(process.env.RESEND_API_KEY) const { data, error } = await resend.emails.send({ from: 'Talent Architect <noreply@talent-architect.com>', to: [user.email], subject: 'Email adresinizi doğrulayın', react: <WelcomeEmail name={user.name} verificationUrl={verificationUrl} /> }) if (error) { console.error('Email gönderilemedi:', error) }
Talent Architect entegrasyonu: Bu kodu doğrudan route handler'a yazmak yerine lib/server/integrations/ altına taşı.
tsximport { createTranslator } from 'next-intl' interface EmailProps { name: string locale: 'tr' | 'en' } export default async function WelcomeEmail({ name, locale }: EmailProps) { const t = createTranslator({ messages: await import(`../messages/${locale}.json`), namespace: 'welcome-email', locale, }) return ( <Html lang={locale}> <Body> <Text> {t('greeting')} {name}, </Text> <Button href='...'>{t('cta')}</Button> </Body> </Html> ) }
typescriptimport { render } from '@react-email/components' import { WelcomeEmail } from './emails/welcome' const html = await render(<WelcomeEmail name='Zafer' verificationUrl='...' />) const text = await render(<WelcomeEmail name='Zafer' verificationUrl='...' />, { plainText: true })
emails/
welcome.tsx
password-reset.tsx
static/
logo.png ← PNG/JPG (SVG/WEBP değil)
banner.jpgPreviewProps tanımla — geliştirme testi içinplainText versiyonu her zaman oluştur — accessibility ve bazı email client'lar{{variableName}} pattern'ını template içine yazma — TypeScript prop olarak geçlang attribute her zaman Html component'inde olmalı| Email Türü | Tetikleyici | Template | | -------------------- | ----------------- | -------------------------- | | Email doğrulama | Kayıt | verify-email.tsx | | Şifre sıfırlama | Şifre sıfırla | password-reset.tsx | | Subscription onay | Ödeme başarılı | subscription-confirm.tsx | | CV analiz tamamlandı | ATS analizi bitti | analysis-complete.tsx | | Hesap uyarısı | Güvenlik olayı | security-alert.tsx |
Other measured skills in the registry, with their headline benchmark lift.