{"id":33203228,"url":"https://github.com/Snowfire/Beautymail","last_synced_at":"2025-11-16T14:00:33.298Z","repository":{"id":19091985,"uuid":"22319880","full_name":"snowfire/Beautymail","owner":"snowfire","description":"Send beautiful HTML emails with Laravel","archived":false,"fork":false,"pushed_at":"2025-03-06T13:25:04.000Z","size":228,"stargazers_count":1296,"open_issues_count":0,"forks_count":210,"subscribers_count":31,"default_branch":"master","last_synced_at":"2025-05-30T12:18:05.754Z","etag":null,"topics":["beautiful-html-emails","email","laravel"],"latest_commit_sha":null,"homepage":null,"language":"Blade","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/snowfire.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":"2014-07-27T19:31:12.000Z","updated_at":"2025-05-27T16:04:12.000Z","dependencies_parsed_at":"2024-06-18T12:31:20.585Z","dependency_job_id":"e84c54ed-8173-4b61-baa6-9abbd579ff28","html_url":"https://github.com/snowfire/Beautymail","commit_stats":{"total_commits":82,"total_committers":33,"mean_commits":2.484848484848485,"dds":0.4878048780487805,"last_synced_commit":"89caa194fe857bb343338d20df6145dccfa8aa35"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/snowfire/Beautymail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowfire%2FBeautymail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowfire%2FBeautymail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowfire%2FBeautymail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowfire%2FBeautymail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snowfire","download_url":"https://codeload.github.com/snowfire/Beautymail/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snowfire%2FBeautymail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284719042,"owners_count":27052182,"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","status":"online","status_checked_at":"2025-11-16T02:00:05.974Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["beautiful-html-emails","email","laravel"],"created_at":"2025-11-16T09:00:32.856Z","updated_at":"2025-11-16T14:00:33.291Z","avatar_url":"https://github.com/snowfire.png","language":"Blade","funding_links":[],"categories":["Packages","邮件( Email )"],"sub_categories":["Helpers/General"],"readme":"# Beautymail for Laravel\n\nBeautymail makes it super easy to send beautiful responsive HTML emails. It's made for things like:\n\n* Welcome emails\n* Password reminders\n* Invoices\n* Data exports\n\n### Index:\n\n- [Templates](#templates)\n- [Installation](#installation)\n- [Send your first Beauty mail](#send-your-first-beauty-mail)\n- [Options](#options)\n- [Lumen support](#lumen-support)\n\n## Templates\n\nThere are tons of great looking HTML email templates out there. Campaign Monitor and Mailchimp has released hundreds for free. It is pretty simple to adapt a template to Beautymail.\n\n__Widgets__ by [Campaign Monitor](https://www.campaignmonitor.com/templates/all/):\n\n![Widget Template](screenshots/widgets.png?raw=true \"Widgets template\")\n\n__Minty__ by __Stamplia__:\n\n![Widget Template](screenshots/minty.png?raw=true \"Widgets template\")\n\n__Sunny__\n\n![Widget Template](screenshots/sunny.png?raw=true \"Sunny template\")\n\n## Installation\n\nAdd the package to your `composer.json` by running:\n\n```bash\ncomposer require snowfire/beautymail\n```\n    \nConfigure your settings such as logo url and social links in `config/beautymail.php`\n\n## Send your first Beauty mail\n\nAdd this to your `routes/web.php`\n\n```php\nRoute::get('/test', function()\n{\n\t$beautymail = app()-\u003emake(Snowfire\\Beautymail\\Beautymail::class);\n\t$beautymail-\u003esend('emails.welcome', [], function($message)\n\t{\n\t\t$message\n\t\t\t-\u003efrom('bar@example.com')\n\t\t\t-\u003eto('foo@example.com', 'John Smith')\n\t\t\t-\u003esubject('Welcome!');\n\t});\n\n});\n```\n\nNow create `resources/views/emails/welcome.blade.php`\n\n```html\n@extends('beautymail::templates.widgets')\n\n@section('content')\n\n\t@include('beautymail::templates.widgets.articleStart')\n\n\t\t\u003ch4 class=\"secondary\"\u003e\u003cstrong\u003eHello World\u003c/strong\u003e\u003c/h4\u003e\n\t\t\u003cp\u003eThis is a test\u003c/p\u003e\n\n\t@include('beautymail::templates.widgets.articleEnd')\n\n\n\t@include('beautymail::templates.widgets.newfeatureStart')\n\n\t\t\u003ch4 class=\"secondary\"\u003e\u003cstrong\u003eHello World again\u003c/strong\u003e\u003c/h4\u003e\n\t\t\u003cp\u003eThis is another test\u003c/p\u003e\n\n\t@include('beautymail::templates.widgets.newfeatureEnd')\n\n@stop\n```\n\nThat's it!\n\n## Options\n\n### _Template:_ Widgets\n\nTo change colours for the different segments, pass a colour variable:\n\n```php\n@include('beautymail::templates.widgets.articleStart', ['color' =\u003e '#0000FF'])\n```\n\n#### Minty template example\n\n```html\n@extends('beautymail::templates.minty')\n\n@section('content')\n\n\t@include('beautymail::templates.minty.contentStart')\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd class=\"title\"\u003e\n\t\t\t\tWelcome Steve\n\t\t\t\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd width=\"100%\" height=\"10\"\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd class=\"paragraph\"\u003e\n\t\t\t\tThis is a paragraph text\n\t\t\t\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd width=\"100%\" height=\"25\"\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd class=\"title\"\u003e\n\t\t\t\tThis is a heading\n\t\t\t\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd width=\"100%\" height=\"10\"\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd class=\"paragraph\"\u003e\n\t\t\t\tMore paragraph text.\n\t\t\t\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd width=\"100%\" height=\"25\"\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd\u003e\n\t\t\t\t@include('beautymail::templates.minty.button', ['text' =\u003e 'Sign in', 'link' =\u003e '#'])\n\t\t\t\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t\t\u003ctr\u003e\n\t\t\t\u003ctd width=\"100%\" height=\"25\"\u003e\u003c/td\u003e\n\t\t\u003c/tr\u003e\n\t@include('beautymail::templates.minty.contentEnd')\n\n@stop\n```\n\n### Ark template example\n\n```html\n@extends('beautymail::templates.ark')\n\n@section('content')\n\n    @include('beautymail::templates.ark.heading', [\n\t\t'heading' =\u003e 'Hello World!',\n\t\t'level' =\u003e 'h1'\n\t])\n\n    @include('beautymail::templates.ark.contentStart')\n\n        \u003ch4 class=\"secondary\"\u003e\u003cstrong\u003eHello World\u003c/strong\u003e\u003c/h4\u003e\n        \u003cp\u003eThis is a test\u003c/p\u003e\n\n    @include('beautymail::templates.ark.contentEnd')\n\n    @include('beautymail::templates.ark.heading', [\n\t\t'heading' =\u003e 'Another headline',\n\t\t'level' =\u003e 'h2'\n\t])\n\n    @include('beautymail::templates.ark.contentStart')\n\n        \u003ch4 class=\"secondary\"\u003e\u003cstrong\u003eHello World again\u003c/strong\u003e\u003c/h4\u003e\n        \u003cp\u003eThis is another test\u003c/p\u003e\n\n    @include('beautymail::templates.ark.contentEnd')\n\n@stop\n```\n\n#### Sunny template example\n\n```html\n@extends('beautymail::templates.sunny')\n\n@section('content')\n\n    @include ('beautymail::templates.sunny.heading' , [\n        'heading' =\u003e 'Hello!',\n        'level' =\u003e 'h1',\n    ])\n\n    @include('beautymail::templates.sunny.contentStart')\n\n        \u003cp\u003eToday will be a great day!\u003c/p\u003e\n\n    @include('beautymail::templates.sunny.contentEnd')\n\n    @include('beautymail::templates.sunny.button', [\n        \t'title' =\u003e 'Click me',\n        \t'link' =\u003e 'http://google.com'\n    ])\n\n@stop\n```\n\n## Lumen support\n\nIn order to get this working on Lumen follow the installation instructions except for the `artisan vendor:publish` command, since Lumen does not provide this command. Instead you have to copy the assets folder from `vendor/snowfire/beautymail/public/` to the public folder in your Lumen project manually.\n\nMake sure to also put the `beautymail.php` config file in the `config` folder (default available in `src/config/settings.php`)\n\n### Enable mailing in Lumen\n\nAfter this you will need to install and configure `illuminate/mailer` with: \n\n    composer require illuminate/mail\n   \nand add this to your `bootstrap/app.php`:\n\n    $app-\u003ewithFacades();\n    $app-\u003eregister(App\\Providers\\AppServiceProvider::class);\n\nSee [this blog post](https://medium.com/@edwardsteven/using-lumen-and-laravel-mail-with-mailgun-270415daed37) for more details and how to use different mail libraries in lumen:\n\n### Configure Beautymail classes and configuration parameters\n\nIn order to get Beautymail working on Lumen you need to add the following to your `bootstrap/app.php` in order to resolve missing config files, parameters and classes (before you register `BeautymailServiceProvider`):\n\n    // Provide required path variables\n    $app-\u003einstance('path.config', env(\"STORAGE_DIR\", app()-\u003ebasePath()) . DIRECTORY_SEPARATOR . 'config');\n    $app-\u003einstance('path.public', env(\"STORAGE_DIR\", app()-\u003ebasePath()) . DIRECTORY_SEPARATOR . 'public');\n\n    // Enable config for beautymail\n    $app-\u003econfigure('beautymail');\n    \n    // Provide class alliases to resolve Request and Config\n    class_alias(\\Illuminate\\Support\\Facades\\Request::class, \"\\Request\");\n    class_alias(\\Illuminate\\Support\\Facades\\Config::class, \"\\Config\");\n\n### Start using Beautymail\n\nCongratulations, you can know start using Beautymail in Lumen. See: [Send your first Beauty mail](#send-your-first-beauty-mail) on what to do next.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSnowfire%2FBeautymail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSnowfire%2FBeautymail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSnowfire%2FBeautymail/lists"}