diff --git a/docs/digging-deeper/mail.mdx b/docs/digging-deeper/mail.mdx index e66b0875..ce703396 100644 --- a/docs/digging-deeper/mail.mdx +++ b/docs/digging-deeper/mail.mdx @@ -11,10 +11,10 @@ See how to send emails in Athenna. ## Introduction Sending email doesn't have to be complicated. Athenna provides a -clean, simple email API powered by the popular [nodemailer] package. -Right now Athenna provide drivers for sending email via SMTP, only -but in the future we will add support for Mailgun, Mailtrap, -Amazon SES, and sendmail. +clean, simple email API powered by the popular [nodemailer](https://nodemailer.com/) +package. Right now Athenna provide drivers for sending email via +SMTP only, but in the future we will add support for Mailgun, +Mailtrap, Amazon SES, and sendmail. ## Installation @@ -75,7 +75,7 @@ import { Mail } from '@athenna/mail' await Mail.from('support@athenna.io') .to('user@gmail.com') - .text('Mail content') + .content('

Mail content

') .send() ``` @@ -87,7 +87,7 @@ await Mail.from('support@athenna.io') .to('user@gmail.com') .cc('txsoura@athenna.io') .bcc('support@athenna.io') - .text('Mail content') + .content('

Mail content

') .send() ``` @@ -99,33 +99,33 @@ file. However, you may use the `mailer()` method to send a message using a specific mailer configuration: ```typescript -await Mail.mailer('my-mailer') +await Mail.mailer('my-mailer') 👈 .from('support@athenna.io') .to('lenon@athenna.io') - .text('Mail content') + .content('Mail content') .send() ``` -### Sending HTML and Markdown as content +### Sending Text and Markdown as content -To send HTML as the content of the mail, you can use the `html()` -method: +To send text as the content of the mail, you can set the +`type` property in second argument: ```typescript await Mail.mailer('my-mailer') .from('support@athenna.io') .to('lenon@athenna.io') - .html('

Mail content

') + .content('Mail content', { type: 'text' }) 👈 .send() ``` -And for markdowns you can use the `markdown()` method: +And for markdowns you can use the `markdown` type: ```typescript await Mail.mailer('my-mailer') .from('support@athenna.io') .to('lenon@athenna.io') - .markdown('# Mail content') + .content('# Mail content', { type: 'markdown' }) 👈 .send() ``` @@ -140,29 +140,37 @@ const userEmail = 'lenon@athenna.io' await Mail.from('support@athenna.io') .to(userEmail) - .view('mail/welcome', { email: userEmail }) + .cc('mailer1@athenna.io, mailer2@athenna.io') + .bcc('mailer3@athenna.io, mailer4@athenna.io') + .content('This is the mail body') + .view('mail/welcome', { email: userEmail }) 👈 .send() ``` +Any data that you provide using the `Mail` facade will be +available to you in your view: + +```html title="Path.views('mail/welcome.edge')" + +

{{ to }}

+

{{ cc }}

+

{{ bcc }}

+

{{ from }}

+

{{ content }}

+ + +

{{ email }}

+``` + ### Previewing mail templates in the browser When designing a mailable's template, it is convenient to quickly preview the rendered mailable in your browser like a typical Edge template. For this reason, Athenna allows you to return any -mailable directly from a route closure or controller by using the -`response.view()` method, allowing you to quickly preview its -design without needing to send it to an actual email address: +mailable directly from a route using the `Route.view()` method, +allowing you to quickly preview its design without needing to +send it to an actual email address: ```typescript title="Path.routes('http.ts')" -Route.get('/mailable', ({ response }) => { - return response.view('mail.welcome', { email: 'lenon@athenna.io' }) -}) +Route.view('/mailable', 'mail.welcome', { email: 'lenon@athenna.io' }) ``` - - - - - - - -