Skip to content

clinsbb1/rsvp-mailer

Repository files navigation

Laravel Event Invite Sender

License: MIT

A Laravel-based application for sending personalized event invitations in safe, throttled batches via SMTP (e.g., ZeptoMail, SendGrid, Mailgun).

Ideal for events requiring unique RSVP links or QR codes per guest, while avoiding spam filters through controlled sending.


✨ Features

  • Throttled batch email sending to prevent spam flags
  • Fully personalized email content for each guest
  • Unique QR code or RSVP image attached per recipient
  • Supports any SMTP provider (ZeptoMail, SendGrid, Mailgun, Gmail, etc.)
  • Artisan command for easy, controlled execution
  • Database tracking of sent status (sent, sent_at)
  • Clean, extensible Laravel structure

🛠 Tech Stack

  • Laravel 10+ (recommended)
  • PHP 8.1+
  • SMTP provider of your choice
  • MySQL or PostgreSQL

📂 Key Project Files

app/
├── Console/Commands/SendRsvpInvites.php
├── Mail/RsvpInvitation.php
└── Models/RsvpGuest.php

resources/views/emails/rsvp.blade.php

storage/app/rsvp-images/

⚙️ Installation

  1. Create a new Laravel project (or integrate into an existing one):

    composer create-project laravel/laravel event-invite-sender
    cd event-invite-sender
  2. Copy or clone the project files (commands, mailables, models, views, etc.) into your app.

  3. Install dependencies:

    composer install

🔑 Environment Configuration

Update your .env file with your SMTP settings:

MAIL_MAILER=smtp
MAIL_HOST=smtp.yourprovider.com
MAIL_PORT=587
MAIL_USERNAME=your-email@example.com
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@yourdomain.com
MAIL_FROM_NAME="Event Organizer"

Tip: Use a transactional email service like ZeptoMail or SendGrid for better deliverability.


🗄️ Database Setup

  1. Create and run migrations:

    php artisan migrate
  2. Example structure for the rsvp_guests table:

    Column Type Description
    id bigint Primary key
    full_name string Guest's full name
    email string Guest's email address
    rsvp_image string Filename of QR/RSVP image (e.g., 12.png)
    sent boolean Whether email has been sent (default: false)
    sent_at timestamp Timestamp when email was sent (nullable)
    created_at timestamp
    updated_at timestamp

Populate the table with your guest data.


📤 Sending Invitations

Use the Artisan command to send emails in controlled batches:

php artisan rsvp:send --limit=25
  • Sends up to 25 emails per execution
  • Includes delays between sends for throttling
  • Updates database records (sent = true, sent_at = now())

Recommendation: Schedule via cron every 30–60 minutes, depending on your SMTP provider's rate limits.

Cron Job Example

*/30 * * * * cd /path/to/your/project && php artisan rsvp:send --limit=25 >> /dev/null 2>&1

📎 RSVP / QR Images

Place unique images in:

storage/app/rsvp-images/

Example filenames: 1.png, 2.png, 3.png, ...

Each rsvp_guests record should reference its corresponding filename in the rsvp_image column.

The images are attached to individual emails.


🚨 Important Notes

  • Never use CC or BCC for multiple recipients
  • Always respect throttling to avoid spam complaints
  • Verify your sender domain with SPF, DKIM, and DMARC
  • Use production-grade SMTP credentials
  • Test deliverability with a small batch first

🚀 Possible Extensions

  • Embed QR codes inline (instead of attachments)
  • CSV import for bulk guest addition
  • Retry logic for failed deliveries
  • Tracking for opens/clicks
  • Queue-based sending with Laravel Horizon

Feel free to contribute or extend!


🧠 Ideal Use Case

This project is ideal for:

  • Weddings
  • Birthdays
  • Corporate events
  • Private parties
  • Invitation-only gatherings

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A Laravel-based batch email sender for personalised event invitations with QR code attachments, SMTP support, and spam-safe throttling.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages