PHP port of charmbracelet/pop — send emails from PHP via Resend API or direct SMTP.
- Dual transport — send via Resend HTTP API or raw SMTP
- Email value object — from, to, cc, bcc, subject, body, HTML body, reply-to, attachments
- File attachments — attach files from paths or raw content with MIME detection
- Inline attachments — embed images inline (CID references)
- CC/BCC support — full carbon-copy / blind carbon-copy routing
- STDIN compose — read email body from STDIN for shell pipeline use
- Environment config —
RESEND_API_KEY,POP_SMTP_*,POP_FROM,POP_SIGNATURE - PHP 8.1+ — pure PHP, no extensions required beyond cURL (for Resend transport)
composer require sugarcraft/sugar-postuse SugarCraft\Post\{Email, Mailer, ResendTransport};
$transport = new ResendTransport('re_xxxxxxxxxxxxx');
$mailer = new Mailer($transport);
$email = new Email(
from: 'you@example.com',
to: ['them@example.com'],
subject: 'Hello from SugarPost',
body: 'Sent via the Resend API.',
);
$mailer->send($email);use SugarCraft\Post\{Email, Mailer, SmtpTransport};
$transport = new SmtpTransport('smtp.gmail.com', 587, 'username', 'password');
$mailer = new Mailer($transport);
$mailer->send(new Email(
from: 'you@gmail.com',
to: ['them@gmail.com'],
subject: 'Hello via SMTP',
body: 'Sent directly via SMTP.',
));$email = new Email(/* ... */);
$email = $email->withAttachment('invoice.pdf', '/path/to/invoice.pdf');
$mailer->send($email);pop --from "me@example.com" --to "you@example.com" --subject "Hello"
# Body read from STDINEnvironment variables:
export RESEND_API_KEY=re_xxxxx # Resend API key
export POP_SMTP_HOST=smtp.gmail.com # SMTP host
export POP_SMTP_PORT=587 # SMTP port (default: 587)
export POP_SMTP_USERNAME=user # SMTP username
export POP_SMTP_PASSWORD=pass # SMTP password
export POP_FROM=me@example.com # Pre-fill From address
export POP_SIGNATURE="Sent with SugarPost" # Appended to bodyEmail— immutable email message value objectAttachment— immutable file attachment (path or inline content)Transport— interface for sending implementationsResendTransport— sends via Resend REST API (HTTPS)SmtpTransport— sends via direct SMTP (TCP/TLS)Mailer— high-level API wrapping a Transport